Posted on 2008-02-10 22:40
Norvid 阅读(441)
评论(0) 编辑 收藏 所属分类:
读书笔记
基本概念
应该如何为对象类分配职责(responsibility)?对象之间应该如何协作?什么样的类应该做什么样的事情?这些都是系统设计中的关键问题。解决这些问题的一个设计方法是职责驱动设计(responsibility-driven design)。
Scrum:由Ken Schwaber和Jeff Sutherland提出,旨在寻求充分发挥面向对象和构建技术的开发方法,是对迭代式面向对象方法的改进,适用于需求难以预测的复杂商务应用产品的开发。
Feature-Driven Development(FDD):由Jeff de Luca和Peter Coad提出,是一个模型驱动、短迭代的开发方法,适用于变换周期短的业务应用开发。所谓的特征点(Feature)时一些用户眼中有用的小功能项,一个特征点能在两周或更短的时间内被实施,且产生可见的、能运行的代码。
Lean Development:这一思想诞生于20世纪40年代默契。当时由于缺乏足够的资金,刚成立不久的丰田公司制定了丰田生产系统,其主旨是消除浪费。该方法的原则是消除浪费、增加学习、尽量推迟决策、尽快交付、授权团队、潜入完整性和认识整体。
在OO开发中,至关重要的能力是熟练地为软件对象分配职责。
分析(analysis)强调的是对问题和需求的调查研究,而不是解决方案。如一个系统应该如何使用它?它应该具有哪些功能?
设计(design)强调的是满足需求的概念上的解决方案(软件、硬件两方面),而不是其实现。设计思想通常排斥底层或“显而易见”的细节。
有益的分析和设计可以概括为:做正确的事(分析)和正确地做事(设计)。
面向对象分析(Object-oriented analysis)过程中,强调的是在问题领域内发现和描述对象(或概念)。如飞机、航班、飞行员等。
面向对象设计(Object-oriented design)过程中,强调的是定义软件对象以及他们如何协作以实现需求,即职责和协作。如对象有哪些属性以及方法。
面向对象分析关注从对象的角度创建领域描述,面向对象分析需要鉴别重要的概念。其分析结果可以表示为领域模型(Domain model),展示重要的领域概念和对象。领域模型也可以成为概念对象模型(conceptual object model)。
顺序图(sequence diagram),描述协作的常见表示法,它展示软件对象之间的消息流,和由消息引起的方法调用。
设计类图(design class diagram),描述类的属性和方法,从而展示类定义的静态视图。
统一建模语言(UML)是描述、构造和文档化系统制品的可视化语言。
应用UML的三种方式:1)UML作为草图:非正式的、不完整的图,借助可视化语言的功能,用于探讨问题或者解决方案空间的复杂部分;2)UML作为蓝图:相对详细的设计图,用于逆向工程或者代码工程(即前向工程);3)UML作为编程语言:用UML完成软件系统可执行规格说明。
敏捷建模(Agile Modeling)强调了UML作为草图的方式,这也是使用UML的普通方式,而且通常对时间投入具有高回报。
应用UML的三种透视图:1)概念透视图:用图来描述现实世界或关注领域中的事物;2)规格说明透视图:用图来描述软件的抽象物或具有规格说明和接口的构件,但是并不约定特定实现;3)实现透视图:用图来描述特定技术(如Java)中的软件实现。
概念类(conceptual class):现实世界中的概念或事物。在概念或本质透视图中使用。
软件类(software class):无论在过程还是方法中,都表示软件构件在规格说明或实现透视图中的类。
实现类(implementation class):特定OO语言中的类。
小结
介绍了什么是面向对象的分析与设计,以及综述了UML和其可视化建模。