在软件开发中,尤其是从事Java开发,核心代码可能很少。但是随着需求的修改,代码变得越来越难以维护。如何让自己的代码变的扩展性更加强呢?先从软件设计入手,拒绝没有设计而开始开发的产品。现在给大家将一个对于需求分析,和软件设计的工具UML。
软件建模包含两个方面:一是静态方面,一是动态方面。比如静态方面:服务器如何搭建,动态建模:通常是软件的交互。
三大要素:
过程:建立模型的过程,只有确切知道建模的过程才能够成功建立一个模型.
表示法:模型的表示,也就是建模语言,是建立模型的关键,例如UML就是软件的建模语言.
工具:通过建模工具来方便建立模型.
首先确定问题域,我们要干什么。引出一个开始问题:设计一个石头、剪刀、布的游戏。
规则:石头对剪刀,石头赢。石头对布,布赢。剪刀对布,剪刀赢。相同就重新来。
需求分析:通过用例(面向使用者列出的一系列例子)1,系统边界是什么。2,系统原型是什么 3.系统功能有哪些。
领域模型:实现它必须抽象出一些概念,这些概念都是业务上的一些概念。这是面向对象分析的过程。它是对真实世界想象的可视化。跟具体实现软件基础无关。
如何抽象出来呢?
第一步找名词。三个概念,一 玩游戏的参与者(隐藏的),二 出的结果(表面可见),三 游戏(表面可见)。
站在总体的上面看待这个问题。找出数量,is,have关系(静态)、动作交互(动态)。
动态交互:通过时序图来确定类的协作和职责。
设计阶段,实现:名称的启示,类接受外部动作,内部的运作。
画图注意什么?
不要画画的太细,太细不如写代码。
UML图形主要分为三大类:
对象图形:用来描述对象的
交互图形:用来描述交互和行为的。
状态图形:描述状态改变的。
顺序基本是:用例图->时序图->协作图->状态图->活动图->类图->组件图->部署图->用例图。
用例图:用来描述用户场景的.(交互类)
时序图:描述对象是如何交互的,并且将重点放在消息序列上。也就是说,描述消息是如何在对象间发送和接收的。(交互类)
协作图:强调的是发送和接收消息的对象之间的组织结构。一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。(交互类)
状态图:由状态组成,各状态由转移链接在一起。状态是对象执行某项活动或等待某个事件时的条件。转移是两个状态之间的关系,它由某个事件触发,然后执行特定的操作或评估并导致特定的结束状态。(状态类)
活动图:阐明了业务用例实现的工作流程。业务工作流程说明了业务为向所服务的业务主角提供其所需的价值而必须完成的工作。(行为类)
类图:显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。(对象类)
组件图:组件图中通常包括组件、接口,以及各种关系。组件图显示组件以及它们之间的依赖关系,它可以用来显示程序代码如何分解成模块或组件。(对象类)
部署图:显示系统中软件和硬件的物理架构。从部署图中,您可以了解到软件和硬件组件之间的物理关系以及处理节点的组件分布情况。(对象类)
在工作中通常通过三视图来表示一个软件的设计(用例图,类图,时序图【活动图】)