软件工程导论

1. 软件工程概论

1.1. 软件危机(Soft Crisis)

  • 计算机软件的开发和维护过程中遇到的一系列严重问题
  • 两方面问题

    • 如何开发软件,满足对软件日益增长的需求
    • 如何维护数量不断膨胀的已有软件
  • 具体表现

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

      1. 与软件本身特点有关

        • 逻辑部件

          • 质量难以评价, 管理、开发和维护困难
        • 规模庞大

          • 开发繁琐,多人分工协作,设计技术和管理等问题
      1. 与软件开发与维护不正确有关

        • 早期软件开发具有个体化特点
        • 忽视软件需求分析的重要性
        • 认为软件开发就是写程序并设法使之运行
        • 轻视软件维护
  • 消除途径

    • 对计算机软件有正确的认识, 消除”软件就是程序”的错误认识. 认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目,充分借鉴吸取已有经验
    • 推广使用在实践中总结出的开发软件的成功技术和方法,并继续研究探索
    • 开发和使用更好地软件工具

2.1 软件工程

  • 简介

    • 定义

      • 指导计算机软件开发和维护的一门工程学科, 该学科的目的是生产出能按期交付的、在预算范围内的、满足用户需求的、质量合格的软件产品
    • 本质特性

      • 关注于大型程序的构造
      • 中心课题是控制复杂性
      • 软件经常变化
      • 开发软件效率非常重要
      • 和谐地合作是开发软件的关键(标准和规程)
      • 软件必须有效地支持它的用户(满足各方面需求)
      • 在软件工程领域中通常由具有一种文化的人替具有另一种文化的人开发产品
  • 基本原理

    • 用分阶段的生命周期计划严格管理
    • 坚持进行阶段评审
    • 实行严格的产品控制
    • 采用现代程序设计技术
    • 结果应能清楚地审查
    • 开发小组的人员应该小而精
  • 方法学