软件设计原理的理论在大多数学生眼里既枯燥又乏味——那是因为他们从没做过真正的软件项目,以致于这些概念在他们眼里似是而非。
例如,他们了解耦合性、内聚性、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
相关推荐
### Microsoft Robotics Studio 模拟真实世界 #### 一、Microsoft Robotics Studio (MSRS)简介 Microsoft Robotics Studio(MSRS)是一款由微软研究部门推出的软件开发工具包,旨在帮助开发者构建和测试机器人应用...
面向对象程序设计是一种广泛应用于现代软件开发中的编程范式,其核心思想是通过模拟真实世界中的对象和它们之间的关系来构建软件系统。在这个场景中,我们讨论的是一个模拟复印机工作的软件,这将涉及到类的设计、...
电梯调度模拟系统是一种基于软件的系统,用于模拟真实世界中电梯的运作,旨在理解和优化电梯的调度算法。本文档是该系统概要设计的一部分,旨在为后续的详细设计、编码、测试和维护提供基础。 1. **编写目的**:...
在这一阶段,设计师不仅要精通电路设计,还要掌握系统级设计原则,能够从整体上优化芯片性能,确保其在真实世界的应用中表现出色。 总结而言,模拟芯片设计的四重境界,是设计师从理论学习到实践操作,再到创新和...
实验模拟主要用于替代或补充真实世界中的实验,如化学实验、物理实验等;展示性模拟更多地用于演示特定现象或规律,如天体运行、历史事件等;教学实训模拟侧重于让学生通过模拟操作来训练实际技能,如驾驶模拟、手术...
【模拟仿真教学软件】是一种利用计算机技术和建模理论来创建的教学工具,旨在为学生提供一个类似于真实世界的互动环境,使他们能够在安全、可控的条件下学习和探索复杂的系统和概念。这种教学方法结合了科学性、标准...
此外,通过模拟真实世界的应用场景,学生能够学习如何处理用户输入、错误检查和数据持久化等实际问题。 报告的完成还包括了指导老师的评审和学术诚信声明,强调了报告和相关数据的真实性及其在教学评估中的重要性。...
【黑暗中的大脑:神经模拟学习和推理的设计原则】 大脑,虽然深藏于头颅的黑暗中,却能解析世界,预测未来的未知,并作出影响深远的决策。这一现象引发了人们对大脑作为一个预测机制的深入研究。根据贝叶斯定理,...
ATM柜员机模拟程序是面向对象程序设计领域的一个经典案例,它涵盖了多个重要的软件开发概念和技术。...此外,通过模拟真实世界的情境,学生将更好地理解和应用软件工程的实践原则,为未来的职业生涯奠定坚实基础。
而上午试题则倾向于检验考生的基础理论知识掌握程度,通常涵盖了计算机科学基础知识、软件开发过程、设计原则等内容。 通过研习这些试题,考生不仅能够掌握当年软件设计领域的热点和重点,还能够熟悉考试的形式与...
- 通过模拟现实世界物体的行为和外观,增加真实感,提高用户学习曲线。 - 界面应美观,吸引用户注意力,但避免过于花哨,以免分散用户对内容的关注。 - 避免强制性的模式化操作,尽可能让用户自然地与应用互动。 ...
在信息技术高速发展的今天,模拟真实场景的计算机程序设计成为了教育领域不可或缺的一部分。本项目“学生在线答疑排队模拟程序设计”旨在通过C语言实现一个简单的排队系统,让学生们能更好地理解并体验等待、服务与...
6. **随机生成**:`Random_Plane.h`可能包含了随机生成飞机的逻辑,用于模拟真实世界中的随机事件,比如飞机的到达时间、起飞时间等。 7. **计数与统计**:系统最后会统计各种操作(如正常起飞、延迟起飞、正常降落...
在本项目中,“使用Java模拟交通信号灯”是一个典型的编程实践,主要涵盖了计算机科学中的并发处理、模拟与仿真以及软件工程的基本概念。这个毕业设计旨在通过编程实现一个交通信号灯控制系统,来理解和应用Java语言...
7. **网络拓扑设计**:模拟不同规模的网络拓扑,理解网络设计原则,如层次化设计、冗余路径和备份机制。 8. **故障恢复和备份**:了解如何备份和恢复路由器配置,以及在硬件故障时如何进行故障转移。 9. **网络...
设计测试数据的结构,确保它们能够模拟真实世界的使用情况。 包括输入数据、预期输出、数据库记录、文件内容等。 数据生成: 根据设计的数据模型,使用自动化工具或编写脚本来生成测试数据。 可以包括随机生成、...
3D模型是通过计算机软件构建的三维几何形状,它可以模拟现实世界中的物体,包括其形状、大小、材质和纹理。在这个案例中,“中式展柜3D模型”可能包含了传统的木质结构、精致的雕刻细节、经典的色彩搭配以及流线型的...
3D模型是3D设计的核心,它是通过计算机软件创建的数字表示,可以精确地模拟真实世界中的物体。在这个案例中,"max3382.max"文件很可能是一个用Autodesk 3ds Max软件创建的3D模型文件。3ds Max是一款广泛使用的专业3D...