前面的两篇文章中介绍过了有关要件定义,基本设计的相关内容,今天我们一起来学习一下瀑布型软件开发中的详细设计工程。详细设计有时也叫内部设计,为了方便阅读,本文统一都叫做详细设计。
详细设计是决定机能内部构造的重要工程阶段,上次的基本设计文章中我们有说到过基本设计=WHAT,那么详细设计是基本设计决定的功能如何做才能具体实现的工程阶段=HOW。
详细设计的最终成果物是做成程序员可以理解的设计书。
那么实际开发中有没有人经常把式样书跟设计书弄混?
它们两者之间有什么不同?
设计书是用来解释说明——怎么做才能实现这个功能,是一个过程。
式样书是用来解释说明——现在做的是什么样功能的系统,是一种结果。
详细设计阶段的作业是无法用肉眼看到的程序内部的构造,数据的流程等,需要详细的落实到式样书里。此阶段的作业通常都是一些客户不太好理解的系统内部运转,机能,数据库的设计等。所以不需要客户直接参与。
之前在基本设计的文章中提到过基本设计的入力参照物是要件定义书。
详细设计的入力参照物则是基本设计书。
详细设计是以基本设计为基础,把实际开发作业时会发生的一些有关开发的琐碎步骤全部事先落实下来的工程阶段。
详细设计书的例子:
・アクティビティ図 活动图
活动图的作用是阐明了业务用例实现的工作流程。
定义:活动图描述的是从一个活动到另一个活动的控制流,描述活动的顺序,活动表示处理事物的动作和状态。
活动图与我们经常画的流程图很相似,都表达事物的处理流程,那么活动图与流程图的区别是什么呢?
活动图可以表达并发的动作,而流程图不能。
活动图是面向对象的,而流程图是面向过程的。活动图有对象的输入、输出,流程图重点是处理流程,有明确的时间概念。
活动图的对象与活动有明显区分,流程图并不强调这点。
活动图可以有多个结束状态,而流程图只能有一个结束状态。
・シーケンス図 顺序图
定义:顺序图比活动图更加详细记载了系统内部的处理,并沿时间轴表示了类/项目之间的相互作用。活动图能大概的了解使用者与机能的流程,顺序图能更加详细的了解系统内部处理方式等。
根据例文可以看出,纵轴代表时间,横轴代表用户/系统机能(对象)。
接收到用户的操作之后,项目对象接收到了什么样的信息,以什么形式传递给下一个对象按照箭头的指示,把这一些处理顺序表现出来。
・クラス図 类图
定义:表示构成系统的不同类之间的关系,标明了作业优先顺序,并且是分担共享作业的重要资料,是实际编程时的平面图。
写法:类图的书写要遵循以上规定,从活动图还有顺序图中帅选出类,考虑各个类之间的关联性做成父类/写出集约/依存关系。
・処理機能記述書(IPO)
定义:処理機能記述書记录了机能的入力(Input)/处理(Process)/出力(Output)简写成IPO。
写法:描述为了创建输出数据,应该用什么样的输入数据进行怎样的处理。这里需要注意描述不是越详细越好,能理解处理概要的程度就可以了。
・モジュール構造図 模块构造图
定义:模块构造图包含了每个系统功能的具体模块组成,并且可以通过逻辑上的共通化以此提高生产性。
比如大型机中的模块构造图,编译大型机语言COBOL后的模块。
写法:摘录出构成机能的处理,边分解处理的下一层边考虑可以共通化的处理。
详细设计阶段的成果物是详细设计书,是下一代码开发阶段的参照物。所以详细设计书的内容一定要不能出现漏记,错误,等容易造成开发者混乱的内容。
写详细设计书时的小point
1. 设立章节,首先确定每一章的标题。其次在开头用一句话概括出文章大意,这样其他人理解起来也比较容易。
2. 按照先概述再详细的顺序记载,条理清晰易于整体把握。
3. 简洁明了,不要过于冗长,字数控制在两行以内。
4. 运用图表辅助手段解释说明,便于对方理解。
5. 同一系统内主语/用语/表记等语言要统一,以免造成认识上的误区,缩略语等要有注释。
6. 多次变更时,按不同颜色等手法把每次的变更做好记录。
详细设计是瀑布式软件开发中的重要一环,没有详细设计可能会出现以下风险:
1. 发生无用的测试
2. 修正时需要维护的地方增多
3. 保守时调查工数增加
看到这可能有人会说,可是有的软件开发中是没有详细设计阶段的。确实如此,近期我们分享的三篇文章都是瀑布型软件开发中的工程阶段,瀑布型软件开发的特点就是做大量的文档,开发人员都是根据文档进行开发的,一切以文档为依据。
而在敏捷开发却是截然不同,那么下期我们一起聊聊敏捷开发吧。