第2章 系统开发和运行基础知识

【知识要点】

1.软件工程基本理论:软件、软件工程、软件生命周期、软件生命周期模型。

2.结构化分析与设计。

3.面向对象分析与设计。

4.项目管理基础:软件质量度量模型、Gantt图、PERT图、软件文档、能力成熟度模型。

5.软件测试与系统维护。

【学习内容】

2.1 软件工程概述

2.1.1 软件、软件工程

软件是计算机程序、数据及其相关文档的集合。计算机程序是按照事先设计的功能和要求,以算法为基础而编写的,能够使计算机进行信息处理并产生一定结果的指令执行序列。数据是程序指令序列操作的对象。文档是用自然语言或形式化语言编写的文字资料和图表,用于描述程序的开发、维护和使用方法。

按照计算机的控制层次,软件可分为系统软件和应用软件。系统软件是计算机管理自身软、硬件资源,是计算机系统各个部件、软件、数据协调、高效工作,提高计算机的使用效率并为计算机用户提供各种服务的基础软件。应用软件是在特定领域内开发,主要为特定目的服务,用于解决一些实际应用问题的软件。

软件工程是指应用计算机科学、数学以及管理科学等原理,以系统的、规范的、可度量的工程化方法解决软件系统问题的工程科学,着重于如何构建软件系统。方法、工具和过程是软件工程的3要素。

2.1.2 软件生命周期及其模型

软件生命周期是指从软件提出开发要求开始到软件最终被淘汰为止的整个存在时期。

软件生命周期可以划分为问题定义、可行性研究、需求分析、概要设计(总体设计)、详细设计、编码、测试和维护8个阶段。

软件生命周期可以概括地划分为4个活动时期:软件分析时期(问题定义、可行性研究、需求分析)、软件设计时期(概要设计、详细设计)、编码与测试时期、运行与维护时期。

软件生命周期模型描述了软件开发过程中各种活动是如何执行的,可以表示各种活动的实际工作方式、同步和制约关系,以及动态特性。常见的软件生命周期模型有瀑布模型、原型模型、增量模型、螺旋模型、喷泉模型等。

2.1.3 软件开发的方法与工具

软件开发方法是使用定义好的技术集和符号表示组织软件生产过程的方法。常见的软件开发方法有结构化方法、Jackson方法、维也纳方法、面向对象方法等。

软件开发工具是支持软件开发和维护活动的软件或者平台,包括需求分析工具、设计工具、编码工具、测试工具、版本控制工具等。

2.2 结构化分析与设计

结构化方法的指导思想是自顶向下、逐步求精原理,抽象和分解是结构化方法的基本原则。结构化方法使用的工具包括数据流图、数据字典、判定表、判定树和结构化语言等。

2.2.1 结构化分析

结构化分析是通过研究数据的流动和在各个环节上所进行的处理,分析和发现数据流以及加工,将面对的问题表达为数据流、加工以及文件、端点等成分构成的数据流图,用处理说明和数据字典对数据流和加工进行详细说明。结构化分析又称为数据流法。

结构化分析具体表现为以下需求分析文档:

软件需求规格说明书:从总体上概括软件的目标、所需功能和性能。

实体-关系图:描述数据实体间的关系。

数据流图:描绘数据流的变换及其功能。

状态转换图:表明外部事件引发的系统功能。

数据字典:定义出现的所有数据对象。

结构化分析的步骤包括建立现行系统的物理模型、抽象出当前系统的逻辑模型、建立目标系统逻辑模型、进一步补充和优化等。

2.2.2 结构化设计

从软件工程管理的角度结构化设计分为概要(总体)设计和详细设计。从角度出发,概要设计和详细设计又包含了体系结构设计、数据结构设计、过程设计和界面设计等。

软件结构化设计遵循的基本原则是模块化、抽象和细化。

模块化是将软件划分为若干个模块,每个模块完成一个特定的任务或子功能,且每个模块可以独立开发和测试,最后按某种方法组装成一个完整的程序。模块化过程中模块的划分和设计需要考虑信息隐藏、耦合度和内聚度。

结构化程序设计使用顺序、选择和重复3种基本控制结构构造程序。

结构化设计的图表工具有层次图、结构图、IPO图、程序流程图、NS图、PAD图、判定表、判断树等。

2.2.3 面向数据流的设计

概要设计阶段需要完成软件结构的设计,最基本的方法是面向数据流的设计,即将需求分析阶段设计的数据流图转换成为软件结构。转换的方法取决于数据流的类型:变换流和事务流,相对应的是变换分析和事务分析。

2.2.4 面向数据结构的设计

详细设计阶段需要完成数据结构的设计,所使用的方法称为面向数据结构的设计,即根据输入、输出的数据结构,按照一定的规则映射成软件的过程描述,其目的是得到对程序处理过程的描述。典型的面向数据结构的设计方法包括Jackson方法和Warnier方法。

2.3 面向对象分析与设计

面向对象方法的基本思想是从现实世界中客观存在的事物出发来构造软件系统,并在系统构造中运用人类的自然思维方式。

2.3.1 面向对象基本概念

面向对象方法是一种运用对象、类、继承、封装、聚合、消息传递、多态性等概念构造系统的软件开发方法。

对象是系统中用来描述客观世界中事物的一个实体,是构成系统的基本单位。对象由属性和方法两个部分构成。属性是一个数据项或数据结构,用来描述对象的静态特征;方法是对象可以执行的行为,用来描述对象的动态特征。

类是对具有相同属性和行为的一组对象的统一的、抽象的描述。

封装包含两层含义:一是将对象的全部属性和方法结合在一起,形成一个不可分割的独立单元;二是将对象内部的信息隐藏起来,对外屏蔽内部细节,仅保留有限的对外接口与外界保持联系。

继承就是子类自动地拥有父类中定义的全部属性和方法。

多态指一个方法作用不同的对象可以有不同的解释,产生不同的执行结果。这与数据类型和参数有关。

2.3.2 面向对象分析

面向对象分析的目的是获得问题的正确理解,从而尽可能完整、准确地确定系统的功能和性能要求。面向对象分析综合考虑数据和功能处理,抽象和整理用户需求,建立问题域的精确模型。面向对象分析的主要步骤是研究问题域和用户需求、确定对象和类、标识结构、构建系统总体模型、定义属性、定义方法。

2.3.3 面向对象设计

面向对象设计将面向对象分析建立的分析模型转换为设计模型,以便进入面向对象程序设计阶段。面向对象设计遵循模块化、信息隐藏、抽象、弱耦合、强内聚的原则。

2.3.4 统一建模语言UML

UML是一种标准的软件建模语言,用图形符号表达面向对象设计,是用于对一个软件系统产品进行可视化描述、详细描述、构造以及文档化的语言。

UML的结构包括UML的语义和UML 的表示法。UML语义描述基于UML的精确元模型定义。UML表示法包括事物、关系和图。UML的事物包括对象类、包、交互和注释;UML的关系分为依赖、关联、泛化和实现;UML拥有5类共9种视图:用例图、静态图(类图、对象图)、行为图(状态图、活动图)、交互图(时序图、协作图)、实现图(组件图、部署图)。

2.4 软件质量与项目管理

2.4.1 软件质量

ANSI将软件质量定义为软件产品或服务的特性和特征的整体,取决于满足给定需求的能力。典型的软件质量模型有3种:Boehm模型、McCall模型和ISO/IEC9126模型。

软件质量采用的是三层度量模型,包括质量要素、评价准则和度量。

2.4.2 软件测试

软件测试是在软件投入运行前,对软件的需求分析、设计、实现编码所进行的最终审查,是为了发现错误而执行程序的过程。

软件测试方法可分为静态测试和动态测试,动态测试又分为黑盒测试(功能测试或数据测试)和白盒测试(结构测试)。

软件测试过程包括单元测试(模块测试)、集成测试(组装测试)、确认测试和系统测试。

2.4.3 系统维护

运行管理是进行系统维护的前提。系统维护主要包括硬件维护、软件维护和数据维护。

2.4.4项目管理

软件项目管理是以软件项目为管理对象,对软件开发的范围、任务、风险、所需资源、工作与成本、进度安排等进行科学、规范地管理活动。

软件规模和工作量的度量是制订软件项目的基础。软件规模的独立方法主要有代码行和功能点。软件开发的工作量以人月为计量单位。

在项目的进度安排中,主要采用一些图表工具表达各个任务之间的相互依赖关系。常用的工具有关键日期表、甘特图、网络图等。

软件项目的组织形式主要有主程序员组、民主制程序员组和现代程序员组。

能力成熟度模型CMM用于衡量软件企业的开发管理水平。CMM模型将软件过程的成熟度分为5个等级:初始级、可重复级、定义级、管理级和优化级。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值