嘉兴专业的AI软件外包与定制开发、手机APP及小程序开发服务公司
联系电话: 13396739763 (微信同)
探索最新AI技术与深度解决方案 | 获取专业软件开发的经验智慧

结构化软件开发方法的创新发展的过程

根据对结构化和面向对象这两种成熟的软件开发方法的创新发展过程的研究, 总结出了软件开发方法创新发展过程的规律性—软件开发方法的创新发展过程有四个环节, 这四个环节是:

(1)找到软件开发活动中现存的某些问题;

(2)为了解决问题而进行思维观念创新;

(3)按照新的思维观念来构建软件开发方法的核心部分;

(4)按照新的思维观念来完善软件开发方法。按照这个规律, 敏捷软件开发方法和面向Agent软件开发方法处于发展中, 有待于进一步完善。

软件开发方法是软件工程理论的重要内容之一, 在软件开发方法中, 对于开发软件时“做什么”和“如何做”, 给出了明确的、详细的回答。人们在不同时期为了解决各种不同的软件开发问题, 推出了多种不同的软件开发方法, 并且每种软件开发方法还有灵活多样的表现形式。回顾软件开发历史, 我们看到, 软件开发方法在不断地创新发展, 将来还会有新的软件开发方法出现。

软件开发方法的创新发展过程有什么规律性?

值得我们进行研究。找到了这个规律性, 可以帮助人们深刻认识现有的各种软件开发方法, 更重要的是可以指导人们去创建新的软件开发方法。

结构化软件开发方法包括结构化分析方法、结构化设计方法和结构化实现方法, 其核心是结构化程序设计方法。结构化软件开发方法是在结构化程序设计方法基础上逐渐形成和完善的。在结构化程序设计方法出现之前, 软件开发活动个体化特征非常严重, 编写程序时个人随心所欲,过分追求程序编写技巧, 没有一个行之有效的、大家共同遵循的开发准则, 造成程序的可读性、清晰性、可理解性比较差, 给软件维护工作带来极大的困难。在结构化软件开发方法出现之前, 由于当时的软件比较小, 开发过程比较简单, 当时错误地认为开发软件只是编写程序, 所以那时的软件开发方法只是考虑编写程序, 软件开发方法内容极不完善, 对编写程序之外的其它软件开发阶段没有给予重视。随着软件规模的增大和复杂性的提高, 这种个体化随心所欲编写程序的现象和只重视编写程序而忽视软件开发其它环节的软件开发方法导致许多问题出现。例如, 由于过分追求程序编写技巧, 一些程序很难阅读和理解, 因此当软件出现问题时无法维护;例如, 由于不重视需求分析工作, 对用户需求了解的不全面、不细致, 开发出的软件往往与用户要求有很大差距。这些问题成为软件危机的根源之一。在结构化程序设计方法出现之前的相当长的时间里, 人们对软件开发活动和软件开发方法的认识停留在上述层面上, 形成了一种传统的思维观念, 似乎开发软件就应该那样做, 使软件危机日益严重。为了消除软件危机, 人们开始深入思考软件开发活动和软件开发方法。1968 年, Dijkstra在写给ACM杂志编辑部的信中再次建议从一切高级语言中取消goto语句, 围绕是否应该取消goto语句, 人们展开了一场激烈的争论。在这

之前, 1965年Dijkstra首次建议取消goto语句, 1966年Bohm与Jacopini证明了任何单入口单出口的没有“死循环”的程序都能由三种基本结构构造出来, 这三种基本结构是顺序结构、选择结构和循环结构。经过争论,最终人们认识到, 不是简单的是否取消goto语句的问题, 而是应该改变传统思维观念, 创建新的思维观念, 在此基础上创建新的程序设计方法。围绕goto语句争论的结果使人们形成了新的思维观念:编写程序时, 在正确地实现了软件功能的前提下, 必须将可读性、清晰性和可理解性放在首位, 必须考虑到程序的可维护性, 而不能个人随心所欲地去过分追求程序编写技巧。由于使用三种基本结构(顺序、选择、循环)组成的程序具有良好的可读性、清晰性和可理解性, 容易维护, 所以应该使用顺序、选择和循环三种基本结构来实现程序, 每个程序模块只有一个入口和出口, 复杂结构由基本结构通过组合与嵌套来实现, 采用自顶向下逐步细化技术进行设计。按照这样的新思维观念, 形成了一个新的程序设计方法———结构化程序设计方法。

1971年, IBM公司在设计纽约时报信息库管理系统时使用结构化程序设计方法, 成功完成了83000行程序的编写, 成为结构化程序设计方法成功运用的一个范例。随后, 结构化程序设计方法又在美国宇航局空间实验室飞行模拟系统的设计等许多项目中得到成功运用。1973年, Nassi和Shneiderman提出著名的盒图(N-S图), 1974年Chapin对盒图进行了扩展, 这一创新为结构化程序设计提供了一个强有力的工具,改变了使用传统流程图容易产生随意性的弊病, 使结构化程序设计方法得到完善。随后, 日立公司的二村良彦等人提出了问题分析图(PAD图), 问题分析图是结构化程序设计的又一个有效的工具, 从而进一步丰富了结构化程序设计方法。1971 年Wieth首先开发出Pascal语言, 1972年贝尔实验室的Ritchie设计出C语言, 1983年美国正式公布ANSI-Pascal和ANSI-C标准, 以Pascal语言和C语言为代表的结构化程序设计语言的出现和完善, 使结构化程序设计方法得到了更加广泛的应用。在结构化程序设计方法基础上, 人们开始从整体范围思考软件开发方法。软件生命周期理论的提出, 是人们正确认识软件开发整体性的结果。

一个软件从开始计划, 到废弃不用, 有一个完整的生命周期, 包括这样几个阶段:问题定义、可行性研究、需求分析、软件设计、编写程序、测试、维护。根据软件生命周期理论, 开发软件不仅仅是编写程序, 必须还要完成其它阶段的工作, 编写程序只是软件开发的整体过程中的一项活动, 因此开发软件时不能只重视编写程序而忽视其它软件开发活动。一个完整的软件开发方法, 应该对软件生命周期中的每个阶段的任务和目标都能给出清晰的描述。1970 年Royce首先提出瀑布模型, 瀑布模型将软件生命周期概念非常清晰地表达出来 , 它的出现, 标志着人们开始从软件开发的整体性出发来构建软件开发方法。

在结构化程序设计取得巨大成功的推动下, 以结构化程序设计方法为中心, 开始形成结构化软件开发方法。1974年, Stevens、Myers和Constantine发表文章“ StructuredAnalysis” , 提出了结构化分析和结构化设计的概念, 随后许多专家为结构化分析和结构化设计方法的形成和完善做了大量工作, 如1977年Ross和Schoman发表文章“ StructuredAnalysisforRequirementsDefinition”,如1978年Myers出版著作《CompositeStructuredDesign》, 如1978 年Yourdon和Constantine出版著作《Structured Design》, 如1979 年DeMarco出版著作《StructuredAnalysisandSystemSpecification》[ 1] , 等等, 在Yourdon、Constantine、DeMarco、Stevens、Myers等人的积极工作和倡导下, 结构化的思想被应用到软件开发的整体过程, 逐渐形成了现在大家熟知的、包括结构化分析、结构化设计和结构化实现在内的完整的结构化软件开发方法。

结构化分析方法使用数据流图和数据字典以及ER图、层次方框图、Warnier图、IPO图等工具来描述软件需求。结构化设计方法使用模块化和自顶向下逐步细化技术, 根据数据流图等结构化分析的结果来设计软件系统总体结构, 使用盒图或PAD图等工具来设计每个模块的算法和数据结构。结构化软件开发方法成为20世纪70年代和80 年代占主导地位的软件开发方法, 直到现在仍在发挥作用。它的广泛运用, 有效地遏制了软件危机的蔓延。

partners
partners
partners
partners
partners
partners
partners
partners