软件的本质与软件工程科学

作业题目地址:软件的本质与软件工程科学

  • 软件工程的定义

    是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过实践考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。

  • 解释导致 software crisis 本质原因、表现,述说克服软件危机的方法

    • 本质原因:
      • 软件的大量需求与软件生产力效率之间的矛盾
      • 软件系统的复杂性与软件开发方法之间的矛盾
      • 软件的本质决定了软件开发的困难:复杂性、一致性、可变性、不可视性、唯一性
    • 表现:
      • 项目超出预算
      • 项目超时
      • 软件效率非常低
      • 软件质量低劣
      • 软件经常不符合要求
      • 项目无法管理,代码难以维护
      • 软件无法交付
    • 克服方法:系统化的、与时俱进的软件工程方法
  • 软件生命周期(计划 分析 编码 测试)

    软件生命周期(Life Cycle):在时间维度,对软件项目任务进行划分,又成为软件开发过程。常见有瀑布模型、螺旋模型、敏捷的模型等。

    主要有6个阶段:

    • 可行性分析与计划阶段
    • 需求分析阶段
    • 设计阶段
    • 实现阶段
    • 测试阶段
    • 运行与维护阶段
  • SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide 请中文翻译其名称与简短说明)

    软件工程实践

    1. 软件需求:涉及软件需求的引出、协商、分析、规范和确认。

    2. 软件设计:定义系统或组件的架构、组件、接口和其他特性的过程,以及该过程的结果。

    3. 软件构建:是指通过详细设计、编码、单元测试、集成测试、调试和验证的组合来详细创建工作软件。

    4. 软件测试:涉及根据有限的测试用例集上的预期行为对程序行为进行动态验证。

    5. 软件维护:包括增强现有的能力,使软件适应新的和修改过的操作环境,以及纠正缺陷。

    6. 软件配置管理:系统地控制硬件、固件、软件的特定版本,并在整个软件生命周期内保持配置的完整性和可追溯性。

    7. 软件工程管理:包括计划、协调、测量、报告和控制项目或程序,以确保软件的开发和维护是系统的、有纪律的和量化的。

    8. 软件工程过程:即软件生命周期,包括生命周期过程中的定义、实现、评估、测量、管理和改进。

    9. 软件工程模型和方法:指软件生命周期管理中的建模模型与软件开发方法。

    10. 软件质量:包括软件的基础质量、软件质量的管理过程,以及实用性。

    11. 软件工程职业实践:涉及软件工程师实现软件工程所必须具备的知识、技能、态度。

    基础教育

    1. 软件工程经济学:关注于在业务环境中做出决策,以使技术决策与组织的业务目标保持一致。

    2. 计算基础:涵盖了为软件工程实践提供必要计算背景的基本主题。

    3. 数学基础:涵盖了为软件工程实践提供必要数学背景的基本主题。

    4. 工程基础:涵盖了为软件工程实践提供必要工程背景的基本主题。

  • 简单解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。

    img

    • Level 1 - Initial:无序,自发生产模式
    • Level 2 - Managed:可管理,建立了基本的项目管理过程
    • Level 3 - Defined:已定义,过程文档化、标准化
    • Level 4 - Quantitatively Managed:量化管理,有定量的理解与控制
    • Level 5 - Optimizing:优化,不断改进过程
  • 用自己语言简述 SWEBok 或 CMMI (约200字)

    SWEBok是软件生产的最佳实践与相关知识的框架,指导软件工程人才的培养与学科建设。它描述了描述了软件工程所需要的11个实践知识背景和4个基础教育背景,被用于应对软件危机。使用SWEBoK来培养软件工程人才与软件生命周期管理,可以提高人才的素质与应对软件危机的能力,规范软件开发过程。

    CMMI,能力成熟度模型集成,它通过使用知识(能力)的不同,用不同级别表示开发企业的成熟性,不仅给出了企业能力提升的路径,也给出了企业能力评估的事实标准。 适合一个还不成熟的团队,根据CMMI进行阶梯式成长。