随着微电子技术的进步,计算机硬件,在计算速度、存储容量、外部设备等方面都有了突飞猛进的发展,与此同时,计算机软件的研制与应用也必须跟得上硬件飞速发展的节奏。
然而在20世纪60年代,软件质量差,可靠性差,开发时间无法保证,成本巨大等一系列问题,引发了一场“软件危机”。这就迫使人们去研究一种行之有效的原理、概念、技术、方法去开发软件,即软件工程。
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。(此定义摘自百度百科“软件工程”)在大体学习了一遍之后简单画了一张导图(不足之处还望指点):
软件计划:软件计划是软件生命周期中的第一个阶段,此阶段要对项目进行可行性分析,并书写完成可行性研究报告。其目的主要就是确定要做的软件“是什么”,对软件进行顶层设计,描绘出软件架构,并对目标软件系统提出完整、准确、清晰、具体的要求。
需求分析:需求分析是介于软件计划和软件设计阶段之间的重要桥梁。一方面,需求分析以可行性研究报告为基础,从软件的角度对它们进行检查与调整;另一方面它又是软件设计、实现、测试乃至维护的重要基础。此阶段要完成的文档是软件需求说明书。
软件设计:需求分析中讨论的是系统“做什么”,软件设计就是在明白了软件做什么的基础上讨论“如何做”。按照软件生存周期划分,设计中分为概要设计和详细设计,两个阶段中分别产生概要设计说明书和详细设计说明书,当然,各种各样的设计方法(如面向数据流的结构化设计方法、面向对象的设计方法等)贯穿在这两个设计阶段中,帮助我们完成软件设计。
程序编码:前几个阶段了解了目标软件“是什么”、“做什么”、“如何做”,接下来就是“做”了,在这一阶段,要根据实际情况选择合适的编程语言,编写出的代码不仅要便于自己理解,更要便于他人在维护阶段对代码的理解。所以要在保证程序代码清晰的基础上,提高正确率,在保证正确率的基础上,才能提高速度。
软件测试:软件测试时软件开发期的最后一个阶段,也是最重要一个阶段,在这一阶段,要编写测试计划、测试分析报告等文档。在计划、分析、设计、编码阶段,人难免会犯各种各样的错误,所以,在这个阶段,要坚信错误是存在的,用合理的测试方法(黑盒、白盒等)来逐步测试并改正系统中的错误。
软件维护:软件维护是软件生命周期的最后一个阶段,也是持续周期最长、话费代价最高的一个阶段。虽然是软件投入运行之后需要进行的工作,但软件维护的工作通常会占用软件开发机构60%以上的精力。