阶段 | 基本任务 | 工作结果(主要的验收标准) |
计划阶段 | 理解工作范畴 | 产生计划任务书 |
需求分析 | 定义用户的需求 | 产生软件的需求规格说明书 |
设计阶段 | 建立软件的结构 (逻辑/模块/程式结构) | 设计说明书(总体设计+详细设计说明书) |
编码 | 编写程序 | 交付用户的程序,程序清单 |
测试 | 发现错误,排除错误 | 可以运行的程序 |
维护 | 运行和管理 | 改进的系统 |
软件:程序+数据+相关文档
软件危机的表现:
(1)产品不符合用户的实际需要
(2)软件开发生产率提高的速度远远不能满足客观需要,软件的生产率远远低于硬件生产率和计算机应用的增长,使人们不能充分利用现代计算机硬件提供的巨大潜力。
(3)软件产品的质量差。
(4)对软件开发成本和进度的估计常常不准确
(5)软件的可维护性差
(6)软件文档资料通常既不完整也不合格
(7)软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。
产生软件危机的原因:
(1)软件在写出程序代码并在计算机上试运之前,很难检验开发的正确性,而且软件开发也较难评价。软件不同于一般程序,它的一个显著特点是规模庞大。
(2)虽然软件本身独有的特点确实给开发和维护带来一些客观困难,但人们在开发和使用计算机系统的长期实践中,也确实积累和总结出了许多成功的经验。
(3)开发和管理人员只重视开发而轻视问题的定义,是软件产品无法满足用户的需求。
(4)软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。
(5)在软件的开发与维护关系问题上存在错误的概念。
软件工程过程:PDCA——Plan—Do—Check—Act
软件工程的原则:分解性,一致性,独立性,确定性。
分解:把一个复杂的问题按照它的功能分解成若干个子问题,降低我们整个系统的复杂性。(模块化,抽象)
独立性:模块的独立性,划分的每个模块的功能都比较单一,这个模块在改变的时候尽量不要影响到其他模块。(信息隐蔽,信息局部化)
一致性:标准应该一致,满足我们的需求,各个模块之间的接口也要一致。
确定性:每个模块都要有明确的标准,就是他的输入、输出、功能都是非常明确的。
软件工程项目的基本目标:
(1)付出较低的开发成本
(2)达到要求的软件功能
(3)取得较好的软件性能
(4)开发的软件易于移植
(5)需要较低的维护费用
(6)能按时完成开发工作,及时交付使用。
软件工程的原理:
(1)用分阶段的生存周期计划严格管理
(2)坚持进行阶段评审
(3)实行严格的产品控制
(4)采用现代程序设计技术(现代设计技术:结构化思想、划分模块、高内聚低耦合、单入口单出口。)
(5)结果应能清楚的审查
(6)合理安排软件开发小组的人员
(7)承认不断改进软件工程实现的必要性。
软件生存期模型:瀑布模型,原型模型,演化模型,螺旋模型