软件开发方法综述
——崔海营
软件在当今时代已经不是一个陌生的词汇,很多人认为软件的开发设计就是简单的利用编程工具将一些代码拼凑起来,使之成为可以应用的程序。其实不然,我个人认为真正的软件开发是一个是一个追求完美艺术品的过程,这个艺术品不仅要使需要他的人感到赏心悦目,而且还要拥有长久的收藏价值。相应的我们想要打造一件好的“艺术品”,就需要认识各种不同的开发方法。
1)敏捷软件开发方法
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成
和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
开发方法:极限编程XP ,Scrum , 精益软件开发动态系统开发 ,特性驱动开发 ,水晶开发;
共同特征:迭代式开发 ,增量交付 ,开发团队和用户反馈推动产品开发,持续集成,开发团队自我管理;
个人认为敏捷开发是将用户和开发团队紧紧的捆绑在一起的开发模式,需要所有软件的追求者共同参与,共同探讨;不能罔顾顾客的需求而单方面的凭借项
目经理的主观意识来进行操作。
2)面向数据结构的开发方法
Jackson方法
这一方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的程序结构图。这一方法对输入、输出数据结构明
确的中小型系统特别有效,如商业应用中的文件表格处理。该方法也可与其它方法结合,用于模块的详细设计。
Warnier方法
J.D.Warnier提出的软件开发方法与Jackson方法类似。差别有三点:一是它们使用的图形工具不同,分别使用Warnier图和Jackson图;另一个差别是
使用的伪码不同;最主要的差别是在构造程序框架时,Warnier方法仅考虑输入数据结构,而Jackson方法不仅考虑输入数据结构,而且还考虑输出数据结构。
3)PAM问题分析法
PAM方法希望能兼顾Yourdon方法、Jackson方法和自底向上的软件开发方法的优点,而避免它们的缺陷。它的基本思想是:考虑到输入、输出数据结构,指
导系统的分解,在系统分析指导下逐步综合。这一方法的具体步骤是:从输入、输出数据结构导出基本处理框;分析这些处理框之间的先后关系; 按先后关系逐
步综合处理框,直到画出整个系统的PAD图。 从上述步骤中可以看出,这一方法本质上是综合的自底向上的方法,但在逐步综合之前已进行了有目的的分解,
这个目的就是充分考虑系统的输入、输出数据结构。
4)Parnas方法
Parnas提出了信息隐蔽原则:在概要设计时列出将来可能发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。信息隐蔽技术不仅提高了软件
的可维护性,而且也避免了错误的蔓延,改善了软件的可靠性。现在信息隐蔽原则已成为软件工程学中的一条重要原则。
Parnas提出的第二条原则是在软件设计时应对可能发生的种种意外故障采取措施。软件是很脆弱的,很可能因为一个微小的错误而引发严重的事故,所以必
须加强防范。如在分配使用设备前,应该取设备状态字,检查设备是否正常。这一方法不能独立使用,只能作为其它方法的补充。
5)ICASE
系统集成方式经历了从数据交换(早期CA SE采用的集成方式:点到点的数据转换),到公共用户界面(第二代CASE:在一致的界面下调用众多不同的工具)
,再到目前的信息中心库方式。这是ICASE的主要集成方式。它不仅提供数据集成(1991年IEEE为工具互连提出了标准P1175)和控制集成(实现工具间的调
用),还提供了一组用户界面管理设施和一大批工具,如垂直工具集(支持软件生存期各阶段,保证生成信息的完备性和一致性)、水平工具集(用于不同的软
件开发方法)以及开放工具槽。ICASE的进一步发展则是与其它软件开发方法的结合,如与面向对象技术、软件重用技术结合,以及智能化的I-CASE。近几年已
出现了能实现全自动软件开发的ICASE。ICASE的最终目标是实现应用软件的全自动开发,即开发人员只要写好软件的需求规格说明书,软件开发环境就自动完
成从需求分析开始的所有的软件开发工作,自动生成供用户直接使用的软件及有关文档。
6)软件重用和组件连接