软件工程概述

软件工程概述

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

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

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


相关推荐
B站计算机毕业设计超人1 小时前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化
不止会JS5 小时前
软考:系统架构设计师教材笔记(持续更新中)
系统架构·软件工程·软考
文火冰糖的硅基工坊15 小时前
[创业之路-204]:《华为战略管理法-DSTE实战体系》- 5-平衡记分卡绩效管理
产品经理·需求分析·产品·创业·战略
武昌库里写JAVA16 小时前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
武昌库里写JAVA20 小时前
浅谈怎样系统的准备前端面试
数据结构·vue.js·spring boot·算法·课程设计
Theodore_102220 小时前
4 软件工程——总体设计
java·开发语言·数据库·算法·java-ee·软件工程·设计
Theodore_102220 小时前
1 软件工程——概述
java·开发语言·算法·设计模式·java-ee·软件工程·个人开发
shinelord明1 天前
【再谈设计模式】享元模式~对象共享的优化妙手
开发语言·数据结构·算法·设计模式·软件工程