软件工程概述
软件工程指的是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,目的是提高软件生产效率、提高软件质量、降低软件成本。
1. 计算机软件
计算机软件指的是计算机系统中的程序及其文档。程序是计算任务的处理对象和处理规则的描述。任何以计算机为处理工具的任务都是计算任务。
按照软件的应用领域,将计算机软件分为以下十类,包括:
①系统软件;②应用软件;③工程科学软件;④嵌入式软件;⑤产品线软件;⑥Web应用软件(Web APP);⑦人工智能软件;⑧开放计算;⑨网络资源;⑩开源软件。
2. 软件工程基本原则
美国著名的软件工程专家B.W.Boehm于1983年提出了软件工程的七条基本原理,包括:
①用分阶段的生命周期计划严格管理;
②坚持进行阶段评审;
③实现严格的产品控制;
④采用现代的程序设计技术;
⑤结果应能清楚地审查;
⑥开发小组的人员应少而精;
⑦承认不断改进软件工程实践的必要性。
3. 软件生存周期🌟🌟🌟🌟🌟
同任何事物一样,一个软件产品或软件系统要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期。软件生存周期包括以下七个方面:
3.1 可行性分析与项目开发计划(确定软件开发目标及其可行性,产出可行性分析报告、项目开发计划)
这个阶段主要确定软件的开发目标及其可行性 。参与该阶段的人员有用户、项目负责人、系统分析师。产生的文档有++可行性分析报告、项目开发计划++。
3.2 需求分析(确定软件系统要做什么,产出软件需求说明书)
该阶段的任务不是具体的解决问题,而是要确定软件系统要做什么 ,确定软件系统的功能、性能、数据和界面等要求,从而确定系统的逻辑模型。参与该阶段的人员有用户、项目负责人、系统分析师。产生的文档主要是++软件需求说明书++。
3.3 概要设计(将确定下来的功能转换成需要的体系结构,产出概要设计说明书)
该阶段开发人员把确定的各项功能需求转换成需要的体系结构 。概要设计就是设计软件的结构,明确软件由哪些模块组成,这些模块层次结构是怎样的,调用关系是怎样的,每个模块的功能是什么。参与该阶段的人员有系统分析师、软件设计师。产生的文档主要是++概要设计说明书++。
3.4 详细设计(对每一个模块进一步详细具体的描述,产出详细设计文档)
该阶段的主要任务是**对每个模块的功能进一步详细、具体的描述。**参与该阶段的人员有软件设计师、程序员。产生的文档主要是++详细设计文档++。
3.5 编码(根据模块编码实现功能,产出源程序)
把每个模块的控制结构转换成计算机可接受的程序代码,即写成某种特定程序设计语言表示的源程序清单。
3.6 软件测试(测试软件功能和性能,产出软件测试计划、测试用例、测试报告)
测试是保证软件质量的重要手段。参加测试的人员通常是另一部门(或单位)的软件设计师或系统分析师。产生的文档主要是++软件测试计划、测试用例、测试报告++。
3.7 后期维护(生命周期最长的阶段)
软件维护是软件生存周期中时间最长的阶段。软件已交付且正式投入使用后,便进入维护阶段。对软件进行修改的原因包括:
- 运行中发现隐含的错误而需要修改;(纠正错误)
- 为了适应变化的(或变化后的)工作环境而修改;(适应环境变化)
- 需要对软件功能进行扩充、增强而进行的修改;(功能增强)
- 为将来软件维护活动做预先准备。(维护准备)
4.软件过程🌟🌟🌟
软件开发中遵循一系列可预测的步骤(即路线图),该路线图称为软件过程。过程是活动的集合,活动是任务的集合,软件过程有三层含义:
- 个体含义:指某产品、系统在生存周期中的某一类活动的集合,如开发过程、管理过程等。
- 整体含义:指软件产品、系统在所有上述含义下的软件过程的总体。
- 工程含义:指解决软件过程的工程。
4.1 能力成熟度模型(CMM)
CMM是对软件组织进化阶段的描述,随着软件组织定义、实施、测量、控制和改进其软件过程,软件组织的能力经过这些阶段逐步提高。CMM将软件过程的改进分为五个成熟度级别。
4.2 能力成熟度模型集成(CMMI)
CMMI提供了两种表示方法:阶段式模型和连续式模型。
4.2.1 阶段式模型
结构类似于CMM,它关注组织的成熟度。CMMI-SE/SW/IPPD 1.1版本中有五个成熟度等级。
- 初始级:过程不可预测且缺乏控制。
- 已管理级:过程为项目服务。
- 已定义级:过程为组织服务。
- 定量管理级:过程已度量和控制。
- 优化级:集中过程改进。
4.2.2 连续式模型
关注每个过程域的能力,一个组织对不同的过程域可以达到不同的过程域能力等级(简称CL)。CMMI中包括六个过程域能力等级。
- CLO-未完成级:过程未被执行或未被充分执行。
- CL1-已执行级:过程已被执行,但未达到所要求的目标或标准。
- CL2-已管理级:过程已在管理控制之下,并被证明能够满足组织所设定的目标或标准。
- CL3-已定义级:过程被定义,并被证明能够满足设定的目标或标准,同时该过程记录文档。
- CL4-定量管理级:过程已被量化管理,并被证明能够满足设定的目标或标准,同时该过程记录文档。
- CL5-优化级:过程已被优化,并被证明能够满足设定的目标或标准,同时该过程记录文档。
4.3 统一过程(UP)
统一过程(Unified Process,UP)是一种软件过程工程方法,也被称为软件开发过程。它是一种迭代和增量的开发过程,以用例和风险为驱动,以架构为中心,使用UML方法和工具支持。
- 起始阶段(Inception Phase):此阶段的里程碑是生命周期目标(Lifecycle Goal),主要任务是确定项目的范围和目标,评估风险和可行性。
- 精化阶段(Elaboration Phase):此阶段的里程碑是生命周期架构(Lifecycle Architecture),主要任务是细化需求,设计和架构。
- 构建阶段(Construction Phase):此阶段的里程碑是初始运作功能(Initial Operational Functionality),主要任务是实现核心功能,进行单元测试。
- 移交阶段(Transition Phase):此阶段的里程碑是产品发布(Product Release),主要任务是进行集成测试,修复错误,进行系统测试,最后发布产品。
- 产生阶段(Production Phase):此阶段没有特定的里程碑,主要任务是将产品投入生产环境,进行维护和升级。
软考学习笔记,欢迎纠错与探讨,不喜勿喷!😘