软件设计原理的理论在大多数学生眼里既枯燥又乏味——那是因为他们从没做过真正的软件项目,以致于这些概念在他们眼里似是而非。
例如,他们了解耦合性、内聚性、MVC和ESB。但是当被问到为什么要掌握这些概念以及何时使用的时候就一问三不知哑口无言了。记住一些UML图是一件很容易的事,但是要想掌握具体使用情况以及如何稍作修改以便于适应具体应用需求就难了。
为了更好地理解软件的设计理念,有些教授想出了一些很有意思的点子——那就是模拟真实场景,这使得这些概念更易于学生的理解和掌握。
举个关于低耦合原则的真实事例:
Mike想要申请一本护照,他到了相关部门之后遇到了Jack
两天后,他将所需要的资料带来,但是却是Patricia接待了他
在现实世界中,Patricia的行为明显毫无逻辑可言,因为该服务并不是依赖Jack才能办理的,作为服务的提供者,她应该也为Mike办理护照。
其具体流程也非常简单,如果你想要申请护照,那就准备好具体的资料即可。但是没说一定要让Jack受理。
这个故事的寓意是:如果此服务高度依赖于Jack,那么一旦出现突发情况就会产生问题。而如果Jack一直在那,我们是意识不到他的重要性的,但是一旦他没在,那就会影响服务系统了。
这个道理很浅显,是吧?但是在软件设计中,很多开发人员还是会犯这种错误,因为他们没有考虑到高耦合是否符合逻辑。然后,等以后因为做某种改变导致整个架构出现问题的时候,就追悔莫及了——不得不投入更多的时间和资金去解决这些问题。
我们最好能够可视化这些软件编程概念,而不仅仅只是让学生掌握理论。此外,有些图表工具,例如依赖图、依赖矩阵和树映射技术等,可以让我们可视化源代码发生的各种变化。例如对于Java,可以使用JDepend,JArchitect和Structure101,对于C / C++,CppDpend则很不错。
DSM
设计结构矩阵(DSM)用一种方阵的形式,简单紧凑又可视化地表现一个系统或项目。
下面就是一个在Architect使用DSM的例子,从矩阵中我们很容易检测出常用程序包、依赖周期和非常用程序包。
树映射
树映射以一种嵌套矩阵的形式显示层次(树形结构)数据。树的每个分支都有一个矩阵,然后再分支得到更小的矩阵。叶节点的矩阵按比例映射到指定大小的数据容器中。
下面就是一个在Architect使用树映射的例子,使用一个String类来映射所有的类。
上图可谓是将源代码形象化了,通过这种投射到现实世界的方式,有助于我们更好地掌握软件背后的设计原则。很多情况下,掌握理论并不足以理解一个概念。
http://www.codeceo.com/article/programming-from-real-world.html
相关推荐
08 软件设计师模拟题目1
这是一款软件设计师,软考中级的模拟答题软件。
VCE 软件模拟真实环境 HCIP 模拟软件 考试模拟运行软件 华为
软件设计师模拟试题有答案软件设计师模拟试题有答案软件设计师模拟试题有答案软件设计师模拟试题有答案
这份试题是一个软件设计师复习和学习的好资料,
软件设计师模拟试题及答案(5套)软件设计师模拟试题及答案(5套)软件设计师模拟试题及答案(5套)
2011年下半年软件设计师模拟题+答案(下午),图片扫描格式,建议用大屏幕浏览。
软件设计师04-17年真题,以及20套模拟题,附带解析,需要的带走
使用纯电路设计,在ISP软件上设计模拟骰子游戏系统,并下载实现通过。
全真模拟试卷—软件设计师,安装文件,内有8套模拟卷,两套2010真题。
VCE 软件模拟真实环境 HCIP 模拟软件 考试模拟运行软件 华为 模拟软件
基于Matlab-GUI的模拟通信干扰效果仿真软件设计.pdf
数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波。因此在进行数字信号处理之前需要将信号从模拟域转换到数字域,这通常通过模数转换器实现。而数字信号处理的输出经常也要变换到模拟域,这是通过数模...
某大平台出的 2020 年 3 月 7 日最新出炉的软考中级软件设计师的全真模拟考试题目 56 道题目,附加有参考答案和详细解析。需要考试中级软件设计师的朋友们可以下载做题。
第8~12章介绍模拟和数字电路协调工作所关注的噪声、电源和地分割、PCB布局的技巧和策略以及选择合适的工具进行电路调试,在理论介绍时,结合真实模拟设计实例,让数字工程师对这些模拟工具有真实的感受,并进而去...
软件设计师考试的模拟软件,带有上午下午试题,还可以考完评分,详细解析
希赛软件设计师全套模拟题,特别适合考前冲刺! 强烈推荐!
快软考了,传上来两套模拟试题
电子电路设计模拟分析软件,很好,非常实用推荐一用,来吧
软件设计师考试模拟题,我在某宝花钱买的,马上软考了,分享给大家。