第一章 软件工程概论

【考核内容】

软件危机的概念、产生原因、解决途径;软件工程的概念、基本原理;软件生命周期;主要的软件过程模型:瀑布模型、快速原型模型。

【考试要求】

1. 理解软件危机的产生原因及解决途径;

  • 软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。包含两方面:

    1. 如何开发软件,以满足对软件日益增长的需求;
    2. 如何维护数量不断膨胀的已有软件。
  • 软件危机的产生原因:

    • 与软件本身特点有关

      1. 软件不同于硬件,管理和控制软件开发过程相当困难
      2. 软件在运行过程中不会因为使用时间过长而被”用坏“如果运行中发现了错误,很可能是遇到了一个在开发时期引入的在测试阶段没能检测出来的错误
      3. 软件不同于一般程序,他的一个显著特点是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升
    • 软件开发与维护的方法不正确有关

      1. 软件专业人员对对开发和维护有不少糊涂观念,在实践中采用了错误的技术和方法;
      2. 忽略软件的需求分析的重要性;
      3. 严重的问题在软件开发的不同阶段进行修改需要付出的代价是很不相同的。
  • 软件危机的解决途径:

    1. 首先应该对计算机软件有一个正确的认识;
    2. 充分认识到软件开发应该是各类人员协同配合,共同完成的工程项目;
    3. 推广使用在实践中总结出来的开发软件的成功技术和方法,并且研究探索更好的技术和方法;
    4. 应该开发和使用更好的软件工具;
    5. 总之,既要有技术措施,也要有组织管理措施。

2. 掌握软件工程的基本原理;

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

3. 掌握软件生命周期的阶段划分及主要软件过程模型。

  • 软件生命周期:
    • 软件定义
      • 问题定义(问题性质、工程目标和工程规模)
      • 可行性研究(对问题有没有可靠的解决方法)
      • 需求分析(为了解决问题,系统需要做什么)
    • 软件开发
      • 总体设计(怎样实现目标系统,最佳方案)
      • 详细设计(怎么具体实现)
      • 编码与单元测试
      • 综合测试(通过各种测试使软件到达预定的要求)
    • 软件维护
      • 软件维护(通过各种必要的维护活动使系统持久的满足用户的各种需求)
  • 主要软件过程模型
    • 瀑布模型:唯一广泛采用
      • 阶段间具有顺序性和依赖性
      • 推迟实现的观点
      • 质量保证的观点:每个阶段必须完成规定的文档;每个阶段结束前评审文档;
      • 优点:有利于人员的组织管理,提高了软件开发的质量和效率
      • 缺点:不可逆转;需求不好确定,实际上很难严格执行;带反馈环
    • 快速原型模型:快速建立一个系统,再反馈给用户,以提出更明确的需求和更多的需求;
      • 优点:确定需求上优于瀑布模型;提供学习手段;
      • 缺点:快速建立的模型可能导致内部结构差,质量低;
    • 增量模型:
      • 分批向用户提交产品,
      • 优点:在较短时间提交部分产品;用户有时间学习了解产品;软件结构开放,方便向现有产品添加新构件;
      • 缺点:向现有产品添加新构件操作困难;