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

软件工程的定义

软件工程的定义是,一系列系统化、受过训练的、可以量化的软件开发、操作以及运维等过程,成为软件工程

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

由于软件本省的复杂性、一致性、可变性、不可视性,导致了随着软件的发展,软件的复杂性越来越高,软件开发的需求也越来越难以满足
因此为克服软件危机,首先应该对软件的开发人员有一个系统性、全面化的培养,构建软件工程的知识体系。同时在软件的开发中,不断完善软件工程开发框架,确定有效的功能与需求,使得开发成本可量化同时也在掌控之中

软件生命周期

又称为软件开发过程,是在时间维度上对软件项目任务进行划分。常见的有瀑布模型、螺旋模型、敏捷开发模型

SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide 请中文翻译其名称与简短说明)

  • 软件需求:根据现实中存在的问题,提出软件产品的需求
  • 软件设计:设计包括了软件的架构、组件、接口以及其他的特性的设计过程。
  • 软件构造:软件构造包括了细节设计的整合、具体编程、单元测试、集成测试以及调试、确定等过程。
  • 软件测试:对软件质量进行评估并确定其缺陷的活动
  • 软件维护:包括了对已有性能的增强、对新的操作环境的时应以及修改软件的缺陷等
  • 软件配置管理:对于软件开发中的硬件、固件等的管理和升级,使得更好的适应软件的维护
  • 软件工程管理:包括了计划、协调、测量和报告,以及使得软件的开发、维护系统化、训练化以及可量化
  • 软件工程历程:与软件的定义、实现、评估、管理和软件开发周期的改进相关
  • 软件工程模型和方法:确定了拥有不同开发阶段的开发模型,同时在某一特殊的生命周期阶段可用其他的模型替代
  • 软件质量:包括了软件质量的基础、软件质量的管理过程和实践过程的思考
  • 软件工程专业实践:综合了开发软件的理论知识、实力开发技能以及对于软件开发的态度
  • 软件工程经济学:目的在于使技术上的决定跟整个组织的业务上的目标保持一致
  • 计算机基础:包括了问题的解决方法、抽象概念、算法、编程基础、并行计算和分布式计算的从基础、计算机组成、操作系统以及计算机网络
  • 数学基础:包括了集合、关系代数、基本的逻辑、证明技术、图论、树论、离散概率、编译原理和数论
  • 工程基础:包括了实证研究方法、实验技术、统计分析、衡量方法、工程设计、估计和建模等

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

  • Level 1 - Initial:无序,自发生产模式。
  • Level 2 - Managed:针对项目有序、经常反应模式。
  • Level 3 - Defined:针对整个组织有序、且能够提前反应生产模式。
  • Level 4 - Quantitatively Managed:过程可度量和控制的模式。
  • Level 5 - Optimizing:专注于过程优化的模式。

用自己语言简述 SWEBok 或 CMMI (约200字)

CMMI指的是能力成熟度模型集成,由于不同的企业规模不同,处于对开发成本的考虑,每个企业很难都按照一套相同的软件工程规范去做。因此根据企业能力成熟度的高低对企业进行了不同登记的划分。
首先最底层的是类似于初期的开发团队,其目的在于完成某个项目的demo即可,因此开发是无序的,追求的是周期短、定位准。
之后是小型的IT公司,此时已经有了一定的规模,而且承接了一定的项目,因此以项目为基础对整个公司进行管理。
再之后是中型的IT公司,由于此时已经有了大量的项目,因此根据软件生命周期进行部分的划分,并进行流水线作业
第二高的等级是在上一等级的基础上,对每一个开发过程进行评估和测量
最高的等级是在第二高的等级的基础上,在开发的过程中,根据实际的开发情况对每一个阶段都进行不断地优化

猜你喜欢

转载自blog.csdn.net/qq_36312878/article/details/88584191