什么是分析和设计
分析强调的是对问题和需求的调查研究,而不是解决方案。例如,如果需要一个新的在线交易系统,那么应该如何使用它?它应该具有哪些功能?
设计强调的是满足需求的概念上的解决方案(在软件方面和硬件方面),而不是其实现。例如,对数据库方案和软件对象的描述。设计思想通常排斥底层或显而易见的细节。最终设计可以实现,而实现则表达了真实和完整的设计。
面向对象分析与设计优势
OOAD方法要求在设计中要映射现实世界中指定问题域中的对象和实体。面向对象能够更好的去理解你要做的东西应该如何去做。
UML的作用
UML作为草图:非正式的,不完整的图,借助可视化语言的功能,用于探讨问题或解决方案空间的复杂部分。
UML作为蓝图:相对详细的设计图,用于:逆向工程,即以UML图的方式对现有代码进行可视化和代码生成。
UML作为编程语言:用UML完成软件系统可执行规格说明。可执行代码能够被自动生成,但不像通常一样为开发者所见或修改,人们仅使用UML编程语言进行工作。
核心UML图:
-
用例图:展示系统的核心功能及其交互的用户。用户称之为“活动者”(Actor)。用例使用椭圆表示。为简化建模过程,用例图可标注优先级。
-
类图:表现类的特征。类图描述了多个类、接口的特征,以及对象之间的协作与交互。由一个或多个矩形区域构成,内容包括:
–类型(类名)
–属性(可选)
–操作(可选)
-
对象图:表现对象的特征。对象图展现了多个对象的特征及对象之间的交互。
-
组件图:表现软件组件之间的关系。
-
部署图:表现用于部署软件应用的物理设备信息。
-
时序图:捕捉一段时间范围内多个对象之间的交互信息。强调消息交互的时间顺序。
-
协作图:表现一定范围内对象之间协作的信息。强调与信息交流的对象之间的组织结构。
-
状态转换图:强调一个对象在不同事件触发时,其内部状态的转变过程。
-
活动图:描述活动的流程。
从软件本质的角度,解释软件范围(需求)控制的可行性
由于软件本身的复杂性、不可见性、不一致性、可变性,软件范围多数情况下对于客户和开发者都是模糊的,在满足客户基本需求的情况下,砍去用户不明确的需求,完成基本的功能,再通过多次迭代实现完整的软件设计。