软件工程基础知识
软件工程概述
软件工程指的是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,目的是提高软件生产率、提高软件质量、降低软件成本。
1、计算机软件
计算机软件指的是计算机系统中的程序及其文档。程序是计算任务的处理对象和处理规则的描述。任何以计算机为处理工具的任务都是计算任务。
按照软件的应用领域,将计算机软件分为以下几类,包括:
1)系统软件;
2)应用软件;
3)工程/科学软件;
4)嵌入式软件;
5)产品线软件;
6)Web应用软件(WebApp);
7)人工智能软件;
8)开放计算;
9)网络资源;
10)开源软件。
2、软件工程基本原理
美国著名的软件工程专家B.W.Boehm于年提出了软件工程的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个成熟度级别。
(2)能力成熟度模型(CMMI)。
CMMI提供了两种表示方法:阶段式模型和连续式模型。
1)阶段式模型
结构类似CMM,它