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

软件工程

IEEE:软件工程就是将系统化的、规范的、可度量的方法应用于软件的开发、运行、维护,即将工程化的方法应用于软件,同时软件工程还包括对这些方法的研究。

软件危机

本质原因:

  • 落后的软件生产方式无法满足迅速增长的计算机软件需求

主要表现:

  • 软件开发进度难以预测
  • 软件开发成本难以控制
  • 用户对产品功能难以满足
  • 软件产品质量无法保证
  • 软件产品难以维护
  • 软件缺少适当的文档资料

解决方法:

  • 从其他工程中吸收成功经验。研究软件生产的客观规律,建立与系统化软件生产有关的概念、原则、方法、技术和工具,指导和支持软件系统的生产活动。
  • 使用软件工具辅助项目管理与技术生产。将软件生命周期各阶段使用的软件工具有机集合成为一个整体,形成能够连续支持软件开发与维护全过程的集成化软件支援环境。
  • 推进程序设计自动化进程。建立软件工业化生产体系,研究基于程序变换、自动生成和可重用软件等软件新技术。

软件生命周期

软件生命周期是软件从产生到报废或停止使用的生命周期,包括以下六个阶段:

  1. 软件的定义及规划
  2. 需求分析
  3. 软件设计
  4. 程序编码
  5. 软件测试
  6. 运行维护

SWEBoK

软件工程实践知识域:

  1. 软件需求 Software Requirements

    表达了对解决现实世界问题的软件产品的要求和约束。

  2. 软件设计 Software Design

    既包括定义一个系统或组件的架构、组件、接口以及其它特性的过程,又包括这个过程的产出。

  3. 软件构造 Software Construction

    通过详细设计、编码、单元测试、集成测试、调试和验证来详细构造软件。

  4. 软件测试 Software Testing

    通过有限的测试用例来动态验证程序的缺陷,评估并提升产品质量。

  5. 软件维护 Software Maintenance

    包括增强现有功能,根据新的操作环境调整软件,以及修复漏洞。

  6. 软件配置管理 Software Configuration Management

    通过识别在不同时刻的系统配置来系统地控制配置的更改,并在整个软件生命周期中维持完整性和可追溯性。

  7. 软件工程管理 Software Engineering Management

    通过计划、协调、度量、报告、控制项目或程序来确保软件的开发和维护是系统的、规范的、可度量的。

  8. 软件工程过程 Software Engineering Process

    涉及软件生命周期过程的定义、实现、评估、度量、管理和改进。

  9. 软件工程模型与方法 Software Engineering Models and Methods

    涉及多个生命周期阶段的主题,包括建模、模型类型、分析和软件开发方法。

  10. 软件质量 Software Quality

    包括软件质量基础、软件质量管理工程和实践评估。

  11. 软件工程职业实践 Software Engineering Professional Practice

    涉及软件工程师以专业、负责、道德的方式进行软件工程实践所必须具备的知识、技能、态度。

软件工程教育基础知识域:

  1. 软件工程经济 Software Engineering Economics

    涉及在业务环境中作出决策,以使技术决策与组织的业务目标保持一致。

  2. 计算基础 Computing Foundations

    为软件工程实践提供必要的计算知识,包括问题解决技巧、抽象、算法与复杂度、编程基础、并行计算与分布式计算基础、计算机组织结构、操作系统、网络通信。

  3. 数学基础 Mathematical Foundations

    为软件工程实践提供必要的数学知识,包括集合、关系与函数、基本命题逻辑与谓词逻辑、证明技巧、图与树、离散型概率、语法与有限状态机、数论。

  4. 工程基础 Engineering Foundations

    为软件工程实践提供必要的工程知识,包括经验方法与实验技巧、统计分析、测量与度量、工程设计、仿真与建模、根本原因分析。

CMMI

  • Level 1 - 初始级 Initial

    软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力 。管理是反应式的。

  • Level 2 - 可管理级 Managed

    建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。

  • Level 3 - 已定义级 Defined

    已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软工过程是可见的。

  • Level 4 - 量化管理级 Quantitatively Managed

    分析对软件过程和产品质量的详细度量数据,对软件过程和和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。

  • Level 5 - 优化管理级 Optimizing

    过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。

简述CMMI

CMMI全称是Capability Maturity Model Integration,即能力成熟度模型集成,于1994年由美国国防部与卡内基-梅隆大学的软件工程研究中心以及美国国防工业协会共同开发和研制。CMMI的目的是帮助企业对软件工程过程从质量、时间、成本三个方面进行管理和改进,提升企业的能力,从而按时地、不超预算地开发出高质量的软件。其依据是:只要集中精力去建立有效的软件工程过程的基础结构,不断进行管理实践和过程改进,就可以克服软件开发中的困难。CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,这个集成模型框架消除了各个模型的不一致性,减少了重复,增加了透明度和理解,因此能够从总体上改进组织的质量和效率。如今,CMMI是世界公认的软件产品进入国际市场的通行证,它不仅仅是对产品质量的认证,更是一种软件工程改善的途径。