Head First Object-Oriented Design and Analysis学习笔记(七)
2010-08-02 00:26 Aga.J 阅读(319) 评论(0) 编辑 收藏 举报第七章
Architecture
Bringing Order to Chaos
前言:
这一章继续上一章的内容,在得到上一章的需求分析和基本模块划分后,我们要怎样去对其中的小问题进行逐个击破,从哪一个开始?本章给了我们这样的思路
案例分析:
案例描述:
问题提出:
1面对那么多的需求和分析材料,我们应该从哪里入手来进行我们的系统设计呢?
2 那么我们怎么从需求材料中找出系统最重要的功能呢?
3 缩小了范围,得到了3个可以开始着手的东西,但是又要对哪个先呢?
4 解决了第一个,然后接下来呢?
问题解决:
1 这里使用的方法论还是和以前一样(三部曲:1 make sure your software does what the customer wants to do (2)Apply basic OO principles to add flexibility.(3)strive for a maintainable reusable design。注意:这只是一种开发方法,未必就是适合所有的项目)
按照三部曲的分析方法,接下来我们就应该make sure an application does what it’s supposed to do,所有我们目前要回到我们所取得的需求信息来找到“系统的功能”,而且是最重要的系统功能
2 问自己3个问题
(1)is it part of the essence of the system? Can you imagine the system without the feature?
(2)What the feature does it mean?(如果你对某个需求不明了,那么或许后面就会因为这个不明了的东西带来很大麻烦)
(3) how the heck do I do it?(如果某个地方比较难以解决,也需要先列为优先解决的东西)
(注:第2,和第3点有点像风险规避)
文章给出的答案是,board,Game-specific unit,coordinate movement
3 这些被选中的feature之所以architecturally significant就是因为它们会给系统带来风险(跟我上面说的一样)。所有不管哪个先开始,只要设好降低风险的目标就可以,文章选择从board开始。
采用scenario的方法来消除在对board的分析设计所可能的遗漏,同时要注意这个阶段只是要完成系统的雏形,所有对于board模块,我们不需要给出太详细的设计,这样才能更好的降低风险(注:有点迭代的方法在里面。)
上面的代码或许不是很好的设计,但是我们现在的目标是完成基本功能,降低项目风险,所有能越简单越好
4 接下来就是和已经解决的模块相关性最大的那个模块了。所以就是unit模块。对于unit模块的不清楚,我们可以从客户那里得到更多信息,然后应用前面的common & different的方法来分析我们这个不熟悉的事物(注:对于所有不熟悉的事物都可以使用这种方法来做,经过不经意的实验,发现这样的效果很好)
第一次分析后得到这样的结果
我们从unit抽取出来的共性很少。继续考虑。。。把“不同”变为“相同”,这就是玩家和角色设计模式的其中一个应用,发现各个unit最大不同是type和properties,那么就把这两个东西做为基类的属性,这样每个子类就只充当其中的一个角色,而不是一个实体
(注:这里又使用到了“名值”相对的方法)
而且使用这种方法,一旦我们不断的为我们的游戏添加unit,我们不会因为unit的类型不同而需要给系统增加一大堆类。(注:我们也可以通过这样来逆向推出不应该采取第一种解决方法)
剩下的部分也由这样的方式进行
Important Point:
1 architecture is your design structure, and highlights the most important parts of your app, and the relationships between those parts(所谓的架构,就是给出系统的最重要的部分,并且给出他们之间的关系,一种设计的结构,系统的结构)
2 architecture is the organizational structure of a system, including its decomposition into parts, their connectivity, interaction mechanisms, and the guiding principles and decisions that you use in the design of a system(系统的组织结构)
3 抓住the essence of a system,就是抓住系统的most basic level,不要过多的考虑其他外在的修饰或者其他东西,只要考虑那些系统为完成功能所必须的部分,the essence of a system is what that system is at its most basic level
4 focus on one feature at a time to reduce risk in your project
作者:Aga.J
出处:http://www.cnblogs.com/aga-j
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
个人学习笔记仅供本人记录知识所用,不属发表性文章。