首页»软件工程»从模拟真实世界中理解软件设计原则

by8博悦娱乐登录: 从模拟真实世界中理解软件设计原则

来源:codeceo 发布时间:2014-12-17 阅读次数:

博悦娱乐平台

在曾霞、冯芳老师带领下,陈佩如、李海灵、陈宇翔三位同学每天五点多起床,赶第一班公汽,转城铁,然后步行四十多分钟,到达我校对口扶贫点江夏区山坡街群力村,在驻村扶贫工作人员蔡勤、董巍老师指导下,开展为期一周的特色学习实践,深入了解农村实际状况,把学校的关怀和温暖送到贫困留守儿童身边,并运用所学专业知识为群力村党建工作贡献智慧和力量。在今天,滑铁卢大学有36,670名学生在读,其中37%的研究生都是来自加拿大之外的地方。

  软件设计原理的理论在大多数学生眼里既枯燥又乏味——那是因为他们从没做过真正的软件项目,以致于这些概念在他们眼里似是而非。

  例如,他们了解耦合性、内聚性、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类来映射所有的类。

  上图可谓是将源代码形象化了,通过这种投射到现实世界的方式,有助于我们更好地掌握软件背后的设计原则。很多情况下,掌握理论并不足以理解一个概念。

  英文原文:Understanding software design principles from real world cases 翻译:codeceo

QQ群:WEB博悦娱乐官方群(515171538),验证消息:10000
微信群:加小编微信 849023636 邀请您加入,验证消息:10000
提示:更多精彩内容关注微信公众号:全栈博悦娱乐中心(fsder-com)
网友评论(共0条评论) 正在载入评论......
理智评论文明上网,拒绝恶意谩骂 发表评论 / 共0条评论
登录会员中心