软件工程–软件危机-生命周期-软件过程

文章目录

  • 软件危机
      • 问题
      • 现象
      • 危机产生的原因
      • 途径
  • 软件
      • 定义
      • 特点
      • 软件工程方法学
  • 软件生命周期(过程模型)
      • 软件定义时期
      • 软件开发时期
      • 运行维护
  • 软件过程
      • 理想瀑布模型
      • 实际瀑布模型
      • 快速原型模型
      • 增量模型
      • 风险更大的增量模型
      • 螺旋模型
      • 喷泉模型
    • Rational统一过程
      • 问题定义

软件危机

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

问题

1、如何开发软件,增长需求
2、如何维护软件

现象

  • 对软件开发成本和进度估计往往很不准确
  • 用户对“已完成“的软件系统不满意的现象经常发生
  • 软件产品的质量往往靠不住
  • 软件通常没有适当的文档资料
  • 软件成本在计算机系统总成本中所占的比例逐年上升
  • 软件开发产率提高的速度远远比不上计算机应用迅速普及深入的趋势

危机产生的原因

(1)软件的本身特点

  • 不同于硬件,管理和控制软件开发过程较为困难
  • 软件在运行过程中不会因为使用时间过长而被“用坏”,运行时发现的错误是在开发时期未能检测出来的错误。
  • 不同于程序,规模大,且复杂性随程序规模的增加指数上升

(2)软件开发和维护的方法不正确:

  • 忽视软件需求分析
  • 认为软件开发就是写程序并设法使之运行
  • 轻视软件维护

途径

  • 良好的组织管理措施
  • 推广使用在实践中总结出来的软件技术和方法并且调研探索更好的有效技术和方法
  • 应该开发和使用更好的软件工具

软件

定义

软件是程序、数据及文档的完整集合

特点

  • 软件是一种逻辑实体而不是具体的物理实体
  • List item

软件工程方法学

3要素:方法、工具、过程

传统方法学:生命周期法
面向对象方法学:方法=对象+分类+继承+通过消息通讯——原因:当软件规模庞大或对软件需求模糊易变时,采用传统方法往往不成功

软件生命周期(过程模型)

软一个软件从提出直到最终被废弃的整个过程。

软件定义时期

  1. 问题定义 2. 可行性研究 3. 需求分析

软件开发时期

  1. 总体设计 2. 详细设计 3. 编码和单元测试 4. 综合测试

运行维护

软件过程

通常用LC来描述软件过程

理想瀑布模型

优点

  1. 强迫开发人员使用规范方法
  2. 严格规定了每个阶段必须提交的文档
  3. 要求每个阶段交出的所有产品都必须经过质量保证

缺点

  • 不适合需求变化,只能用户需求不改变或很少改变的场合
  • 最终才能看到可执行系统,风险较大
  • 由文档驱动,用户只能通过文档来了解产品,而不能满足用户的真正需求

快速原型模型

解释:快速建立起来可以在计算机上运行的程序,让用户试,用户提出一堆建议,然后修改程序,如此反复。直到用户满意,写文档。

  1. 能在较短时间内向用户提交可完成部分工作的产品

  2. 逐步增加产品功能,可以使用户有充裕的时间学习和适用新产品

缺点

  1. 将每个新的增量构件集成到现有团建体系结构中时,必须不破坏原来已经开发出的产品

  2. 软件体系架构非常重要,易于拓展

ATT

  1. 在开始构件前,必须全部完成需求分析、规格说明和概要设计的工作。

风险更大的增量模型

  喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。

缺点

Rational统一过程

  1. RUP软件开发

    迭代是开发:每次迭代只考虑部分需求
    使用基于构件的体系结构
    管理需求:用户的需求可能不断发生变化
    可视化建模
    验证软件质量
    控制软件变更

    将生命周期划分成4个阶段

  2. 敏捷过程和极限过程

    极限编程属于敏捷编程,有对变化和不确定性的更快速更敏捷的反应特性,能在快速的同时保持可持续开发的速度。

  3. 微软过程

    微软过程是RUP的精简版本包含若干个生命周期的持续递进循环,每个生命周期5各阶段构成;微软过程是敏捷过程的一个扩充版本,扩充了每个生命周期的各个阶段的具体工作流程

  4. 构化软件过程

问题定义

问题指:软件的最基本问题
例如:

  1. 软件的总体目标是什么
  2. 有什么用途
  3. 为哪些用户设计

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年8月26日
下一篇 2020年8月26日

相关推荐