采用面向对象的开发的小项目,究竟有没有做架构分析的必要呢?要回答这个问题,必须要
对什么是架构分析、架构分析有什么作用有了解,书中的6.2节就回答了这两个问题。引书
中架构分析的解释如下:
“架构分析工作主要是从宏观上考虑一个软件系统应该如何组织。通常,在架构分
析工作中,我们需要确定一些策略性的设计方针、原则和基本模式,在它们的指导
下,我们可以高屋建瓴地分析软件系统的宏观结构,认识软件系统由哪些组件构成,
了解组件之间的接口和协作关系。架构分析的结果对于后续的面向对象设计工作也
是一种约束,有助于消除设计和实现过程中的随意性。因此,架构分析有时也被称
做策略设计。”
架构分析的作用,书中说道:
“架构分析在大多数软件开发过程中都能够发挥极其重要的作用。
·首先,现代软件系统越来越复杂,如果没有良好的结构和规则,软件的复杂性可能
会像混沌学所说的“蝴蝶效应”那样快速膨胀和爆炸,以至于超出常人的理解能力。而
架构分析工作预先为软件定义了科学的结构和规则。通过这些结构和规则,人们能有
效地控制软件的复杂性,使软件易于理解、实现和管理。
·其次,好的软件架构既可以分离软件中的不同组件,又可以精确定义组件之间的接口
,这可以使软件系统中的大部分组件具备良好的可复用性。……
·最后,架构分析的结果也是多个项目进行协作的基础。……”
既然架构分析有这么多好处,那这一步的工作看来是不能省的了。在我们进行架构分析的过
程中,应该时刻注意不要走入功能分析的误区,要强调数据和操作之间的封装。与面向对象
分析时一样,架构分析也应根据软件类型和规模的不同,采用不一样的分析方法。在迭代开
发模型里,架构分析可在不同级别,不同层次进行,逐步细化,直到项目组认为组件的粒度
够小,可在开发过程中得到较好的控制为止。
不同类型的软件,对应有不同的架构模式,“架构模式描述了软件系统基本的组织策略。它
提供了一系列预定义的职责明确的子系统,以及组织这些子系统的关系的规则和指南。”根
据FISHGUI项目的特点,分层架构比较适合。采用分层架构,也有需要注意的几点:
“·层之间要尽量地松散,依赖于接口,而不是具体实现;
·级别相同、职责类似的元素应该被组织到同一层中;
·复杂的模块应该被继续分解为粒度更细的子系统;
·把可能变化的元素封装到一个层中,这样,变化时,只有受影响的层需要改变;
·上层只调用下一层提供的服务,而不能跨层调用,但对限制不是太严格的小系统,
也可以灵活处理;
·下层不能调用上层提供的功能服务,也就是说,不能造成层与层之间的双向依赖或
循环引用。
要避免循环依赖,可以参考Uncle bob写的文章。
接着,书中以FISHGUIDemo为例,介绍了应用层的MVC架构模式,还有对分层进行细化的子系
统设计。
“子系统设计属于面向对象设计的范畴,是在面向对象分析工作结束之后进行的。对于那些相
对独立却又比较复杂、不能用一个类来概括的分析类,我们可以把它们定义为一个子系统,
同时精确地定义子系统的接口。子系统通过接口与其他的类和对象协同工作,实现整个系统
功能。当子系统的接口明确后,子系统内部的实现细节就不会妨碍子系统与其他类和对象的
交互了。因此,子系统设计是对系统架构的进一步细化,是对架构中的特定层次进行的更为
精密的划分。”
也要知道的是,子系统与层和包之间是有区别的。定义子系统也不是一定的,要根据实际需
要。用接口替代子系统绘制顺序图时,接口不能再向其他对象发送任何消息,因为接口只是
一个子系统向外提供的所有行为的抽象,其中不能包括任何具体的实现代码,我们不能对子
系统的实现细节做任何假设。否则更改实现时,就会破坏接口的稳定性。
分享到:
相关推荐
学生读书笔记共享-学生读书笔记共享系统-学生读书笔记共享系统源码-学生读书笔记共享管理系统-学生读书笔记共享管理系统java代码-学生读书笔记共享系统设计与实现-基于springboot的学生读书笔记共享系统-基于Web的...
学生读书笔记共享-学生读书笔记共享系统-学生读书笔记共享系统源码-学生读书笔记共享管理系统-学生读书笔记共享管理系统java代码-学生读书笔记共享系统设计与实现-基于springboot的学生读书笔记共享系统-基于Web的...
计算机网络设计第一章读书笔记------.pdf该文档详细且完整,值得借鉴下载使用,欢迎下载使用,有问题可以第一时间联系作者~
多态是面向对象的第三个核心特性,它指的是同一种行为在不同的对象上表现出不同的形式。多态可以通过方法重载(Overloading)和方法重写(Overriding)来实现。在Java中,多态允许我们使用父类的引用指向子类的对象...
随着面向对象程序设计思 想的日益普及,很多支持面向 对象程序设计方法语言也相继 出现了,C++就是这样一种语 言。C++是Bjarne Stroustrup 于1980年在AT&T的贝尔实验 室开发的一种语言。
《技术人的管理之路》读书笔记 --思维导图 《技术人的管理之路》读书笔记 --思维导图 《技术人的管理之路》读书笔记 --思维导图 《技术人的管理之路》读书笔记 --思维导图 《技术人的管理之路》读书笔记 --思维导图 ...
学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书...
学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书...
学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书笔记共享平台-学生读书...
《鼠疫》读书笔记800字-读书笔记_1.docx
不过,我可以根据“读书笔记模版”给出一般性的建议。 在阅读和学习IT相关书籍时,制作读书笔记是一种非常有效的学习方法。以下是一个可能的读书笔记模版,用于记录和理解IT知识: 1. **书籍信息**: - 书名:...
C#高级编程《第7版》读书笔记(1-3章).pdf
《老子心解》读书笔记(1-5章).pdf
R语言数据科学读书笔记_R-for-data-Science
Hadoop权威指南----读书笔记
【JAVA】笔记(2)---面向过程与面向对象;类,对象;实例变量,引用;构造方法;(csdn)————程序