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

本文为《系统分析与设计》课程作业,探讨一下软件工程概念与软件工程科学。

软件工程的定义

软件工程是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度,实现满足用户要求的软件产品的定义、开发和维护的工程或进行研究的学科。

简单来说,软件工程包括了软件开发技术以及软件项目管理,是研究两者在创建软件产品中如何更好地结合的学科。

软件危机的本质原因、表现以及克服方法

软件危机的根源是软件的大量需求与软件生产力效率之间的矛盾,和软件系统的复杂性与软件开发方法之间的矛盾。

软件危机具体表现为以下几个方面:项目运行超出预算、项目运行超出时间、软件质量低落、软件通常不匹配需求、项目无法管理且代码难以维护。

软件危机的矛盾是不可解决的,但是可以缓解矛盾。想要克服软件危机,应该正确认识计算机软件的内涵,采用工程项目管理方法实施软件开发的组织管理,采用成熟的软件开发技术、方法和工具。

软件生命周期

软件生命周期是指软件的产生直到成熟的全部过程。在时间维度上,对软件项目任务进行划分,每一阶段执行不同任务,软件生命周期实际上就是软件开发过程。

软件生命周期具体管理方法常见有敏捷模型、瀑布模型、螺旋模型。前者属于敏捷开发,后两者属于过程模型,过程模型的五个基本框架活动为沟通、计划、建模、构建和部署。

SWEBoK的15个知识域

软件工程实践知识领域

  • 软件需求:涉及软件需求的引入、协商、分析、规范和确认,用于对软件产品的需求和约束。
  • 软件设计:设计软件系统的架构、组件、接口、其它特性的过程,以及该过程的结果。
  • 软件构造:通过详细的设计、实现代码、单元测试、集成测试、调试和验证来构造软件。
  • 软件测试:评估产品质量并通过缺陷来改进产品质量。
  • 软件维护:修改现有的软件,使软件适应新的环境,以及修复软件已知的缺陷。
  • 软件配置管理:系统地控制硬件、固件、软件的特定版本,并在整个软件生命周期内保持配置的完整性和可追溯性。
  • 软件工程管理:包括计划、协调、衡量、报告、控制项目或程序,以确保软件的开发和维护是系统的、有纪律的和量化的。
  • 软件工程过程:即软件生命周期,包括生命周期过程中的定义、实现、评估、测量、管理和改进。
  • 软件工程模型和方法:指软件生命周期管理中的建模模型与软件开发方法。
  • 软件质量:包括软件的基础质量、软件质量的管理过程,以及实用性。
  • 软件工程职业实践:涉及软件工程师实现软件工程所必须具备的知识、技能、态度。

软件工程基础教育

  • 软件工程经济学:包含软件工程经济学基础、非盈利决策、经济风险和不确定性估算等。
  • 计算基础:包括问题解决技术、抽象、算法和复杂性、编程基础、并行和分布式计算基础、计算机组成、操作系统、网络通信等。
  • 数学基础:涵盖为软件工程实践提供必要的数学背景的知识点,比如数论、图与树、离散概率、语法和有限状态机等。
  • 工程基础:涵盖为软件工程实践提供必要的工程背景的知识点,比如统计分析、工程设计等。

CMMI的五个级别

  • 级别1:初始状态,每一个没有通过CMMI评估的公司或组织都处于该级别。
  • 级别2:已管理,存在一些基本地软件项目管理行为、设计和管理技术。
  • 级别3:已定义,已为软件生成的管理和技术都做了完整的文档定义。
  • 级别4:已量化地管理,对每个项目都设定了质量和生产目标,进行量化管理。
  • 级别5:优化中,使用统计质量和过程控制来连续地改进软件。

简述SWEBoK或CMMI

SWEBoK即软件工程知识体系,描述了软件工程所需要的11个实践知识背景和4个基础教育背景。SWEBoK是构建软件生产的实践知识要求和基础教育要求,被用于缓解软件危机的两大矛盾。根据SWEBoK来决定如何培养软件工程人才和如何管理软件开发生命周期,可以提高相关领域的人才水平,用更加成熟的技术、更加高效的管理方法来进行软件开发。SWEBoK可以用于描述一个团队或个人的工程规范,但是由于没有级别区别,难以衡量其的工程能力水平。

CMMI即能力成熟度模型集成,用于衡量一个团队或个人的软件工程能力水平。CMMI从开发、服务、采购等多个方面将团队分为5个等级,其中最低级表示没有通过CMMI评估。通过CMMI评估,可以表示该团队的开发过程的成熟度,也给出了该团队更进一步提升路径的建议。CMMI提供的是一个阶梯式的软件工程知识体系框架,这允许团队可以从不成熟开始一步步改进,而不需要一步到位,完善和使用软件生命周期中的所有过程和方法。因此,CMMI是一个更加适合不断成长的团队的开发模型。

土豪与Zhenly通道
0%