闲来无聊,针对自己之前开发的一个项目中的一个案例,详细的说明一下从分析到设计再到最终完成的一个过程。希望对自己对正在寻求转变的人提供一点帮助。
过程是:分析->设计 迭代开发。
1 需求分析(案例):
这里以这个项目中的一个需求"为用户提供电视观看的功能"。这里我起名为"看电视"(watchTv)
案例:看电视
Actor: 用户
前置条件:系统的电视服务工作正常。
后置条件:用户看到自己所选信源的电视播放画面。
基本流程:
1 用户想要看电视,进入Launcher电视页面。
2 电视获取上一次用户选择过的电视输入源。
3 获取电视信号
3 电视播放TV预览画面。
扩展:
1 用户不想看当前信源的视频
a 用户切换电视信源。
b 电视播放当前所选信源画面。
2 用户对当前信源的节目很感兴趣,想要获取更好的视觉体验。
a 退出launcher tv页面。
b 进入TV应用。
3 如果当前电视没有信号输入或异常。
a 获取电视信号状态。
b 通知用户当前TV工作状态。
2 构建领域模型:
1 寻找概念类:
用户(User),电视(Tv),输入源(InputSource), TV应用(TvApp),电视信号(TvSignal), TV窗口(TvWindow)。
注意:添加"Tv窗口"这个需求中没有提到的东西,主要是因为preview和进入tv需要设置TV窗口大小。属于协助类所以这里用于替代TvPreivew来表示。
从上面图是一个简单的领域模型,从图上可以很清楚知道这些类之间的关系。
3 动态图:
动态图的主要是用来寻找“职责”(方法的抽象,通俗的理解就是类中的方法)
我们来看主成功场景的“时序图”
注意:这里面并没有包含通知UI的逻辑,由于播放tv是一个耗时操作,所以使用异步方式。避免阻塞UI.
从上面的动态图就可以知道各类的方法(职责)是有哪些了。
通过动态图和早期构建的领域模型,就可以确定静态类图,从而构建出软件的基本架构。
这里省略了如何设计这些架构的基本思路,也就是设计模式,比如高内聚,低耦合,等等。