DSP

面向领域编程思想总结

2019-07-13 18:07发布

        面向领域编程思想,主要为了适应当今变化多端的软件开发的需求。本人已经做过门户网站(Portal)、内容管理系统(CMS)、仓储管理系统(WMS)、企业资源管理(ERP)这几个领域的系统。从这些系统中,抽离出相类似的组件。可以看出很多组件的编写有很多相似之处。从设计模式的角度上看,就是用MVC(Model-View-Control)的开发模式,去实现一个个小的功能模块。然后把一些基础框架实现或者做一次轻量级的改造。四层开发模式的思想深入业界很多年。业务层代码、数据交互层、模型层这些代码如何堆砌。        很多人喜欢从视图层开始一层一层往下写,也有人喜欢从模型层开始一层一层往上写。其实在我看来都是一样的。我们开发一个软件,其实还是应该需要按照软件工程的思路走的,先是需求分析,再是原型设计、接口设计,然后是程序编码,最后是测试。一般使用的软件开发模型是瀑布模型、迭代模型。       面向领域编程,我认为其核心思想是要和领域专家合作一起开发,这里主要是指本领域软件的使用者。先听用户的故事,然后从故事中剥离需要的主要元素。然后经过精炼,优化为软件需求说明书,然后有产品经理去分析需要用到的模块分类,层层细化,把一个大的模块再细细切分成独立的小模块。这个时候差不多就是涉及到模块与模块之间的接口衔接了。 这个其中有一个难点,就是做性能取舍、优先级的划分。这个对于项目能否如期完工至关重要啊。对于整个项目组来说不求完美,只求把基本功能先实现,作为短期目标。当然,在这个处理问题的过程中,还有很多公司喜欢用测试驱动开发的敏捷开发模式去快速实现功能,然后快速部署新的功能。毕竟,业界的流行语是早上早占领市场。没错,在很多情况下他是对的。但目前的软件应用市场的氛围是红海啊。有那么多的同质化的产品提供给客户。而且没有差异化的产品,对于有些客户来说,选择就变得简单化了,就是选择便宜的软件。但对于有些客户来说,价格因素不敏感,而对于性能、功能、扩展性要求非常苛刻,比如金融业务、电子商务业务。因为面对海量用户的并发请求。延迟的时间越短越好。那怕比竞争对手快一秒钟也是极其重要的胜出理由啊。这种客户对于你能否实现他的核心功能需求要求严格,而对于非功能性需求要求更严格。比如并发性,伸缩性等。       开发软件,需要从每个细节入手,对于遇到的棘手问题要信任团队的力量。一个有战斗力的团队,永远比牛人来的重要。现代软件工业的核心竞争力就在于团队的合作力。