我和计算机技术与软件专业技术资格(水平)考试愉快第10天--软件设计师

我和计算机技术与软件专业技术资格(水平)考试愉快第10天--软件设计师

软件工程基础知识

我和计算机技术与软件专业技术资格(水平)考试愉快第10天--软件设计师

 

软件工程概述

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

1、计算机软件

计算机软件指的是计算机系统中的程序及其文档。程序是计算任务的处理对象和处理规则的描述。任何以计算机为处理工具的任务都是计算任务。

按照软件的应用领域,将计算机软件分为以下几类,包括:

1)系统软件;

2)应用软件;

3)工程/科学软件;

4)嵌入式软件;

5)产品线软件;

6)Web 应用软件(Web App);

7)人工智能软件;

8)开放计算;

9)网络资源;

10)开源软件。

2、软件工程基本原理

美国著名的软件工程专家 B.W.Boehm 于 1983 年提出了软件工程的 7 条基本原理,包括:

1)用分阶段的生命周期计划严格管理;

2)坚持进行阶段评审;

3)实现严格的产品控制;

4)采用现代的程序设计技术;

5)结果应能清楚的审查;

6)开发小组的人员应少而精;

7)承认不断改进软件工程实践的必要性。

3、软件生存周期

同任何事物一样,一个软件产品或软件系统要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称之为软件生存周期。软件生存周期包括以下7个方面:

1)可行性分析与项目开发计划:这个阶段主要确定软件的开发目标及其可行性。参与该阶段   的人员有用户、项目负责人、系统分析师。产生的文档有可行性分析报告、项目开发计划。

2)需求分析:该阶段的任务不是具体的解决问题,而是要确定软件系统要做什么,确定软件   系统的功能、性能、数据和界面等要求,从而确定系统的逻辑模型。参与该阶段的人员有用户、项目负责人、系统分析师。产生的文档主要是软件需求说明书。

3)概要设计:该阶段开发人员把确定的各项功能需求转换成需要的体系结构。概要设计就是设计软件的结构,明确软件由哪些模块组成,这些模块层次结构是怎样的、调用关系是怎样的,每个模块的功能是什么。参与该阶段的人员有系统分析师、软件设计师,产生的文档主要是概要设计说明书。

4)详细设计:主要任务是对每个模块的功能进一步详细、具体的描述。参与该阶段的人员有   软件设计师、程序员,产生的文档主要是详细设计文档。

5)编码:把每个模块的控制结构转换成计算机可接受的程序代码,即写成某种特定程序设计   语言表示的源程序清单。

6)测试:测试是保证软件质量的重要手段。参加测试的人员通常是另一部门(或单位)的软   件设计师或系统分析师,产生的主要文档有软件测试计划、测试用例、测试报告。

7)维护:软件维护是软件生存周期中时间最长的阶段。软件已交付且正式投入使用后,便进   入维护阶段。对软件进行修改产生的原因包括:

(1)运行中发现隐含的错误而需要修改;

(2)为了适应变化的(或变化后)工作环境而修改;

(3)需要对软件功能进行扩充、增强而进行的修改;

(4)为将来软件维护活动做预先准备;

4、软件过程

软件开发中遵循一系列可预测的步骤(即路线图),该路线图成为软件过程。过程是活动的集合,活动是任务的集合。

软件过程有 3 层含义:

(1)个体含义:即某产品、系统在生存周期中的某一类活动的集合,如开发过程、管理过程等;

(2)整体含义:指软件产品、系统在所有上述含义下的软件过程的总体;

(3)工程含义:指解决软件过程的工程。

(1)能力成熟度模型(CMM)

CMM是对软件组织进化阶段的描述,随着软件组织定义、实施、测量、控制和改进其软件过程,软件组织的能力经过这些阶段逐步提高。CMM将软件过程改进分为5个成熟度级别。

我和计算机技术与软件专业技术资格(水平)考试愉快第10天--软件设计师

(2)能力成熟度模型(CMMI)。

CMMI 提供了两种表示方法:阶段式模型和连续式模型。

1)阶段式模型

结构类似CMM,它关注组织的成熟度。CMMI—SE/SW/IPPD1.1版本中有5个成熟度等级。

初始的:过程不可预测且缺乏控制;

已管理的:过程为项目服务;

已定义的:过程为组织服务;

定量管理的:过程已度量和控制;

优化的:集中过程改进。

2)连续式模型

关注每个过程域的能力,一个组织对不同的过程域可以达到不同的过程域能力等级(简称 CL)。​CMMI 中包括 6 个过程域能力等级。

我和计算机技术与软件专业技术资格(水平)考试愉快第10天--软件设计师

3)统一过程(UP)

统一过程定义了 4 个技术阶段及其产品:

(1)起始阶段:专注于项目初创活动;

(2)精化阶段:在理解了最初领域范围之后需要进行需求分析和架构演进;

(3)构建阶段:关注系统的构建,产生实现模型;

(4)移交阶段:关注软件提交方面的工作,产生软件增量。

随着 UP 的阶段进展,每个核心工作流的工作量发生变化,4 个技术阶段由主要里程碑所终止。

(1) ​起始阶段:生命周期目标;

(2)精化阶段:生命周期架构;

(3)​构建阶段:初始运作功能;

(4)移交阶段:产品发布。