目录
一、软件工程概述
二、启动阶段
三、计划阶段
四、实施阶段
五、收尾阶段
一、软件工程概述
软件危机:在计算机软件的开发和维护过程中遇到的一系列严重问题。
软件危机的产生与自身的特点有关,还与软件开发、管理的方法不正确有关。
软件危机的典型表现:
- 对软件开发的进度和成本无法控制;
- 用户对已开发完成的软件的满意度低;
- 软件质量无法保证;
- 软件开发后的维护工作很难进行;
- 软件通常没有合适的文档资料;
- 软件成本在系统成本中所占比例越来越高;
- 软件开发生产力提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
软件工程:计算机科学、工程和管理三个学科的综合。(技术和管理)
软件工程的基本目标:努力发挥开发人员的创造性潜能。
软件工程方法学的目的(实质):使软件生产规范化和标准化,控制开发工作的复杂度。
软件工程方法学得以实施的主要保证是:软件开发工具和软件开发的环境。
软件根据功能划分为:系统软件、支撑软件、应用软件。
软件工程的七大基本原理:
- 用分阶段的生命周期计划严格管理;
- 坚持进行阶段评审;
- 实行严格的产品控制;
- 采用现代的程序设计技术;
- 结果应能清楚的审查;
- 开发小组的成员应该少而精;
- 承认不断改进软件工程实践的必要性。
传统软件工程的生命周期:
- 问题定义与可行性研究;
- 需求分析;
- 软件设计(概要设计与详细设计);
- 编码;
- 测试;
- 运行与维护。
瀑布模型:
瀑布模型的特征:
- 从上一项活动中接受该活动的工作成果,作为输入;
- 利用这一输入实施该活动应完成的内容;
- 给出该活动的工作成功,作为输出传给下一项;
- 对该项活动实施的工作进行评审。若其工作得到确认,则继续下一项活动。
瀑布模型的优点:
- 强调开发的阶段性;
- 强调早期计划及需求调查;
- 强调产品测试。
瀑布模型的缺点:
- 瀑布模型过于依赖早期进行的唯一一次需求调查,不能适应需求的变化;
- 单一流程,开发中的经验教训不能反馈应用于本产品的过程。
原型化方法是用户和设计交换最频繁的方法。
软件开发过程中可能出现的问题:
- 问题定义与可行性研究:未进行问题定义和可行性研究,导致技术问题难以解决;
- 需求分析:需求分析应与客户充分沟通,并由开发人员完成,而不是由用户给出。需求分析不完整,会导致用户不断增加或修改要求而增大开发难度;
- 系统设计:模块间未做到高内聚低耦合,导致维护困难;
- 详细设计:未编写详细文档,导致维护困难;
- 编码:编码风格不好(注释少、命名不规范),导致维护困难;
- 测试:由开发人员自己进行测试,而没有交给第三方测试,造成系统的不稳定;
- 维护:没有进行评审或保存详细的文档资料,导致维护困难。
二、启动阶段
可行性研究:
- 技术可行性;
- 经济可行性;
- 操作可行性;
- 时间可行性;
- 组织与管理可行性;
- 社会与政策可行性。
需求分析:
- 系统要求:功能要求、性能要求、运行要求、其他要求。
- 数据要求:结构化程序设计以数据流为核心,结构化分析方法采用数据流图、DFD与数据字典DD描述。
数据流图的基本四种成分:
- 数据输入的源点和数据输出的汇点;
- 加工;
- 数据流;
- 数据存储文件。
三、计划阶段
系统概要设计的意义:
- 设计是软件开发中形成质量的地方;
- 设计为最终对软件评估进行质量评估提供度量依据;
- 设计是将用户的需求准确的转化为完整的软件产品的唯一方法;
- 设计是软件开发和维护的基础。
软件设计阶段分为原型设计和用例设计。
概要设计针对需求,详细设计针对实现。
为高质量的开发软件,在软件结构设计时,必须遵循模块独立性原则。
项目开发计划除去规定项目开发所占的资源,还可以包括用户培训计划。
详细设计内容:
- 算法过程设计;
- 数据结构设计;
- 数据库物理设计;
- 信息编码设计;
- 测试用例设计;
- 其他要求设计。
软件详细设计工具可分三类:图示工具、设计语言、表格工具。
结构化程序设计的基本控制结构:
系统流程图是描绘物理系统的传统工具,它的基本思想是利用图形符号以黑盒子形式描绘系统里的每个部件。
结构化系统设计是面向数据流的系统设计方法,其要解决的任务是在需求分析的基础上,将DFD(结构图)“映射”为软件系统的结构。
N_S图(盒图)
PAD图
PDL是伪码式语言。
四、实施阶段
软件测试原则:
- 所有测试的标准都是建立在用户的需求之上;
- 基于“质量第一”思想,时间服从质量;
- 实现定义好标准,根据标准进行测试;
- 软件测试随着项目的启动就开始,而不是项目结束才测试;
- 由第三方进行更客观的测试;
- 测试用例通过设计,采用少量的高效测试用例尽可能多的发现软件问题;
- 重视稳定,保存一切测试过程文档。
白盒测试在测试过程的前期进行,黑盒测试在测试过程的的后期。
使用白盒测试方法时,确定测试数据应根据程序的内部逻辑和指定的覆盖标准。
等价分类法:
1. 划分等价类
输入 | 有效等价类 | 无效等价类 |
数据A | 条件①;条件②;...... | 条件③;条件④;...... |
2. 有效等价类测试用例
输入数据 | 测试范围 | 期望结果 |
数据A | 等价类①、② | 输入正确 |
3. 无效等价类测试用例
输入数据 | 测试范围 | 期望结果 |
数据B1 | 等价类③ | 条件③输入错误 |
数据B2 | 等价类④ | 条件④输入错误 |
条件①;条件②;......单元测试、集成测试、确认测试、系统测试。
五、收尾阶段
为保证软件质量所采取措施:审查、复查、管理、复审、测试。
软件的维护阶段耗费成本最高,软甲工程目的是提高软件的可维护性,减少软件维护的工作量,降低软件系统的成本。
软件维护的目的:满足用户对已开发产品的性能与软件环境不断提高的需求,进而达到延长软件的寿命。
软件维护的分类(数字为所占成本百分比):
- 完善性维护(50%);
- 适应性维护(25%);
- 纠错性维护(21%);
- 其他维护(4%);