第三章 信息系统开发方法
一、信息系统开发生命周期
三、计算机辅助软件工程
二、信息系统开发方法学
四、软件成熟度模型
一、信息系统开发生命周期
1、信息系统开发生命周期的阶段划分
1)工作流程
系统规划
(规划分析师)
系统设计
(系统设计员)
系统实施
(系统建造者)
系统维护
(系统维护人员)
系统分析
(系统分析员)
需求分析规格说明书
应用开发项目
可行性分析报告
系统设计规格说明书
产品系统
现行系统的缺陷
和细节
面向过程的观点
生命周期是一种用于规划、执行和控制信息系统开发项目组织和管理的方法。
是工程学原理在信息系统开发中的具体应用。
用户要求 需求分析 可行性 研究 评审 评审
功能模块
总体结构
数据库
设计
制定测试
计划
评审
功能模块
逐步细化
模块接
口设计
模块过
程设计
制定模块
测试方案 评审 程序编码
测试 评审 系统维护
评审
可行性
研究报告
需求
说明书 概要设计 说明书
数据库设
计说明书 测试计划
详细设计
说明书
测试报告
面向控制的观点
2)各阶段任务描述
系统规划阶段
系统分析
研究业务目标
定义信息结构
评估信息域
?研究业务目标:研究具体的业务需求。
?定义信息结构:包括数据结构、网络结构、应用结构、人员结构、技术结构
?评估信息域:方法有:企业系统规划法( BSP法)、战略数据规划法、关键成
功因子法
主要活动包括:可行性分析、需求分析、系统建模。
?可行性分析:经济、技术、管理等方面;
?需求分析:功能需求、性能分析、可靠性、安全性、资源约束等
系统设计
系统实施
包括总体设计和详细设计
?总体设计:构造软件的总体结构;
?详细设计:输入 /输出、人机界面、数据库设计、程序设计等。
?编程
?测试
?用户培训
?新旧系统切换
系统维护
包括修正性维护、适应性维护、完善性维护、预防性维护等
2、瀑布模型
系统规划
系统分析
系统设计
编码
测试
系统维护
( 1)瀑布模型特点
?强调阶段的划分及其顺序性
?各阶段工作及其文档的完备性
?是一种严格线性的、按阶段顺序的、逐步细化的开发模式。
?致命缺点是;无法早期发现分析、设计阶段的错误。
是 20世纪 70年代由 W.Royce提出的一种生命周
期模型
( 2)瀑布模型的基本原理
A、用户积极参与
用户 系统 分析员
1、提出需求
2、反馈需求
3、修改需求
4、确认需求
B、严格划分阶段和活动
C、文档标准化
?文档是软件产品的重要组成部分;
?文档是通信和交流的手段;
?文档是对开发过程起控制作用 ;
?文档是系统维护的依据
E、分而治之的思想
系统
子系统 2 子系统 1 子系统 n
模块 n 模块 1
D、设立检查点
每个阶段,都从以下四个方面评估:功能、预算、进度、质量
( 3)瀑布模型的优缺点
优点
?结构简单明了,应用广泛。
?需求分析的绝对重要性
?阶段的顺序性和依赖性
?逐步求精的结构化方法
?质量保证措施
缺点
?只适用于需求明确的问题
?未能解决系统分析到系统设计之间的鸿沟
?文档编写工作量极大
?不能很好适应用户需求的变化
3、原型化方法
( 1)快速原型法的概念和思想
三类原型
?抛弃式,目的达到即被抛弃,原型不作最终产品
?演化式,系统的形成和发展是逐步完成的。每次迭代要对系统
重新进行规格说明、设计、实现和评价。
?增量式,系统是一次一段地增量构造的,与演化式的区别在于
是在软件总体设计基础上进行
用户需求定义是系统开发非常重要的方面。原型法法有助于获
取用户需求。
( 2)基于快速原型法的系统开发生命周期
需求分析
快速设计
建立原型
用户评价原型
修改原型
生成产品
( 3)基于快速原型法的优点和缺点
优点
?减少了开发时间,提高了开发效率
?使信息需求的定义更为直观、简单
?通过对原型的不断修改和完善,增加了用户的满意度
?减少了系统开发费用
缺点
?分析和设计的深度不够
?第一个工作原型可能并非最优方案
?原型法开发的系统不具灵活性
?工作原型不易修改
( 4)应用快速原型法的前提条件
?系统需求在系统开发前不能准确说明,用户需求变化快;
?有快速的系统建造工具;
?需要实际的、可供用户参与的系统模型;
?用户能够积极参与系统开发;
?需要有一个原型工作环境;
?具有一批具有丰富的问题域知识和开发经验的开发人员。
4、统一开发过程
统一开发过程 RUP是由 Rational软件公司开发的一种软件工程过程。其目
的是在预定的进度和预算范围内,开发出满足用户需要的高质量软件,
( 1)软件开发问题的症状和原因
?对用户需求理解不够精确
?对需求的改变束手无策
?程序块不兼容、软件不易维护或扩展
?项目严重缺陷的发现较晚
?软件质量低劣,性能无法忍受
?开发组人员各自开发,若有人改变部分软件,将很难再进行重组
症
状
原
因
?模糊不清的交流
?脆弱的架构,无法控制变化的产生和传播,过度复杂
?需求、设计和实现之间的不一致等
( 2)统一过程的特点
A、用例驱动
以用例获取功能需求,所有用例构成用例模型,描述系统全部功能。
B、以体系结构为中心
体系结构刻画系统的整体设计,包含重要的静态和动态特征。
C、迭代和增量
( 3) RUP的生命周期
A,RUP的二维开发模型( P78)
系统开发生命周期由一系列循环组成,每次循环包括 4个阶段:启动
(初始)、精细规划(细化)、构建(构造)、模型转移(交付)
B、开发过程各个阶段主要任务
RUP是一个迭代增量式的开发过程,分块逐次开发和提交,每
次迭代包含分析、设计、实现和测试的整个过程。
启动阶段
该阶段目标是分析问题域,建立完整的体系结构基础,编制项目计划。
该阶段为系统开发建立了管理基准,并使项目小组能在构建阶段中进行
衡量。主要任务是设计出系统的构架;进行风险分析,并制定相应对策;
制定开发计划。
精细规划阶段
该阶段目标是为系统建立商业案例,确定项目边界。回答以下问题,
?明确为用户提供的基本功能(由用例模型表示)
?系统的架构(即包括的主要子系统)
?项目开发的计划、费用、风险等。
该阶段确定是否启动该项目
建构阶段
该阶段由多次渐增开发组成,主要目标是开发应用程序,并集成为产品,
测试各功能。该阶段最终确定该项目是否可以在测试环境中部署。
所有 UML技术均可用于该阶段。用例模型确定工作范围;概念层类图刻
画用例的概念;活动图描述用例的工作流情况;交互图描述实现用例时
类之间的交互作用关系;包图描述系统的逻辑组成。
模型转移阶段
建立企业模型,并在企业模型中定义过程、角色和责任。
C,RUP的核心工作流
企业模型
该阶段应确保软件对最终用户是可用的。
需求确认
理解系统所解决问题的定义和范围。
逻辑模型
由设计类和描述组成。设计类构成了具有良好接口的设计包、子系统;
描述体现类的对象如何协同实现用例功能。
物理模型
以组件形式实现类和对象;以组件为单元进行测试,并将组件集成为
系统
测试
验证对象间的交互作用;验证组件的正确集成;验证需求被正确实现
配置 /实现
跟踪和管理软件创建过程中的版本,并成功地将软件分发给最终用户
二、信息系统开发方法学
1、结构化方法学
( 1)结构化方法产生的背景
( 2)结构化方法的基本概念
A、基本思想
面向过程;模块化原则;自顶向下,逐层分解;信息隐藏。
B、结构化方法的组成
结构化系统分析、结构化系统设计、结构化程序设计
?结构化分析是以过程为中心,建立用户需求模型的技术;
?结构化设计是确定软件系统由哪些模块组成,这些模块以什
么方式联结在一起。
( 3)结构化方法的基本原则
抽象原则
形式化原则
分解原则
层次组织原则
信息隐藏原则
模块化原则
逻辑独立性原则
( 4)结构化方法的主要工具
结构化分析 结构化设计
D F D 结构图
数据字典 系统流程图
过程描述(结构
化英语、判定
树)
伪码
E -R 图
2、面向对象方法学
( 1)什么是面向对象
面向对象技术是 IT发展的一个里程碑
面向对象技术带来软件生产方式的根本变化
面向对象方法使软件生产由人工集约的生产方式转化为资源集约
的生产方式。
人工集约转变为资源集约的三个条件,
?模块化
?可复用性
?可维护性
它的高效性来自两个方面,
?减少开发者与用户的语义歧意;
?软件可重用 (reuse)。
面向对象技术对提高软件质量和效率有显著效果
( 3)传统开发方法存在的问题
问题空间与求解空间不一致
问题空间与求解空间在结构上的同构,即一致性,是人们长期以来一
直寻找的系统分析、设计、实现的方法学。
面向对象是一种归纳 — 演绎的方法学,即是一个从特殊到一般
(归纳),由一般到特殊(演绎)的过程。
结构化方法学造成不一致的两个主要方面,
?语言鸿沟;
?冯, 诺依曼机与问题域之间的鸿沟。
系统分析到系统设计的过渡困难
过程模型和数据模型分别建立,忽视系统的行为特征
( 4)面向对象方法学的发展历史
面向对象方法中,从分析、设计、实施始终讨论的是一个模型,
从分析到设计的过渡是一个渐进的、逐步细化的过程。
结构化方法中,过程和数据模型可能存在不一致,且忽视行为特
征。面向对象方法将数据、过程、行为三个特征集成在一个模型中。
面向对象方法首先从面向对象语言的研制开始,逐步演化为面向对
象分析与设计。
OOPL( object oriented programming language)的产生
? 20世纪 60年代 ———— Simula67,引入类、继承;
?20世纪 70年代 ———— CLU、并发 Pascal,Ada,Modula-2。支持封装;
?70年代 ~80年代 ———— SmallTalk-80,标志面向对象程序设计思想的成熟;
?80年代 ~90年代 ———— 繁荣时期,出现 C++, Objective-C,Object Pascal,
Eiffel等
?90年代后期 ———— SUN推出网络环境下的 Java。
OOA&OOD的产生,OO方法发展到软件工程的前期阶段
( 1) Booch方法
? 给定的抽象层次上识别类和对象;
?识别这些对象和类的语义;
?识别这些类和对象之间的关系;
?实现类和对象
丰富的符号体系:类图、对象图、状态
转移图、时态图、模块图、进程图。
分
析
与
设
计
步
骤
( 2) Coad/Yourdon方法
严格区分面向对象分析和面向对象设计。
?分析阶段:分为 5个层次:对象 — 类型层、结构层、主题层、属性、服
务;
?设计阶段:在分析阶段的 5个层次上,又引入 4个部分:问题域部分、
人机交互部分、任务管理部分、数据管理部分
( 3) OMT方法
从 3个视角描述系统,相应提供三种模型:对象模型、动态模型、功能模型。
?对象模型:描述对象的静态结构和它们之间的关系,主要概念包括:类、
属性、操作、继承、关联、聚集等
?动态模型:描述系统随时间变化的方面。主要概念包括:状态、子状态和
超状态、事件、行为、活动等
?功能模型:描述系统内部数据值的转变,主要概念包括:加工、数据存储、
数据流、控制流、角色等。
( 4) Jacobson方法
该方法涉及整个软件生命周期,包括:需求分析、设计、实现和测试 4阶段。
引入 use case(用例)概念,并将用例模型与以下 5种模型相结合,
?领域对象模型:根据领域来表示用例模型;
?分析模型:通过分析来构造用例模型;
?设计模型:依据具体化的设计来实现用例模型;
?测试阶段:测试具体化的用例模型。
面向对象方法统一的时代 — UML的产生与发展
? 1993年,Rational公司开始设计 UML方法;
?1996年正式推出 UML;
?1997年,被 OMG(对象技术组织)推荐为行业标准。
UML综合了上述几种方法的优点,统一了语义和表示方法。
( 5)面向对象的基本概念
A、对象、属性、方法和封装
? 对象,是问题域或实现域中某些事物的一个抽象,它反映该事物在
系统中需要保存的信息和发挥的作用;是一组属性和有权对这些属性
进行操作的一组服务的封装体。
?属性,描述对象的具体特征。属性有属性名和属性值。
?方法,或称服务、操作。是系统为满足用户需求采取的行动,是系
统对事件的响应。
?封装,是把对象的属性和服务结合成一个独立的系统单位,并尽可
能隐蔽对象的内部细节。
B、对象 /类之间的联系
? 泛化 — 特化关系
?整体 — 部分关系
?关联关系
?对象之间的信息传递
C、类、继承、泛化 — 特化
类 (又称对象类),是具有相同属性和服务的一组对象的集合,它为
属于该类的全部对象提供统一的抽象描述,其内部包括属性和服务两个
主要部分。
一个类的上层可有超类,下层可有子类,形成类的层次结构。这种层
次具有继承性。
继承:子类的对象拥有超类的全部属性与服务,此一特性称为继承性
如果类 B继承类 A,称类 A 为类 B的父类、超类、基类;而类 B则称为类 A
的子类或派生类。
泛化 — 特化关系也称一般 — 特殊关系或分类关系。 是由一组具有继承
关系的类所组成的结构,它通过收集公共特性并把这种特性扩充至特例
之中来显示现实世界事件的通用性和专用性。
D、整体 — 部分联系(聚集)
它描述对象之间的组成关系,即一个或一些对象是另一个对象的组成
或部分。
E、关联
关联有时也称为实例连接或链。实例连接反映了对象和对象之间的静
态关系。
F、消息和消息传递
消息是一个对象向其他对象发出的服务请求,它应该包含以下信息:
提供服务的对象标识、服务标识、输入信息和回答信息。
G、多态性
多态性是指一般类中定义的属性或服务被特殊类继承之后,可以具有
不同的数据类型或表现出不同的行为。这使得同一属性或服务名在一般
类及其各个特殊类中具有不同的语义。
( 6)面向对象的基本机制
A,OO法的基本原理和三大要素
人类认识客观世界的基本原理和过程,
原理:先研究事物,而后研究过程
两个基本过程:从特殊到一般的归纳过程;从一般到特殊的演绎过程。
面向对象的三大要素,
面向对象 =对象 +对象类 +类继承性
面向对象的方法是现实世界在计算机世界的直接映射,是人类认知过
程的计算机模拟。
B、面向对象方法学中的主要机制
? 组织机制,对象及属性、整体与部分、类及成员
?消息通信机制,反映事物之间的相互联系和相互作用。
?抽象机制,把代表事物属性的数据抽象和代表事物行为的功能抽
象有机结合为一体。
?继承机制(可复用机制),是表达相似性的机制
?封装或信息隐藏,对象使用者只知道对象封装界面的信息,对象
内部实现是隐蔽的。
?多态
?动态绑定
?类型定义机制
( 7)面向对象方法与软件复用技术
软件复用是指在两次或多次不同的软件开发过程中重复使用相同或相
近软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设
计过程、需求分析文档甚至领域知识。这种可复用的元素称为软构件。
A、软件复用
B、可复用构件
构件是具有一定功能,能够独立工作或同其他构件装配起来协调工作
的程序体,构件的使用同他的开发、生产无关。
可复用构件既可以从旧的软件中提取,也可以是专门为复用而开发。
目前有代表性的构件技术有,CORBA,Java 平台,COM+。
3、面向对象方法学与结构化方法学的比较
结构化方法
系统是过程的集合
过程与数据实体交
互过程接受输入并
产生输出
面向对象方法
系统是交互对象的
集合,对象与人或
其他对象交互发送
与响应消息
( 1)认识问题的出发点不同
A、从逻辑模型的角度看
结构化方法
从过程的角度建立
信息系统模型
面向对象方法
从对象的角度建立
信息系统模型
B、从实现的角度看
结构化方法
程序 =算法 +数据结构
过程模型和数据模型
分别建立
面向对象方法
对象 =算法 +数据结构
程序 =对象 +对象 +…,
过程(算法)和数据
封装成为对象
( 2)认识系统和描述系统的方式不同
A、结构化设计思想 应用系统
子系统 1
模块 1
子系统 2 子系统 n
模块 n 模块 2
函数 1 函数 n 函数 2
自顶向下,逐步求精的
设计方法
B、面向对象的设计思想
将设计分成问题域和求解域两层。对问题域进行需求分析时寻找
对象及其之间的联系;求解域模型在对象模型基础上增加实现域中的
对象获得。
C、两者设计思想的差异
结构化方法
面对怎么做,采取
划分子程序、模块等。
从大到小,自顶向下
面向对象方法
首先回答, 做什么,,
再解决, 怎么做,
从小到大,自底向上
( 3)分析到设计的过渡
结构化方法
分析过程的数据流程图
不能自然转换到设计阶
段的软件结构图
面向对象方法
将分析、设计、实现
三个过程完整、有机,
紧密地结合在一起
( 4)对变化的适应能力
结构化方法
侧重于过程建模,过程是系
统中极不稳定的因素对变化
的适应能力差
面向对象方法
侧重于对象建模,对象是
系统中比较稳定的因素,因
此对变化适应能力较好
( 5)对复用的支持
结构化方法
缺乏复用标准,对复用支持差
面向对象方法
对复用支持度高,提供复用
机制和复用标准
三、计算机辅助软件工程
1,CASE的基本概念与发展历史
( 1) CASE的产生背景
( 2) CASE的基本概念
基本思想:把系统工程的原理应用到软件的开发维护中去。 CASE是能够支持
软件开发生命周期一个或多个阶段自动化的计算机程序。它使开发工具与
开发方法学统一和结合起来,从开发者的角度支持信息系统各种开发 技术
和方法的一种技术。
( 3) CASE的功能
?支持不同的软件开发方法学
?支持软件开发生命周期各阶段:上游、下游以及项目管理
?具有文档出版功能和文字、图形编辑功能。
?支持软件部件的重用,支持开发信息资源共享。
2,CASE体系结构
CASE
下游 CASE 上游 CASE
系统设计 系统分析 系统规划 系统实施 系统维护
企业战略规划
信息系统战略
规划
其他
数据建模
过程建模
对象建模
资源库支持
其他
结构化英语
屏幕 /报表设计
原型化设计
数据库设计
测试
其他
代码生成器
应用生成器
其他
逆向工程
设计恢复
其他
中央资源库
项目管理工具
( 1)上游 CASE
A、用于系统规划的 CASE
主要帮助系统分析员采集、存储、组织并分析业务模型。
B、用于系统分析和设计的 CASE
用于系统分析的图形工具主要有,UML、数据流程图 DFD、数据
字典 DD、判定表、判定树、层次图 HC、输入处理输出 IPO等。
常见工具,Microsoft Visio,Sybase公司的 PowerDesigner,IBM 公
司的 Rational Rose等。
( 2)下游 CASE
A、程序设计工具
Java开发工具 Jbuilder、微软公司的 Visual Studio
B、测试工具
自动化测试工具 Panorama、性能测试工具 Rational Quantify
3)项目管理 CASE
Microsoft Project项目管理软件、配置管理系统 Microsoft Visual SourceSafe(VSS)
版本控制工具 Concurrent Versions System (CVS)系统
四、软件成熟度模型
1、基本概念
软件过程
人们用以开发和维护软件及其相关产品的一系列活动,包括软件工程活动和软
件管理活动。
软件过程能力
描述开发组织通过执行其软件过程能够实现预期结果的程度。
软件过程性能
表示开发组织遵循其软件过程所得到的实际结果。
软件过程成熟度
一个特定的软件过程被明确和有效地定义、管理、测量和控制的程度。
软件能力成熟度等级
软件开发组织在走向成熟度的途中几个具有明确定义的、表征软件过程能力
成熟度的平台。每一个等级包含一组过程目标,当其中一个目标被达到时,表明
软件过程的 一个重要方面得到实现,从而导致软件开发组织的软件过程能力进一
步增长。
关键过程域
相互关联的若干软件实践活动和有关基础设施的集合。
关键实践
对关键过程域的实施起关键作用的方针、规程、措施、活动以及相关基础设
施的建立、实施和检查。
2、软件成熟度框架
1)不成熟软件开发组织的问题
?软件过程没有一个明确、稳定的定义,由开发者和管理者在开发过程中临时拼
凑。
?实施软件过程的管理方式是反应式的,即在遇到问题后才不得不作出反应。
?不能科学地制定进度和预算,在进度滞后时,往往以牺牲产品质量为代价。
?不存在判断产品质量,以及解决产品质量问题的软件过程。
2)成熟的软件开发组织的特点
?具有全组织范围的控制软件开发和维护过程的能力
?对产品质量的分析和判断有客观、定量的依据。经理们时刻监控着软件产品的
质量和顾客满意度。
3)软件过程成熟度框架
是描述一条从无序的、混乱的过程达到成熟的、有纪律的过程的进化途径,
把软件过程、软件过程能力、软件过程性能和软件过程成熟度等概念集为一体。
3、软件能力成熟度模型
1初始级
2可重复级
3已定义级
4已管理级
5优化级
个别
过程
规范化
过程
标准且
一致的
过程
可预见
的过程
持续的改进过程
软件能力成熟度模型描述了软件过程不断成熟的框架。模型把软件过程从无
序到有序的进化过程分成几个阶段,将这些阶段排序,形成一个逐层提高的平台,
使每个平台的过程能力为达到下一更高的平台打下基础。
1)各成熟度等级的行为特征
1初始级
组织的过程能力不可预测,软件过程经常被改变或修订。进度、预算、资源
消耗和产品质量不可预测。性能依赖于个人的能力,且随个人具有的技能、知识
和动机的不同而变化。
2可重复级
软件项目的计划和跟踪是稳定的,并能重复以前的成功。
3已定义级
该级别的过程能力可概括为已标准化的和一致的。无论软件工程活动还是管
理活动,过程都是稳定的和可重复的。对成本、进度和功能实现均已受控制,软
件质量可以跟踪。整个组织对项目定义的软件过程中的活动、角色和职责具有共
同的和一致的理解。
4已管理级
该级别的 过程能力可概括为定量地可预测的。开发组织对软件产品和过程都设
置了定量的质量目标,并经常对此进行测量和检查。通过将过程性能的变化限制
在定量的可接受范围内,项目对其产品质量和过程进行仔细而严格的控制。
5优化级
该级别的 过程能力可概括为过程不断改进。开发组织不断改善组织内各项过程
性能,既可通过在现有过程基础上增量式改进;也可采用新技术、新方法的革新
办法,使软件过程不断得到改进。
2)成熟度等级的内部结构
成熟度等级
关键过程域
关键实践类
关键实践
过程能力
目标
有关职责和目的
基础设施或活动
包含 指示
达到 组织成一些
阐述
描述
包含若干
每个等级由几个关键过程域组成,这些关键过程域共同形成一种软件过程能力。
因此,软件成熟度模型各个等级的设计,首先是确定关键过程域及其目标,然后
详细设计和描述所有关键实践。
初始级( 1)
可重复级( 2)
软件项目跟踪和监督
软件需求管理
软件计划管理
软件配置管理
软件质量保证
软件子合同管理
已定义级( 3)
可管理级( 4)
软件质量管理
定量过程管理
优化级( 5)
过程变更管理
技术革新管理
缺陷预防
3) SEI CMM1.1各等级的关键过程域
同行评审
组间协调
软件产品工程
集成软件管理
培训大纲
组织过程定义
组织过程焦点
软件外协管理
软件版本管理
基本软件工程
4)成熟度模型的应用
软件过程评估
确定一个组织当前软件过程的状态,确定组织所面临的急需解决的与软件过程
有关的问题,进而有步骤地实施软件过程改进,使组织的软件过程能力不断提高。
软件能力评估
识别合格的能完成软件工作的承制方,或者监控承制方软件开发工作中软件过
程的状态,进而指出承制方应改进之处。
一、信息系统开发生命周期
三、计算机辅助软件工程
二、信息系统开发方法学
四、软件成熟度模型
一、信息系统开发生命周期
1、信息系统开发生命周期的阶段划分
1)工作流程
系统规划
(规划分析师)
系统设计
(系统设计员)
系统实施
(系统建造者)
系统维护
(系统维护人员)
系统分析
(系统分析员)
需求分析规格说明书
应用开发项目
可行性分析报告
系统设计规格说明书
产品系统
现行系统的缺陷
和细节
面向过程的观点
生命周期是一种用于规划、执行和控制信息系统开发项目组织和管理的方法。
是工程学原理在信息系统开发中的具体应用。
用户要求 需求分析 可行性 研究 评审 评审
功能模块
总体结构
数据库
设计
制定测试
计划
评审
功能模块
逐步细化
模块接
口设计
模块过
程设计
制定模块
测试方案 评审 程序编码
测试 评审 系统维护
评审
可行性
研究报告
需求
说明书 概要设计 说明书
数据库设
计说明书 测试计划
详细设计
说明书
测试报告
面向控制的观点
2)各阶段任务描述
系统规划阶段
系统分析
研究业务目标
定义信息结构
评估信息域
?研究业务目标:研究具体的业务需求。
?定义信息结构:包括数据结构、网络结构、应用结构、人员结构、技术结构
?评估信息域:方法有:企业系统规划法( BSP法)、战略数据规划法、关键成
功因子法
主要活动包括:可行性分析、需求分析、系统建模。
?可行性分析:经济、技术、管理等方面;
?需求分析:功能需求、性能分析、可靠性、安全性、资源约束等
系统设计
系统实施
包括总体设计和详细设计
?总体设计:构造软件的总体结构;
?详细设计:输入 /输出、人机界面、数据库设计、程序设计等。
?编程
?测试
?用户培训
?新旧系统切换
系统维护
包括修正性维护、适应性维护、完善性维护、预防性维护等
2、瀑布模型
系统规划
系统分析
系统设计
编码
测试
系统维护
( 1)瀑布模型特点
?强调阶段的划分及其顺序性
?各阶段工作及其文档的完备性
?是一种严格线性的、按阶段顺序的、逐步细化的开发模式。
?致命缺点是;无法早期发现分析、设计阶段的错误。
是 20世纪 70年代由 W.Royce提出的一种生命周
期模型
( 2)瀑布模型的基本原理
A、用户积极参与
用户 系统 分析员
1、提出需求
2、反馈需求
3、修改需求
4、确认需求
B、严格划分阶段和活动
C、文档标准化
?文档是软件产品的重要组成部分;
?文档是通信和交流的手段;
?文档是对开发过程起控制作用 ;
?文档是系统维护的依据
E、分而治之的思想
系统
子系统 2 子系统 1 子系统 n
模块 n 模块 1
D、设立检查点
每个阶段,都从以下四个方面评估:功能、预算、进度、质量
( 3)瀑布模型的优缺点
优点
?结构简单明了,应用广泛。
?需求分析的绝对重要性
?阶段的顺序性和依赖性
?逐步求精的结构化方法
?质量保证措施
缺点
?只适用于需求明确的问题
?未能解决系统分析到系统设计之间的鸿沟
?文档编写工作量极大
?不能很好适应用户需求的变化
3、原型化方法
( 1)快速原型法的概念和思想
三类原型
?抛弃式,目的达到即被抛弃,原型不作最终产品
?演化式,系统的形成和发展是逐步完成的。每次迭代要对系统
重新进行规格说明、设计、实现和评价。
?增量式,系统是一次一段地增量构造的,与演化式的区别在于
是在软件总体设计基础上进行
用户需求定义是系统开发非常重要的方面。原型法法有助于获
取用户需求。
( 2)基于快速原型法的系统开发生命周期
需求分析
快速设计
建立原型
用户评价原型
修改原型
生成产品
( 3)基于快速原型法的优点和缺点
优点
?减少了开发时间,提高了开发效率
?使信息需求的定义更为直观、简单
?通过对原型的不断修改和完善,增加了用户的满意度
?减少了系统开发费用
缺点
?分析和设计的深度不够
?第一个工作原型可能并非最优方案
?原型法开发的系统不具灵活性
?工作原型不易修改
( 4)应用快速原型法的前提条件
?系统需求在系统开发前不能准确说明,用户需求变化快;
?有快速的系统建造工具;
?需要实际的、可供用户参与的系统模型;
?用户能够积极参与系统开发;
?需要有一个原型工作环境;
?具有一批具有丰富的问题域知识和开发经验的开发人员。
4、统一开发过程
统一开发过程 RUP是由 Rational软件公司开发的一种软件工程过程。其目
的是在预定的进度和预算范围内,开发出满足用户需要的高质量软件,
( 1)软件开发问题的症状和原因
?对用户需求理解不够精确
?对需求的改变束手无策
?程序块不兼容、软件不易维护或扩展
?项目严重缺陷的发现较晚
?软件质量低劣,性能无法忍受
?开发组人员各自开发,若有人改变部分软件,将很难再进行重组
症
状
原
因
?模糊不清的交流
?脆弱的架构,无法控制变化的产生和传播,过度复杂
?需求、设计和实现之间的不一致等
( 2)统一过程的特点
A、用例驱动
以用例获取功能需求,所有用例构成用例模型,描述系统全部功能。
B、以体系结构为中心
体系结构刻画系统的整体设计,包含重要的静态和动态特征。
C、迭代和增量
( 3) RUP的生命周期
A,RUP的二维开发模型( P78)
系统开发生命周期由一系列循环组成,每次循环包括 4个阶段:启动
(初始)、精细规划(细化)、构建(构造)、模型转移(交付)
B、开发过程各个阶段主要任务
RUP是一个迭代增量式的开发过程,分块逐次开发和提交,每
次迭代包含分析、设计、实现和测试的整个过程。
启动阶段
该阶段目标是分析问题域,建立完整的体系结构基础,编制项目计划。
该阶段为系统开发建立了管理基准,并使项目小组能在构建阶段中进行
衡量。主要任务是设计出系统的构架;进行风险分析,并制定相应对策;
制定开发计划。
精细规划阶段
该阶段目标是为系统建立商业案例,确定项目边界。回答以下问题,
?明确为用户提供的基本功能(由用例模型表示)
?系统的架构(即包括的主要子系统)
?项目开发的计划、费用、风险等。
该阶段确定是否启动该项目
建构阶段
该阶段由多次渐增开发组成,主要目标是开发应用程序,并集成为产品,
测试各功能。该阶段最终确定该项目是否可以在测试环境中部署。
所有 UML技术均可用于该阶段。用例模型确定工作范围;概念层类图刻
画用例的概念;活动图描述用例的工作流情况;交互图描述实现用例时
类之间的交互作用关系;包图描述系统的逻辑组成。
模型转移阶段
建立企业模型,并在企业模型中定义过程、角色和责任。
C,RUP的核心工作流
企业模型
该阶段应确保软件对最终用户是可用的。
需求确认
理解系统所解决问题的定义和范围。
逻辑模型
由设计类和描述组成。设计类构成了具有良好接口的设计包、子系统;
描述体现类的对象如何协同实现用例功能。
物理模型
以组件形式实现类和对象;以组件为单元进行测试,并将组件集成为
系统
测试
验证对象间的交互作用;验证组件的正确集成;验证需求被正确实现
配置 /实现
跟踪和管理软件创建过程中的版本,并成功地将软件分发给最终用户
二、信息系统开发方法学
1、结构化方法学
( 1)结构化方法产生的背景
( 2)结构化方法的基本概念
A、基本思想
面向过程;模块化原则;自顶向下,逐层分解;信息隐藏。
B、结构化方法的组成
结构化系统分析、结构化系统设计、结构化程序设计
?结构化分析是以过程为中心,建立用户需求模型的技术;
?结构化设计是确定软件系统由哪些模块组成,这些模块以什
么方式联结在一起。
( 3)结构化方法的基本原则
抽象原则
形式化原则
分解原则
层次组织原则
信息隐藏原则
模块化原则
逻辑独立性原则
( 4)结构化方法的主要工具
结构化分析 结构化设计
D F D 结构图
数据字典 系统流程图
过程描述(结构
化英语、判定
树)
伪码
E -R 图
2、面向对象方法学
( 1)什么是面向对象
面向对象技术是 IT发展的一个里程碑
面向对象技术带来软件生产方式的根本变化
面向对象方法使软件生产由人工集约的生产方式转化为资源集约
的生产方式。
人工集约转变为资源集约的三个条件,
?模块化
?可复用性
?可维护性
它的高效性来自两个方面,
?减少开发者与用户的语义歧意;
?软件可重用 (reuse)。
面向对象技术对提高软件质量和效率有显著效果
( 3)传统开发方法存在的问题
问题空间与求解空间不一致
问题空间与求解空间在结构上的同构,即一致性,是人们长期以来一
直寻找的系统分析、设计、实现的方法学。
面向对象是一种归纳 — 演绎的方法学,即是一个从特殊到一般
(归纳),由一般到特殊(演绎)的过程。
结构化方法学造成不一致的两个主要方面,
?语言鸿沟;
?冯, 诺依曼机与问题域之间的鸿沟。
系统分析到系统设计的过渡困难
过程模型和数据模型分别建立,忽视系统的行为特征
( 4)面向对象方法学的发展历史
面向对象方法中,从分析、设计、实施始终讨论的是一个模型,
从分析到设计的过渡是一个渐进的、逐步细化的过程。
结构化方法中,过程和数据模型可能存在不一致,且忽视行为特
征。面向对象方法将数据、过程、行为三个特征集成在一个模型中。
面向对象方法首先从面向对象语言的研制开始,逐步演化为面向对
象分析与设计。
OOPL( object oriented programming language)的产生
? 20世纪 60年代 ———— Simula67,引入类、继承;
?20世纪 70年代 ———— CLU、并发 Pascal,Ada,Modula-2。支持封装;
?70年代 ~80年代 ———— SmallTalk-80,标志面向对象程序设计思想的成熟;
?80年代 ~90年代 ———— 繁荣时期,出现 C++, Objective-C,Object Pascal,
Eiffel等
?90年代后期 ———— SUN推出网络环境下的 Java。
OOA&OOD的产生,OO方法发展到软件工程的前期阶段
( 1) Booch方法
? 给定的抽象层次上识别类和对象;
?识别这些对象和类的语义;
?识别这些类和对象之间的关系;
?实现类和对象
丰富的符号体系:类图、对象图、状态
转移图、时态图、模块图、进程图。
分
析
与
设
计
步
骤
( 2) Coad/Yourdon方法
严格区分面向对象分析和面向对象设计。
?分析阶段:分为 5个层次:对象 — 类型层、结构层、主题层、属性、服
务;
?设计阶段:在分析阶段的 5个层次上,又引入 4个部分:问题域部分、
人机交互部分、任务管理部分、数据管理部分
( 3) OMT方法
从 3个视角描述系统,相应提供三种模型:对象模型、动态模型、功能模型。
?对象模型:描述对象的静态结构和它们之间的关系,主要概念包括:类、
属性、操作、继承、关联、聚集等
?动态模型:描述系统随时间变化的方面。主要概念包括:状态、子状态和
超状态、事件、行为、活动等
?功能模型:描述系统内部数据值的转变,主要概念包括:加工、数据存储、
数据流、控制流、角色等。
( 4) Jacobson方法
该方法涉及整个软件生命周期,包括:需求分析、设计、实现和测试 4阶段。
引入 use case(用例)概念,并将用例模型与以下 5种模型相结合,
?领域对象模型:根据领域来表示用例模型;
?分析模型:通过分析来构造用例模型;
?设计模型:依据具体化的设计来实现用例模型;
?测试阶段:测试具体化的用例模型。
面向对象方法统一的时代 — UML的产生与发展
? 1993年,Rational公司开始设计 UML方法;
?1996年正式推出 UML;
?1997年,被 OMG(对象技术组织)推荐为行业标准。
UML综合了上述几种方法的优点,统一了语义和表示方法。
( 5)面向对象的基本概念
A、对象、属性、方法和封装
? 对象,是问题域或实现域中某些事物的一个抽象,它反映该事物在
系统中需要保存的信息和发挥的作用;是一组属性和有权对这些属性
进行操作的一组服务的封装体。
?属性,描述对象的具体特征。属性有属性名和属性值。
?方法,或称服务、操作。是系统为满足用户需求采取的行动,是系
统对事件的响应。
?封装,是把对象的属性和服务结合成一个独立的系统单位,并尽可
能隐蔽对象的内部细节。
B、对象 /类之间的联系
? 泛化 — 特化关系
?整体 — 部分关系
?关联关系
?对象之间的信息传递
C、类、继承、泛化 — 特化
类 (又称对象类),是具有相同属性和服务的一组对象的集合,它为
属于该类的全部对象提供统一的抽象描述,其内部包括属性和服务两个
主要部分。
一个类的上层可有超类,下层可有子类,形成类的层次结构。这种层
次具有继承性。
继承:子类的对象拥有超类的全部属性与服务,此一特性称为继承性
如果类 B继承类 A,称类 A 为类 B的父类、超类、基类;而类 B则称为类 A
的子类或派生类。
泛化 — 特化关系也称一般 — 特殊关系或分类关系。 是由一组具有继承
关系的类所组成的结构,它通过收集公共特性并把这种特性扩充至特例
之中来显示现实世界事件的通用性和专用性。
D、整体 — 部分联系(聚集)
它描述对象之间的组成关系,即一个或一些对象是另一个对象的组成
或部分。
E、关联
关联有时也称为实例连接或链。实例连接反映了对象和对象之间的静
态关系。
F、消息和消息传递
消息是一个对象向其他对象发出的服务请求,它应该包含以下信息:
提供服务的对象标识、服务标识、输入信息和回答信息。
G、多态性
多态性是指一般类中定义的属性或服务被特殊类继承之后,可以具有
不同的数据类型或表现出不同的行为。这使得同一属性或服务名在一般
类及其各个特殊类中具有不同的语义。
( 6)面向对象的基本机制
A,OO法的基本原理和三大要素
人类认识客观世界的基本原理和过程,
原理:先研究事物,而后研究过程
两个基本过程:从特殊到一般的归纳过程;从一般到特殊的演绎过程。
面向对象的三大要素,
面向对象 =对象 +对象类 +类继承性
面向对象的方法是现实世界在计算机世界的直接映射,是人类认知过
程的计算机模拟。
B、面向对象方法学中的主要机制
? 组织机制,对象及属性、整体与部分、类及成员
?消息通信机制,反映事物之间的相互联系和相互作用。
?抽象机制,把代表事物属性的数据抽象和代表事物行为的功能抽
象有机结合为一体。
?继承机制(可复用机制),是表达相似性的机制
?封装或信息隐藏,对象使用者只知道对象封装界面的信息,对象
内部实现是隐蔽的。
?多态
?动态绑定
?类型定义机制
( 7)面向对象方法与软件复用技术
软件复用是指在两次或多次不同的软件开发过程中重复使用相同或相
近软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设
计过程、需求分析文档甚至领域知识。这种可复用的元素称为软构件。
A、软件复用
B、可复用构件
构件是具有一定功能,能够独立工作或同其他构件装配起来协调工作
的程序体,构件的使用同他的开发、生产无关。
可复用构件既可以从旧的软件中提取,也可以是专门为复用而开发。
目前有代表性的构件技术有,CORBA,Java 平台,COM+。
3、面向对象方法学与结构化方法学的比较
结构化方法
系统是过程的集合
过程与数据实体交
互过程接受输入并
产生输出
面向对象方法
系统是交互对象的
集合,对象与人或
其他对象交互发送
与响应消息
( 1)认识问题的出发点不同
A、从逻辑模型的角度看
结构化方法
从过程的角度建立
信息系统模型
面向对象方法
从对象的角度建立
信息系统模型
B、从实现的角度看
结构化方法
程序 =算法 +数据结构
过程模型和数据模型
分别建立
面向对象方法
对象 =算法 +数据结构
程序 =对象 +对象 +…,
过程(算法)和数据
封装成为对象
( 2)认识系统和描述系统的方式不同
A、结构化设计思想 应用系统
子系统 1
模块 1
子系统 2 子系统 n
模块 n 模块 2
函数 1 函数 n 函数 2
自顶向下,逐步求精的
设计方法
B、面向对象的设计思想
将设计分成问题域和求解域两层。对问题域进行需求分析时寻找
对象及其之间的联系;求解域模型在对象模型基础上增加实现域中的
对象获得。
C、两者设计思想的差异
结构化方法
面对怎么做,采取
划分子程序、模块等。
从大到小,自顶向下
面向对象方法
首先回答, 做什么,,
再解决, 怎么做,
从小到大,自底向上
( 3)分析到设计的过渡
结构化方法
分析过程的数据流程图
不能自然转换到设计阶
段的软件结构图
面向对象方法
将分析、设计、实现
三个过程完整、有机,
紧密地结合在一起
( 4)对变化的适应能力
结构化方法
侧重于过程建模,过程是系
统中极不稳定的因素对变化
的适应能力差
面向对象方法
侧重于对象建模,对象是
系统中比较稳定的因素,因
此对变化适应能力较好
( 5)对复用的支持
结构化方法
缺乏复用标准,对复用支持差
面向对象方法
对复用支持度高,提供复用
机制和复用标准
三、计算机辅助软件工程
1,CASE的基本概念与发展历史
( 1) CASE的产生背景
( 2) CASE的基本概念
基本思想:把系统工程的原理应用到软件的开发维护中去。 CASE是能够支持
软件开发生命周期一个或多个阶段自动化的计算机程序。它使开发工具与
开发方法学统一和结合起来,从开发者的角度支持信息系统各种开发 技术
和方法的一种技术。
( 3) CASE的功能
?支持不同的软件开发方法学
?支持软件开发生命周期各阶段:上游、下游以及项目管理
?具有文档出版功能和文字、图形编辑功能。
?支持软件部件的重用,支持开发信息资源共享。
2,CASE体系结构
CASE
下游 CASE 上游 CASE
系统设计 系统分析 系统规划 系统实施 系统维护
企业战略规划
信息系统战略
规划
其他
数据建模
过程建模
对象建模
资源库支持
其他
结构化英语
屏幕 /报表设计
原型化设计
数据库设计
测试
其他
代码生成器
应用生成器
其他
逆向工程
设计恢复
其他
中央资源库
项目管理工具
( 1)上游 CASE
A、用于系统规划的 CASE
主要帮助系统分析员采集、存储、组织并分析业务模型。
B、用于系统分析和设计的 CASE
用于系统分析的图形工具主要有,UML、数据流程图 DFD、数据
字典 DD、判定表、判定树、层次图 HC、输入处理输出 IPO等。
常见工具,Microsoft Visio,Sybase公司的 PowerDesigner,IBM 公
司的 Rational Rose等。
( 2)下游 CASE
A、程序设计工具
Java开发工具 Jbuilder、微软公司的 Visual Studio
B、测试工具
自动化测试工具 Panorama、性能测试工具 Rational Quantify
3)项目管理 CASE
Microsoft Project项目管理软件、配置管理系统 Microsoft Visual SourceSafe(VSS)
版本控制工具 Concurrent Versions System (CVS)系统
四、软件成熟度模型
1、基本概念
软件过程
人们用以开发和维护软件及其相关产品的一系列活动,包括软件工程活动和软
件管理活动。
软件过程能力
描述开发组织通过执行其软件过程能够实现预期结果的程度。
软件过程性能
表示开发组织遵循其软件过程所得到的实际结果。
软件过程成熟度
一个特定的软件过程被明确和有效地定义、管理、测量和控制的程度。
软件能力成熟度等级
软件开发组织在走向成熟度的途中几个具有明确定义的、表征软件过程能力
成熟度的平台。每一个等级包含一组过程目标,当其中一个目标被达到时,表明
软件过程的 一个重要方面得到实现,从而导致软件开发组织的软件过程能力进一
步增长。
关键过程域
相互关联的若干软件实践活动和有关基础设施的集合。
关键实践
对关键过程域的实施起关键作用的方针、规程、措施、活动以及相关基础设
施的建立、实施和检查。
2、软件成熟度框架
1)不成熟软件开发组织的问题
?软件过程没有一个明确、稳定的定义,由开发者和管理者在开发过程中临时拼
凑。
?实施软件过程的管理方式是反应式的,即在遇到问题后才不得不作出反应。
?不能科学地制定进度和预算,在进度滞后时,往往以牺牲产品质量为代价。
?不存在判断产品质量,以及解决产品质量问题的软件过程。
2)成熟的软件开发组织的特点
?具有全组织范围的控制软件开发和维护过程的能力
?对产品质量的分析和判断有客观、定量的依据。经理们时刻监控着软件产品的
质量和顾客满意度。
3)软件过程成熟度框架
是描述一条从无序的、混乱的过程达到成熟的、有纪律的过程的进化途径,
把软件过程、软件过程能力、软件过程性能和软件过程成熟度等概念集为一体。
3、软件能力成熟度模型
1初始级
2可重复级
3已定义级
4已管理级
5优化级
个别
过程
规范化
过程
标准且
一致的
过程
可预见
的过程
持续的改进过程
软件能力成熟度模型描述了软件过程不断成熟的框架。模型把软件过程从无
序到有序的进化过程分成几个阶段,将这些阶段排序,形成一个逐层提高的平台,
使每个平台的过程能力为达到下一更高的平台打下基础。
1)各成熟度等级的行为特征
1初始级
组织的过程能力不可预测,软件过程经常被改变或修订。进度、预算、资源
消耗和产品质量不可预测。性能依赖于个人的能力,且随个人具有的技能、知识
和动机的不同而变化。
2可重复级
软件项目的计划和跟踪是稳定的,并能重复以前的成功。
3已定义级
该级别的过程能力可概括为已标准化的和一致的。无论软件工程活动还是管
理活动,过程都是稳定的和可重复的。对成本、进度和功能实现均已受控制,软
件质量可以跟踪。整个组织对项目定义的软件过程中的活动、角色和职责具有共
同的和一致的理解。
4已管理级
该级别的 过程能力可概括为定量地可预测的。开发组织对软件产品和过程都设
置了定量的质量目标,并经常对此进行测量和检查。通过将过程性能的变化限制
在定量的可接受范围内,项目对其产品质量和过程进行仔细而严格的控制。
5优化级
该级别的 过程能力可概括为过程不断改进。开发组织不断改善组织内各项过程
性能,既可通过在现有过程基础上增量式改进;也可采用新技术、新方法的革新
办法,使软件过程不断得到改进。
2)成熟度等级的内部结构
成熟度等级
关键过程域
关键实践类
关键实践
过程能力
目标
有关职责和目的
基础设施或活动
包含 指示
达到 组织成一些
阐述
描述
包含若干
每个等级由几个关键过程域组成,这些关键过程域共同形成一种软件过程能力。
因此,软件成熟度模型各个等级的设计,首先是确定关键过程域及其目标,然后
详细设计和描述所有关键实践。
初始级( 1)
可重复级( 2)
软件项目跟踪和监督
软件需求管理
软件计划管理
软件配置管理
软件质量保证
软件子合同管理
已定义级( 3)
可管理级( 4)
软件质量管理
定量过程管理
优化级( 5)
过程变更管理
技术革新管理
缺陷预防
3) SEI CMM1.1各等级的关键过程域
同行评审
组间协调
软件产品工程
集成软件管理
培训大纲
组织过程定义
组织过程焦点
软件外协管理
软件版本管理
基本软件工程
4)成熟度模型的应用
软件过程评估
确定一个组织当前软件过程的状态,确定组织所面临的急需解决的与软件过程
有关的问题,进而有步骤地实施软件过程改进,使组织的软件过程能力不断提高。
软件能力评估
识别合格的能完成软件工作的承制方,或者监控承制方软件开发工作中软件过
程的状态,进而指出承制方应改进之处。