现在的位置: 首页 > 综合 > 正文

“实战OO”学习笔记

2013年03月01日 ⁄ 综合 ⁄ 共 3834字 ⁄ 字号 评论关闭

作者:徐建祥(netpirate@gmail.com

时间:2006/01/11

来自:http://www.anymobile.org

 

“实战OO系列文章是徐锋发表在2004年《程序员》杂志的一系列关于面向对象的入门文章,通过图书馆的实例,深入浅出地讲述了基于软件建模技术的面向对象开发过程。介绍了面向对象的分析(OOA)和设计(OOD),并对OOP做了指导,让你迅速了解OO的威力,成为你分析系统和设计解决方案的工具。

 

全系列包括:

1)域建模

2)用例建模

3)鲁棒性分析

4)交互建模

5)过程总结

6)部署与实施

7)补遗

 

1、  问题域建模,概念模型

 

辅助性的,静态模型,帮助开发团队了解客户所处的世界。

 

从现实问题域中找到最有代表性的概念对象;整理成类图;改成文字描述,基本完成术语表。

 

a、  概念模型的目的是让开发团队对问题域,业务知识建立正确的理解;

b、  概念模型是在开发过程中产生出来的第一个系统的静态模型。

 

2、  用例建模,用例模型

 

反映系统行为的,动态模型,帮助开发团队明白客户想解决什么问题。

 

Ivar Jacobson:“用例实例是在系统中执行的一系列动作,这些动作将生成特定参与者可见的价值结果。一个用例定义一组用例实例。”

 

a、  需求(功能特性)捕获,编号(FEAT***),以便进行跟踪管理;

b、  识别参与者(actor,与系统交互,系统之外的所有事物);

c、  合并需求,编号实例(UC**),决定用例的优先级;

d、  细化用例描述:搭框架;细化事件流(沟通);补缺漏(确认)。

 

1、   用例名称:

      新增书籍信息(UC01

2、   简要说明:

      录入新购书籍信息,并自动存储建档。

3、   事件流:

      3.1 基本事件流

      3.2 扩展事件流

4、   非功能需求:

5、   前置条件:

      用户进入图书管理系统。

6、   后置条件:

      完成新书信息的存储建档。

7、   扩展点:

      无。

8、   优先级:

      最高(满意度5,不满意度)

  1)前置条件:指在用例启动时,参与者(Actor)与系统应置于什么状态,这个状态应该是系统能够检测到的、可观测的;

  2)后置条件:用例结束时,系统应置于什么状态,这个状态也应该是系统能够检测得到的、可观测的;

  3)基本事件流:基本事件流是对用例中常规、预期路径的描述,也被称为Happy day场景,这时大部分时间所遇到的场景;它将体现系统的核心价值;

  4)扩展事件流:主要是对一些异常情况、选择分支进行描述。

 

注:非核心实体无须过渡展开,如四轮马车,将新增、修改、查询、删除,抽象为管理;可以通过包来实现用例层次。

 

3、  Robustness鲁棒分析,健壮性分析

 

Ivar Jacobson 1991引入,分析与设计之间的桥梁。

草图,使得开发者对于系统细节了解得更加清楚。

 

3.1 分析的作用:

a、  正确性检查;

b、  完整性检查;

c、  持续发现对象;

d、  对象确定;

e、  初步设计:将分析的元素,类分为实体对象,控制对象,边界对象。类似MVC

 

实体对象:来自域模型,通常映射到数据表或文件中。

控制对象:抽象应用程序的执行逻辑。

边界对象:用来完成参与者与系统之间交互的对象。

 

3.2 分析规则:

a、参与者,只能够通过边界对象与系统交互;

b、边界对象,只能与控制对象或参与者交互;

c、实体对象,也只能与控制对象交互;

d、控制对象,可以与边界对象、实体对象交互,但不能与参与者交互。

 

4、  交互建模

 

序列图,协作图,详细设计阶段。通过寻找对象之间的交互关系,从而进行“行为分配”。

Ivar Jacobson:“只有在所有的用例为所有事件进程建立了交互模型之后,才可以确定已经发现系统所需的每个对象所扮演的角色,以及它们的责任。”

 

序列图Sequence diagram:体现事件发生的次序。

协作图Collaboration diagram:通过使用局部图指明了各个对象之间是如何静态相连的。

 

a、  罗列实体对象;

b、  罗列边界对象和参与者,放置在左边;

c、  添加个类的属性与方法;

d、  引入基础类;

e、  质量评审;

1)    低耦合:耦合性是指两个类之间的连接强度,耦合性越低,独立性越高,越灵活。

2)    高内聚:内聚性是指一个类的属性和方法高度地集成,内聚性越高,设计越合理。

3)    效率:衡量的要点在于解决方案的执行效率是否满足系统要求。

4)    完整性:是指在任何环境下都可以重复使用。

5)    简单性:类越简单,出错的可能性越小,系统的灵活性和可维护性也越好。

可以使用一些例如OCPSRPDIPLSP原则等经典的面向对象设计原则来衡量。

Robert C Martin《敏捷软件开发》

f、   用设计模式进行优化。

 

5、  过程总结

 

现代软件开发过程:

 

a、  RUPRational公司,Rose软件,“用例驱动、以体系结构为中心,迭代、增量的软件开发过程。”

RUP软件开发分为四个阶段:

1)      初始阶段:理解和分析需求,生产用例模型框架,对优先级较高的用例进行细化;

2)      精化阶段:完成部分优先级最高的用例开发,并完善出所有的用例模型;

3)      构建阶段:分为多个迭代,逐步完成不同优先级的用例开发;

4)      交付阶段:进行各种功能、性能测试,进行产品化、部署,完成整个系统的开发工作。

 

b、  XP,极限编程,“敏捷建模”,以最大化发挥人的能量为核心目标,以“小步快走”的逻辑知道开发,12个最佳实践充分体现了其迭代式开发的特点。

 

User Story用户故事是Kent Beck在极限编程(XP)方法论中推荐的最佳实践之一。它由客户参与编写,说明他们需要系统为他们做什么,一般用客户的术语写就,三句话左右。

敏捷开发:

1) 直接的沟通和交流;

2) 分步实施、及时交付、及时测试;

3) 从简单开始,逐步完善;

4) 积极主动;

5) 接受变化,响应变化,甚至从头再来。

 

c、  FDDFeature Drive Develop,特征驱动开发,Together创始人Peter Coad所创。通过特征来制定开发计划,也是每日构建为核心,强调按特征分步开发和交付。一个特征就是一个小的、具有客户价值的功能,通常表示为<action><result><object>

 

迭代开发过程:

 

a、  第一次迭代

1)      捕获需求

2)      建立初始的领域模型

3)      建立用例模型框架

4)      制定开发计划

b、  第二次迭代

1)      关键用例的Robustness分析与交互建模

2)      体系结构设计

3)      建立类模型

4)      关键用例的开发与测试

5)      完善用例模型

c、  n次迭代

完成所有用例的分析、设计与开发。

d、  最后的迭代

1)      整体测试:进行各种功能、性能和压力测试。

2)      部署与安装:生成相应的部署图。

3)      产品化:进行一些产品化的包装。

注:每一次迭代之后,都应该交付一个可以运行的中间版本。

 

6、  部署和实施

 

构件图:表现系统物理结构。

部署图:说明系统部署结构。

 

“构件是系统中可替换的物理部分,它包装了实现而且遵从并提供一组接口的实现。”

1)      实施构件:构成一个可执行系统必要和充分的构件,如DLLEXE文件。

2)      工作产品构件:开发过程的产物,包括创建实施构件的源代码和数据文件。

3)      执行构件:是作为一个正在执行的系统的结果而被创建的,如COM+对象。

 

构件图:包括构件、接口以及各种关系。

1)      对源代码进行建模:表示出各个不同源程序文件之间的关系。

2)      对可执行的发布建模:表示出各个执行部分之间的信赖和关联关系。

3)      对物理数据库建模:表示出各种类型的数据库、表之间的关系。

4)      对可调整的系统建模:如负载均衡,故障恢复等。

 

部署图或实施图的关键组成部分:节点和连接;构件和连接。

1)      对处理器和设备建模;

2)      对构件的分步建模:通常用来可视化地指定其构件的位置和协作关系。

 

7、  其它

 

活动图:面向对象的流程图。

状态图:用来描述一个特定对象的所有可能状态及其引起状态转移的事件。

 

活动图按照简繁程度划分:

1)      基本活动图。

2)      实例说明。

3)      带泳道的活的图。

a、  业务建模阶段:针对的是职责对象。

b、  系统设计状态阶段:针对的是对象,使用较少,一般使用顺序图。

 

链接:

 

徐锋专栏--无名空间

http://blog.csdn.net/fjxufeng/

 

用例驱动的需求过程实践(徐锋)

http://www.ccw.com.cn/cio/research/info/htm2003/20031223_13XEG.asp

http://www.sawin.cn/doc/SA/REQ/blueski313.htm

 

广告管理系统中的UML分析与设计

http://www.itpmi.com/Article.asp?ArtID=425

 

销售管理系统的UML分析与设计

http://51cmm.csai.cn/ANALYZE/no000081.htm

抱歉!评论已关闭.