如何进行分析设计

原创
2009/08/20 19:11
阅读数 291

分析设计的基本任务:

什么是对象?思考的是如何将项目分成多个组成部分。

它们的接口是什么?思考的是需要向每个对象发送什么消息。

 


 

 

第0阶段:制定计划

我们必须决定在此过程中必须有哪些步骤。立即编码是不好的习惯,当然,你可以认为你的程序足够小而且你的思路已经足够清晰。应该为项目建立里程碑,在进程中设立一些里程碑可以帮助我们集中注意力、激发我们的热情,而不是只注意“完成项目”这一个目标。另外,里程碑将项目分为更细的阶段使得风险减小了。他末了还说“此外里程碑还提供更多的庆祝机会”,看得出作者是一个非常幽默的人,呵呵……

在这个阶段应该做的就是任务陈述:用很少的语句表达清楚建造这个系统的基本目的、其要处理的业务、其所要满足的基本需要等。任务陈述不一定要求一开始就非常准确,但是我们要不停的努力直至它越来越正确。


 

第1阶段:我们在做什么

上一代程序设计{过程型设计(procedural disign)}中的两个概念:

需求分析(requirement analysis): 制定一系列指导方针,我们将利用它了解任务什么时候完成且用户什么时候满足。
系统规范说明(system specification): 说明程序要做到什么样才能满足客户的需求。

需求分析 实际上是我们和客户之间的一个合同。系统规范说明则是一个深入的探测。这两个文档就尽可能的简洁,最好是列表和基本图表。

我们的核心问题是:确定这个系统要做什么。最有用的工具是 用例(use case),它可以指明系统的关键特性。它实际上是对下述问题的描述性回答:
1、谁将使用这个系统?
2、执行者用这个系统做什么?
3、执行者如何用这个系统工作?
4、如果其它人也做同一件事,或者同一个执行者有不同的执行目标,该怎么办?
5、当使用这个系统时,会发生什么事情?

这个阶段结束后我们应该可以知道要做哪些东西,大概需要多少时间,最后要定制一个时间表。如果开发时间是固定的,那么还应当根据时间来调整计划。

 


 

 

第2阶段:我们将如何创建对象

这个阶段我们将要确定一个类和它们之间是如何交互的。

需要用到的工具是: 类职责协同(CRC)卡片。每张卡片上描述一个类,内容有:
类名:
类的职责:它应当做什么。通常可以用类的方法名来进行描述。
类的协同:它和其它类有哪些交互。

CRC内容不要太详细,如果一张小卡片上装不完一个类,那么可以考虑是否应该将这个类拆分。

 


 

 

第3阶段:创建核心

这是从粗线条的设计转向编写具体可执行代码的最初阶段,我们要实现一个可运行的框架。

这个阶段我们的目标是寻找实现系统结构的核心,尽管这个系统在第一篇还不是很完善。我们正在创建一个框架,我们会在将来不断的完善它。这个部分还有一个任务就是对实现进行检查,看是否我们会需求和用例。

当系统核心稳定后,我们就可以向下进行或增加更多的功能了。

 


 

 

第4阶段:迭代用例

一旦代码框架建立起来,我们就可以开始迭代了。

每添加一个功能就是一次迭代,一次迭代是一个相当短的开发时期。一般一到三个周为宜。在这个期间过后,我们将得到一个集成、测试过,比上一个周期有更多功能的系统。一般一个用例就是一次迭代。

每一次迭代结束,都应该有一次交付,并且尽可能的接收反馈。开源项目成功的原因正是他在高反馈中开发。

当我们达到目标功能或外部最终期限到了,并且我们的客户对这一版本满意时,我们就停止迭代(记住,软件行业是建立在双方约定的基础之上的)。

 


 

 

第5阶段:进化

这个阶段的工作就是我们所谓的“维护”和“功能扩充”或“性能优化”了。

 

极限编程(XP)的两个主要想想是:测试先行和结对编程。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部