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

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

[toc]


1. 软件工程的定义

­  软件工程是指应用系统的、规范的和可量化的方法去开发、操作与维护软件,即是将工程应用在软件上,以及对这些方法的研究。

2. Software Crisis

2.1 本质原因

­  因为计算机性能的高速发展以及相应的软件所需处理的问题日益复杂,使得软件难以高效地开发,导致了软件危机。

2.2 表现

­软件危机表现为

  • 软件项目超预算

  • 软件项目逾期

  • 软件低效

  • 软件质量低

  • 软件不能满足预期需求

  • 软件项目难以管理,代码难以维护

  • 软件夭折

2.3 克服方法

­  使用SWEBoK定义的知识域培训软件工程师,使用CMMI评估改进公司自身的软件开发过程,使用软件质量监管(SQM)保证软件的质量等

3. 软件生命周期

­  软件生命周期是指将软件开发任务分解成若干独立阶段,以提升软件设计、产品管理、项目管理的效果,从而使复杂的软件开发过程变得可控与便于管理。软件生命周期一般分为六个阶段:可行性分析与计划阶段、需求分析阶段、设计阶段、实现阶段、测试阶段与运行与维护阶段。

4. SWEBoK的15个知识域

  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:

    ­  软件工程专业实践;软件工程专业练习是关于软件工程师必须具备的知识、技能与态度,以专业、负责与热情的态度进行软件工程实践

  12. Software Engineering Economics:

    ­  软件工程经济;软件工程经济是基于商业考虑的决策,以使技术决策与商业目标一致。

  13. Computing Foundations :

    ­  计算基础;计算基础包括了软件工程所需的计算知识背景

  14. Mathematical Foundations:

    ­  数学基础;数学基础包括了软件工程所需的数学知识背景

  15. Engineering Foundations:

    ­  工程基础;工程基础包括了软件工程所需的工程知识背景

5. CMMI的五个级别

  1. 初始级:软件过程是无序的,自发生产软件。
  2. 可管理级:制定了必要的过程纪律;有基本的配置、需求管理,制定了工作计划,有工作监管与控制,指定了测评与分析措施
  3. 已定义级:已将软件工程与管理过程文档化、标准化;有容量与可使用性管理,具备决策分析、解决能力,具有事故应急预防机制,集成化的工作管理、危机管理、策略,制定了组织的各种标准,具有服务系统。
  4. 量化管理级:对软件过程和产品都有定量的理解与控制,具有可量化的工作管理、组织过程绩效
  5. 优化管理级:具备因果分析与解决能力,组织绩效管理

6. 我对CMMI的简单理解

­  CMMI指能力成熟度模型集成,我认为这个模型集成能帮助公司评价自身的成熟度,来成立各种适应自身所需的部门,制定相应的规则制度,从而帮助公司按时、高效并且在既定预算内完成软件开发。CMMI为公司的每个过程提供了一个基础框架,减少了过程之间的重叠部分,从而使每个过程高效地进行,而所有过程的框架又能作为一个整体发挥作用,使得开发的软件的质量得到保证。CMMI的最终目的就是帮助公司克服软件危机,找到符合公司实际情况的软件开发模式。