计算机软考信息系统监理师教程笔记版(9)
信息系统与软件工程
(一)开发方法
常用开发模型:
瀑布模型(生命周期法,是生命周期法中最常用的开发模型),它将开发的过程分成软件计划、需求分析、软件设计、程序编码、软件测试和运行维护6个阶段,规定了它们自上而下,适用于大型软件开发过程。
变换模型(演化模型)是在快速开发一个原型的基础上,根据用户提出的反馈和建议,对原型进行改进,直到演化成最终软件产品。
螺旋模型:将瀑布模型和变换模型相结合,并增加了风险分析;
喷泉模型:为软件复用和生存周期中多项开发活动的集成提供了支持,是一种面向对象的开发方法;
智能模型:基于知识的软件开发模型,与专家系统结合在一起,是一种基于规则的系统;
V模型:以测试为中心的开发模型;
增量模型:融合了瀑布模型的基本成分(重复应用)和原型实现的迭代特征;它采用随着时间的进展而交错的线性序列。其最大优点是人员分配灵活;
RAD(快速应用开发)模型,是一个增量型的软件开发过程模型,强调极短的开发周期。它是采用基于构件的开发方法。
CBSD(基于构件的开发)模型,是利用模块化方法,将整个系统模块化。整个过程分为需示分析和定义、体系结构设计、构件库的建立、应用软件构建、测试和发布5个阶段。
构件工具常见的有Microsoft的DCOM , Sun的EJB和OMG的CORBA.
原型方法模型,是适用于产品开发的早期阶段需求不确定时采用。其常分为水平原型(功能导航)和垂直原型(实现部分功能,重点在复杂算法的实现)两种
XP方法模型,是一种轻量(敏捷)、高效、低风险、柔性、可预测、科学且充满乐趣的软件开发方式。它由价值观(沟通、简单、反馈、勇气)、原则(小步快走)、实践和行为四个部分组成
RUP(Rational Unified Process)方法模型,是一个统一的软件开发过程,也是一个通用过程框架,能应用于多领域的项目开发,它也是基于构件,使用的建模语言是UML,它有三个特点:用例驱动、以基本架构为中心、迭代和增量。其软件过程在时间上分为四个阶段:初始阶段---细化阶段----构建阶段----交付阶段。
可行性研究主要从5个方面:经济可行性、技术可行性、法律可行性、执行可行性、可选择性。
(二)需求分析
需求分析主要是用来确定开发软件的功能、性能、数据和界面等要求;需求分析常用方法:结构化分析方法-----软系统方法(代表方法:Checkland)----面向对像分析方法(OOA)----面向问题域的分析(PDOA)
数据流图(DFD)是结构化分析中的重要方法和工具,是表达系统内数据的流动并通过数据流描述系统功能的一种方法。它有4种基本符号:数据流(用名字+箭头来表示)、加工(用圆圈来表示)、数据存储(用直线表示)和外部实体(数据源或数据终点,用标有名字的方框表示),同时数据流图遵循“自顶向下,逐层分解”的原则。
数据字典是关于数据的信息集合,也就是对数据流图中包含的所有元素的定义集合。数据字典和数据流图共同构成了系统的逻辑模型。
(三)软件设计
软件设计分为概要设计(也叫高层设计,是将软件需求转化为数据结构和软件的系统结构,常采用结构图、层次图和HIPO(层次图加输入/处理图)来描述)和详细设计(也叫低层设计,是对结构图进行细化,得到详细的数据结构与算法,常使用程序流程图、盒图、PAD图(问题分析图)及PDL(伪码)等工具来描述)
软件设计包含4个即独立又相互联系的活动:即数据设计、体系结构设计、接口设计(界面)、过程设计。
结构化设计包括体系结构设计、接口设计、数据设计和过程设计等任务,是一种面向数据流的设计方法,采用自顶向下、逐步求精和模块化。
(四)程序编写
程序设计风格应从源程序文档化(程序的注释点源程序的1/3到1/2)、数据说明、语句结构和输入/输出方法4个方面,力图做到程序的可读性。
(五)软件测试(较)
软件测试是软件质量保证的主要手段之一,测试并不仅仅是为了要找出错误,再则没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
软件测试的类型:动态测试(黑盒测试法(测试人员不清楚程序的内部结构和处理过程的一种测试,常见的方法有:等价类划分、边界值分析、错误猜测和因果图,测试的重点在于是否实现了某种功能)、白盒测试法(测试人员清楚程序的内部结构和处理过程的一种测试,常见的方法有:基本路径测试、循环覆盖测试、逻辑覆盖测试,测试的重点在于检验内部控制结构和数据结构是否有错,即结构)和灰盒测试法(界于黑盒与白盒测试之前的一种方法,测试的目的在于评价软件质量好与坏))和静态测试(即不在机器上运行,采用人工检测和计算机辅助静态分析的手段进行检测,实践证明,30%~70%的逻辑设计和编码错误都能发现,其主要方法有:桌前检查(程序员自己检查自己编写的程序)、代码审查(他人(一个小组)对程序员编写的程序进行检查)、代码走查)
注:静态测试也可以实现白盒测试,如使用人工检查代码方法来检查代码的逻辑问题。
根据测试的目的、阶段不同,可将测试分为单元测试(模块测试,由开发人员自已负责)、集成测试(测试的是模块之间的协作性,其测试计划应在概要设计阶段完成)、确认测试(验证软件的功能、性能及其他特性是否与用户要求一致,其测试计划应在需求分析阶段完成)和系统测试(整个项目的各种都集成在一起的测试,其测试计划应在需求分析阶段完成)
验收测试内容通常包括:功能测试、性能测试、压力测试、配置测试、平台测试、安全性测试、恢复测试及可靠性测试等。
(六)软件维护
软件维护点整个软件生命周期的60%~80,常见的维护类型分为三种:改正性维护(为了纠正软件存在的错误和缺陷所进行的维护)、适应性维护(为了使软件适应外部环境(新的软硬件、数据库环境)所进行的维护)、完美性维护(添加、扩充、修改软件功能、提高软件性能所进行的维护),除上述之外,还有一种预防性维护。
(七)软件项目管理
软件质量特性标准有两种:ISO/IEC 9126软件质量模型和MC Call 软件质量模型。
CMM(能力成熟度模型)和CMMI(能力成熟度模型集成)是软件过程改进的两种标准。
SCM(软件配置管理)是一种标识、组织和控制修改的技术。
软件文档是信息系统产品的重要组成部发,对于开发人员,管理人员及用户都是盐分重要的辅助工具。文档常分为三类:开发文档、管理文档、用户文档。
(八)面向对象方法
对象是指一组属性及这组属性上折相关操作;对象由三部分组成:对象名、属性和操作(方法);
类是一组具有相同属性和相同操作的对象集合;类由三部分组成:类名、属性和操作(方法)
继承是在某个类的层次关联中不同的类共享属性和操作的一种机制。继承是面向对象方法区别于其他方法的一个核心思想。
封装的基本单位是对象,封装的三大优点:能减少耦合;类内部能实现自由改变;有一个更清楚的接口。
消息是对象间通信的手段,一个消息通常包括接收对象名、调用的操作名和适当的参数。
多态性是指同一个操作作用于不同的对象时产生不同的执行结果。
构件(组件)是一个功能相对独立的具有可重用价值的软件单元,其特点是可重用性。
面向对象分析常用方法:1、Coad/Yourdon方法(1990年提出的)、2、Booch方法;3、OMT方法;4、OOSE(以用例代取数据流图)5、UML(统一建模语言,UML2.0包含14种图,类与之间,存在关联关系“ ”,依赖关系“--------”见p160)