软件工程初探

一、背景知识:

软件开发的基本过程:

需求定义→软件设计→软件实现→软件测试→软件维护

软件的定义:

软件=程序+数据+文档

程序:可以按照设计好的功能性能要求执行的指令序列

数据:程序能正确处理信息的数据结构

文档:与程序的开发维护使用有关的图文资料

软件的特点:

  1. 包含个人因素的大规模知识型工作
  2. 有工具辅助的软件开发也尚未实现自动化(即无法像硬件加工一样,机械组装已有部件,软件开发还未达到组装已有模块的程度)
  3. 对开发和运行的计算机软硬件环境具有依赖性
  4. 需求往往在变更,开发进度难估算
  5. 软件测试困难,覆盖所有路径的测试难实现。软件测试只能证明软件中有缺陷,不能证明软件中没有缺陷。
  6. 软件不会损耗,(参考硬件的磨损和老化),软件维护不再具有经济性时,软件即被淘汰

 软件危机:

  • 1965年——1985年,20世纪60——80年代
  • 于1968年提出
  • 催生了软件工程这一学科
  • 没有化解软件危机的灵丹妙药,已知的技术和方法都是进一步改进

SWEBOK(软件工程知识体系指南)

PDCA环(戴明环):

  

二、软件过程:

以质量为中心,以软件工程,方法,工具为三要素。其中软件过程是基础,是联系各层的桥梁,工具为过程和方法提供支持。

 软件过程的定义:软件过程定义了软件开发中的一系列活动,所以过程都具有下列活动:

  1. 沟通
  2. 建模
  3. 计划
  4. 构造
  5. 部署
  6. 项目管理(贯穿于以上所有活动)

软件生命周期:

  1. 定义时期:问题定义,可行性研究,需求分析
  2. 开发时期:概要设计,详细设计,编码,测试
  3. 运行/维护时期

软件过程模型:

  • 模型不是过程的直接描述,而是过程的抽象。可以用于解释软件产品不同的开发方法。
  • 从项目需求定义到运行维护为止,跨越整个生命周期的过程,活动和任务的结构框架。
  • 也被称为:软件生命周期模型,软件开发模型,软件工程范型

瀑布模型:

  • 20世纪80年代之前被广泛使用,因此被称为经典的生命周期模型
  • 线性模型:软件开发过程与生命周期是一致的,规定了各项工程活动的自上而下,逐级下落的次序。
  • 以文档为驱动

传统的瀑布模型:

  • 各个阶段都按顺序执行
  • 每个阶段完成规定的文档
  • 每个阶段结束有一个验证环节,只有通过验证才能进入下一个阶段
  1. 阶段间具有顺序性和依赖性:前一阶段的输出文档就是后一阶段的输入文档
  2. 推迟实现的观点(重要思想):区分开逻辑设计和物理设计,推迟程序的物理实现
  3. 质量保证的观点:每个阶段必须完成规定的文档,并在阶段结束前进行审核

实际的(带反馈的)瀑布模型:

若后面的阶段发现前面阶段的错误,则返回前面阶段进行修改。

瀑布模型的优缺点:

  • 每个阶段交出的作品都是经过验证的,每个阶段都有文档。
  • 能较好的与其它过程模型结合
  • 不够灵活:下一阶段开始前,当前阶段的结果需固定下来
  • 整体性太强:分析阶段出现任何失误,交互用户后才能发现,增加了开发的风险
  • 严格文档驱动,较为繁琐
  • 开发早期投入大量成本,难以应对用户需求变更

瀑布模型适用于:需求很明确且将来没有太大改变的情况。

演化模型:

猜你喜欢

转载自www.cnblogs.com/justKidrauhl/p/9965660.html
今日推荐