【随笔闲谈】软件工程导论

目录

一、软件工程概述

二、启动阶段

三、计划阶段

四、实施阶段

五、收尾阶段


一、软件工程概述

软件危机:在计算机软件的开发和维护过程中遇到的一系列严重问题。

软件危机的产生与自身的特点有关,还与软件开发、管理的方法不正确有关。

软件危机的典型表现:

  • 对软件开发的进度和成本无法控制;
  • 用户对已开发完成的软件的满意度低;
  • 软件质量无法保证;
  • 软件开发后的维护工作很难进行;
  • 软件通常没有合适的文档资料;
  • 软件成本在系统成本中所占比例越来越高;
  • 软件开发生产力提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

软件工程:计算机科学、工程和管理三个学科的综合。(技术和管理)

软件工程的基本目标:努力发挥开发人员的创造性潜能。

软件工程方法学的目的(实质):使软件生产规范化和标准化,控制开发工作的复杂度。

软件工程方法学得以实施的主要保证是:软件开发工具和软件开发的环境。

软件根据功能划分为:系统软件、支撑软件、应用软件。

软件工程的七大基本原理:

  • 用分阶段的生命周期计划严格管理;
  • 坚持进行阶段评审;
  • 实行严格的产品控制;
  • 采用现代的程序设计技术;
  • 结果应能清楚的审查;
  • 开发小组的成员应该少而精;
  • 承认不断改进软件工程实践的必要性。

传统软件工程的生命周期:

  1. 问题定义与可行性研究;
  2. 需求分析;
  3. 软件设计(概要设计与详细设计);
  4. 编码;
  5. 测试;
  6. 运行与维护。

瀑布模型:

【随笔闲谈】软件工程导论_第1张图片

瀑布模型的特征:

  1. 从上一项活动中接受该活动的工作成果,作为输入;
  2. 利用这一输入实施该活动应完成的内容;
  3. 给出该活动的工作成功,作为输出传给下一项;
  4. 对该项活动实施的工作进行评审。若其工作得到确认,则继续下一项活动。

瀑布模型的优点:

  • 强调开发的阶段性;
  • 强调早期计划及需求调查;
  • 强调产品测试。

瀑布模型的缺点:

  • 瀑布模型过于依赖早期进行的唯一一次需求调查,不能适应需求的变化;
  • 单一流程,开发中的经验教训不能反馈应用于本产品的过程。

原型化方法是用户和设计交换最频繁的方法。

软件开发过程中可能出现的问题:

  • 问题定义与可行性研究:未进行问题定义和可行性研究,导致技术问题难以解决;
  • 需求分析:需求分析应与客户充分沟通,并由开发人员完成,而不是由用户给出。需求分析不完整,会导致用户不断增加或修改要求而增大开发难度;
  • 系统设计:模块间未做到高内聚低耦合,导致维护困难;
  • 详细设计:未编写详细文档,导致维护困难;
  • 编码:编码风格不好(注释少、命名不规范),导致维护困难;
  • 测试:由开发人员自己进行测试,而没有交给第三方测试,造成系统的不稳定;
  • 维护:没有进行评审或保存详细的文档资料,导致维护困难。

【随笔闲谈】软件工程导论_第2张图片

二、启动阶段

可行性研究:

  • 技术可行性;
  • 经济可行性;
  • 操作可行性;
  • 时间可行性;
  • 组织与管理可行性;
  • 社会与政策可行性。

需求分析:

  • 系统要求:功能要求、性能要求、运行要求、其他要求。
  • 数据要求:结构化程序设计以数据流为核心,结构化分析方法采用数据流图、DFD与数据字典DD描述。

数据流图的基本四种成分:

  • 数据输入的源点和数据输出的汇点;
  • 加工;
  • 数据流;
  • 数据存储文件。

三、计划阶段

系统概要设计的意义:

  • 设计是软件开发中形成质量的地方;
  • 设计为最终对软件评估进行质量评估提供度量依据;
  • 设计是将用户的需求准确的转化为完整的软件产品的唯一方法;
  • 设计是软件开发和维护的基础。

软件设计阶段分为原型设计用例设计

概要设计针对需求,详细设计针对实现。

为高质量的开发软件,在软件结构设计时,必须遵循模块独立性原则。

项目开发计划除去规定项目开发所占的资源,还可以包括用户培训计划。

详细设计内容:

  • 算法过程设计;
  • 数据结构设计;
  • 数据库物理设计;
  • 信息编码设计;
  • 测试用例设计;
  • 其他要求设计。

软件详细设计工具可分三类:图示工具、设计语言、表格工具。

结构化程序设计的基本控制结构:

【随笔闲谈】软件工程导论_第3张图片

系统流程图是描绘物理系统的传统工具,它的基本思想是利用图形符号以黑盒子形式描绘系统里的每个部件。

结构化系统设计是面向数据流的系统设计方法,其要解决的任务是在需求分析的基础上,将DFD(结构图)“映射”为软件系统的结构。

N_S图(盒图)

【随笔闲谈】软件工程导论_第4张图片

 

PAD图

【随笔闲谈】软件工程导论_第5张图片

PDL是伪码式语言。

四、实施阶段

软件测试原则:

  • 所有测试的标准都是建立在用户的需求之上;
  • 基于“质量第一”思想,时间服从质量;
  • 实现定义好标准,根据标准进行测试;
  • 软件测试随着项目的启动就开始,而不是项目结束才测试;
  • 由第三方进行更客观的测试;
  • 测试用例通过设计,采用少量的高效测试用例尽可能多的发现软件问题;
  • 重视稳定,保存一切测试过程文档。

【随笔闲谈】软件工程导论_第6张图片

白盒测试在测试过程的前期进行,黑盒测试在测试过程的的后期。 

使用白盒测试方法时,确定测试数据应根据程序的内部逻辑和指定的覆盖标准。

等价分类法:

1. 划分等价类

输入 有效等价类 无效等价类
数据A 条件①;条件②;...... 条件③;条件④;......

2. 有效等价类测试用例

输入数据 测试范围 期望结果
数据A 等价类①、② 输入正确

3. 无效等价类测试用例

输入数据 测试范围 期望结果
数据B1 等价类③ 条件③输入错误
数据B2 等价类④ 条件④输入错误

条件①;条件②;......单元测试、集成测试、确认测试、系统测试。

五、收尾阶段

为保证软件质量所采取措施:审查、复查、管理、复审、测试。

软件的维护阶段耗费成本最高,软甲工程目的是提高软件的可维护性,减少软件维护的工作量,降低软件系统的成本。

软件维护的目的:满足用户对已开发产品的性能与软件环境不断提高的需求,进而达到延长软件的寿命。

软件维护的分类(数字为所占成本百分比):

  • 完善性维护(50%);
  • 适应性维护(25%);
  • 纠错性维护(21%);
  • 其他维护(4%);

你可能感兴趣的:(随笔闲谈,软件工程)