软件工程概述

软件工程概述

软件工程指的是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,目的是提高软件生产效率、提高软件质量、降低软件成本。

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):此阶段没有特定的里程碑,主要任务是将产品投入生产环境,进行维护和升级。

软考学习笔记,欢迎纠错与探讨,不喜勿喷!😘


相关推荐
枣树一3 小时前
2025.6.3 解构产品经理
产品运营·产品经理·需求分析
碳学长13 小时前
软件工程:如何做好软件产品
软件工程
Scabbards_14 小时前
CPT304 Software Engineering II 题型收集
软件工程
PXM的算法星球14 小时前
【软件工程】可行性研究
软件工程
武昌库里写JAVA16 小时前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
奇妙之二进制18 小时前
低内聚高耦合的衡量指标
软件工程·架构设计
奇妙之二进制1 天前
软件功能模块归属论证方法
软件工程·架构设计
金孚媒1 天前
金孚媒重磅推出德国顶级媒体原生广告整合服务,覆盖12家主流媒体
科技·个人开发·媒体
workflower1 天前
量子比特实现方式
数据仓库·服务发现·需求分析·量子计算·软件需求
张较瘦_1 天前
[论文阅读] 软件工程 | 如何挖掘可解释性需求?三种方法的深度对比研究
软件工程·需求分析