一、结构化方法
结构化方法 也称 生命周期法。 结构化方法的开发过程一般是先把系统功能视为一个大的模块,再根据系统分析与设计的要求对其进一步的模块分解或组合。
精髓:自顶向下、逐步求精、模块化设计。
结构化方法的特点
(1)开发目标清晰化。(结构化方法)的系统开发遵循“用户第一”的原则,开发中要保持与用户的沟通,取得与用户的共识。
(2)开发工作阶段化。
(3)开发文档规范化。
(4)设计方法结构化。
1、结构化分析SA
结构化分析SA根据(分解与抽象)的原则,按照系统中(数据处理)的流程,用数据流图DFD来建立系统的功能模型,使用抽象模型的概念,按照系统内部数据传递、变换的关系,自顶向下,逐层分解。
2、结构化设计SD
SD可进一步细分为(概要设计)和(详细设计)2个阶段,它根据(模块独立性)原则和(系统结构)准则,将(数据流图DFD)转换为(系统结构图 = 模块结构图 = 控制结构图),用系统结构图来建立系统的物理模型,描述系统分层次的模块结构,以及模块之间的通信与控制关系。
尤其适用于:变换型结构 和 事务型结构 的目标系统。
3、结构化程序设计SP
使用某种程序设计语言以代码的方式,将每个模块的功能用相应的标准控制结构(顺序、选择、循环)表示出来。
结构化方法适用
特别适合于(数据处理)领域的问题。
结构化方法不适应
不适应于 规模较大、比较复杂的系统开发。
结构化方法的缺点
(1)开发周期长。
(2)难以适应需求变化。
(3)很少考虑数据结构。面向数据流,注重系统功能的分解与抽象,以(模块)为系统开发的核心。
二、面向对象方法
(信息隐蔽)是面向对象方法的一个核心思想。
面向对象方法使系统的描述及信息模型的表示与客观实体相对应,符合人们的思维习惯,有利于系统开发过程中用户与开发人员的交流沟通,缩短开发周期,提供系统开发的正确性和效率。
OO方法拥有不同的分支体系,OMT、OOSE、Booch已经统一成为(统一建模语言UML)。
1、OMT(对象建模技术)方法
OMT方法使用了建模的思想,讨论如何建立一个实际的应用模型,包括:
对象模型 — 主要用(对象图)实现;描述系统中对象的静态结构、对象之间的关系、属性、操作。确定发生的客体
动态模型 — 主要用(状态图)实现;描述与时间和操作顺序有关的系统特征。什么时候发生
功能模型 — 主要用数据流图DFD实现;描述一个计算如何从输入值得到输出值,不考虑计算的次序。发生了什么
2、OOSE(面向对象的软件工程)方法
OOSE在OMT的基础上,对(功能模型)进行了补充,提出了(用例)的概念。
(用例)是OOSE中的重要概念,在开发各种模型时,它是贯穿OOSE活动的核心,描述系统的需求及功能。
用例描述系统参与者(既可以是用户,也可以是系统)对于系统的使用情况,从参与者的角度来确定系统的功能。
- 分析、确定系统的参与者;
- 参与者的主要任务和使用方式;
- 识别出所使用的事件,即用例;
OOSE的开发活动主要分为三类:
3、Booch方法
最先描述了OO方法的基础问题,认为系统开发是一个螺旋上升的过程,每个周期包括4个步骤:
(1)标识类和对象
(2)确定类的对象的含义
(3)标识关系
(4)说明每个类的接口和实现
Booch方法的开发模型包括:
(类图、对象图、模块图、进程图)用来描述系统的构成和结构;
(状态图、顺序图)用来描述对象的状态变化和交互过程。
4、Coad/Yourdon方法
强调OOA和OOD采用完全一致的概念和表示法,使分析和设计之间不需要表示法的转换。特点是简炼、易学,对于对象、结构、服务的认定比较系统、完整,可操作性强。
OO基本概念
(1)对象
对象是指(一组属性)及这组属性上的(专用操作)的封装体。
属性可以是一些数据,也可以是另一个对象。
对象由三部分组成:对象名(标识)、属性、方法(操作)。
(2)类
类是一组具有相同(属性和方法)的对象的集合。
一个类中的每个对象都是这个类的一个实例。
抽象类不能被实例化,抽象方法只需声明,不需实现。
(3)继承
(继承)是在某个类的层次关联中,不同的类(共享属性和方法)的一种机制。
父类与子类的关系是一般与特殊的关系,一个父类中可以有多个子类,这些子类都是父类的特例。父类描述了这些子类的公共属性和方法,子类还可以定义自己的属性和方法。
(继承)是OO方法区别于其他方法的一个核心思想。
A是B的子类,B是A的泛化。
(4)封装
封装的单位是(对象),对象之间只能通过(接口)进行信息交流。目的是使对象的定义和实现分离。
(5)消息
一个对象通过向另一个对象发送消息来请求其服务。
一个消息包括:提供服务的(对象标识)、服务类型、相关参数。
(6)多态
参数多态:同一对象、方法能以一致的形式用于不同的类型。
包含多态:定义于不同类中的同名方法的多态行为,最常见的例子是子类型化。包含多态一般需要运行时的类型检查。
过载多态:overload,同一方法名表示不同的功能。
强制多态:通过语义操作,把一个属性的类型加以改变。
1、面向对象的分析OOA
构造问题的(对象模型)。
2、面向对象的设计OOD
3、面向对象的程序设计OOP
三、面向服务方法
对象按照业务功能进行分组,就形成了构建。
面向服务的开发方法 将接口的定义与实现进行解耦,并将跨构件的功能调用暴露出来。
三个递进的抽象层次:面向对象 —> 基于构建 —> 面向服务
1、与OO方法的比较
服务基础架构基于 粗粒度、松散耦合、基于标准的服务, SO方法加强了系统的灵活性、复用性、可演化性,强调系统功能的标准化和构件化。
对象:侧重描述程序概念上的内容,粒度级别主要集中在类级,抽象级别低;
服务:强调业务本身,使用与实现细节无关的标准化接口来构建;
SO的系统并不排除使用OOD来构建单个应用,OO和SO的目标都是为了实现构件化,但思考的角度不同,它们之间是螺旋上升的关系。SO是OO的具有跳跃性的升级版本,强调的是业务本身,看重的是最终结果,对企业来讲,更有现实意义。
2、SO方法的抽象级别
SO方法有3个主要的抽象级别:操作、服务、业务流程
(1)操作:位于(最低层)的操作代表单个(逻辑单元)的事物,执行操作通常会导致(读、写或修改)一个或多个(持久性数据)。服务的操作类似于对象的方法,它们包含特定的结构化接口,并且返回结构化的响应;
(2)服务:代表操作的(逻辑分组);
(3)业务流程:最高层,是为了实现特定业务目标而执行的一组长期运作的动作或活动,包括依据一组业务规则按照有序序列执行的一系列操作。
3、面向对象的分析与设计SOAD
其结构分为三层:
(1)基础设计:采用(面向对象分析与设计)的思想,主要目标是能够进行快速而有效的设计、开发,以及执行灵活且可扩展的(底层服务构件)。
(2)应用结构:采用(企业架构EA)的理论框架。以表示业务服务的(逻辑构件)为中心,并且集中于定义服务之间的接口和服务级协定。
(3)业务组织:采用(业务流程建模BPM),以服务流程编排模型为补充,SOAD中的流程建模必须与(用例)设计保持同步。
4、服务建模
服务建模的过程实际上是进行(流程分解),可以分为三个实施阶段:
(1)服务发现:自上而下—业务领域分解;自下而上—已有资产分析;中间对齐—业务目标建模
(2)服务规约:对候选服务进行分类
(3)服务实现。
四、原型化方法
结构化方法 和 面向对象方法 有一个共同点,即在系统开发初期必须明确系统的功能要求,确定系统边界。
快速原型法:根据用户初步需求,快速建立一个系统模型展示给用户,在此基础上与用户交流。
快速原型适合于:
(1)需求不明确的系统开发
(2)分析层面难度大、技术层面难度不大
1、原型的概念
原型是系统的一个早期可运行版本,它反映最终系统的部分重要特性,开发者根据用户意见对原型加以改进,不断试验、纠错、使用、评价、修改,适应需求变更。
2、原型的分类
水平原型:主要用在界面上
垂直原型:主要用在复杂的算法实现上
抛弃式原型:主要用在解决需求不确定性、二义性、不完整性、含糊性
演化式原型:主要用在易于升级和优化的场合,适用于Web项目
3、原型法的优点
(1)使系统开发周期缩短、成本降低、风险降低、速度加快、获得较高的综合开发效益;
(2)以用户为中心开发,用户参与程度高,能够有效的确认用户需求,增加了用户满意度,提高了系统开发的成功率;
(3)用户参与了系统开发的全过程,对系统的功能和结构容易理解和接受,有利于系统的移交,有利于系统的运行与维护
4、原型法的缺点
(1)开发环境要求高
(2)管理水平要求高