对软件工程导论的认识

我个人认为软件工程很重要,但更重要的是要能够根据不同的项目在不同阶段选择合适的开发模式,规避风险,适应客户灵活多变的需求变更。所以对需求调研和需求分析提出了更高的要求。我看过了一些讨论软件工程的文章,几乎一致认为“客户直接参与的项目成功的可能性非常高”,传统的软件工程中提出的不论是“瀑布”还是“螺旋”模型都是进行阶段性的客户确认再开发,等开发完或者客户的需求变了,或者需求分析有错误,完全符合客户要求的几乎没有。所以我们是否考虑一下能否在条件允许的情况下,在以后的项目的开发中多征求客户意见,而不是在一阶段完成后再请客户看,这有利于我们降低开发大规模修改的风险。这也是“极限开发”模式中很重要的一点。当然这也不是绝对的,但这是经过证实的成功率比较高的一种方式。

在前期需求调研和需求分析都做好了之后,我们就可以做概要设计和详细设计了,我认为这部分很关键的一点是确定界面风格和关于代码复用的考虑。一个符合客户习惯的界面是最保险的方案,这里面包括客户的操作习惯和审美习惯。但对开发人员更需要注意的是代码复用,一个好的代码应该是注释详细、代码可读性强、代码复用率高的集合。而要做到代码的高复用率需要高度的抽象能力和对类的粒度的划分,对于粒度的划分应该遵循很多教材上多次提到的“高内聚,低耦合”,也就是说一个函数或方法的功能越单一越容易被组合起来复用,和其他的方法或函数或其他类的关联越少越好,这样在与之关联的对象或方法改变后不需要改动或很少改动就可以被复用。

另外“设计模式”也越来越被开发人员所重视,“设计模式”为开发人员提供了一系列其他人经过多次试验证实成功的可以放心使用的解决套路,能够按照“设计模式”的思路开发系统可以获得很好的扩展性和强壮性,这也是经过无数案例证明过的。举个简单的例子,如果将获得数据的部分和显示数据的代码混在一起,如果将来在改动显示部分或改动获得数据部分则要到混在一起的代码中去挑自己要改动的部分,这可能造成不该动的代码被改动了,或者因为一部分改动了,另一部分必须被改动,这样也带入了被迫改动代码的正确性的问题。对于这样的改动需要在测试时增大测试力度,才能保证代码是正确的,当然这是以增大测试成本为代价的。用另一种方式,使用设计模式,遵循MVC模式,将获得数据部分作为C

由于现代软件开发的复杂性和风险性不断增加,软件过程的重点不再是代码的设计和编写,需求工程、质量管理、软件进化的重要性日益突出,作者以敏锐的眼光将这些主题作为本书的讨论重点。同时作者在全书贯穿面相对象的思想,对象模型全部采用UML来描述,其“面相对象的设计”、“分布式系统体系结构”等章节则体现了软件工程与开发实践的紧密结合,反映了软件行业的主流趋势。

猜你喜欢

转载自www.cnblogs.com/chenhongbiao/p/9246345.html