xyz*_*xyz 82 language-agnostic architecture oop
我挣扎的一件事是在编写任何代码之前规划应用程序的架构.
我并不是说收集需求来缩小应用程序需要做什么,而是有效地思考一个好的方法来布置整体类,数据和流程结构,并迭代这些想法,以便我有一个可靠的计划甚至在打开IDE之前的行动.目前,只需打开IDE即可轻松创建一个空白项目,开始编写位和bob,让设计从那里"长出来".
我收集UML是一种方法来做到这一点,但我没有经验,所以它似乎有点模糊.
在编写任何代码之前,您如何规划应用程序的体系结构?如果UML是可行的方法,您能否为小型应用程序的开发人员推荐简明实用的介绍?
我很感激你的意见.
Rob*_*lls 37
我考虑以下几点:
然后我开始将系统看作黑盒子并且:
然后,这将开始为您提供由各种内部黑匣子组成的系统的视图,每个黑匣子都可以以相同的方式进一步细分.
UML非常适合表示这种行为.您可以使用UML的许多组件中的两个来描述大多数系统,即:
如果需要描述的行为中存在任何并行性,您可能还需要活动图.
学习UML的一个很好的资源是Martin Fowler出色的书"UML Distilled"(亚马逊链接 - 为那里的脚本小子链接纳粹消毒( - :)).本书让你快速浏览每个组件的基本部分. UML.
哦.我所描述的几乎是Ivar Jacobson的方法.雅各布森是OO的三个朋友之一.事实上,UML最初由另外两个人组成,他们组成了三个朋友,Grady Booch和Jim Rumbaugh
Ali*_*har 30
我真的发现在纸上或白板上写作的第一步非常重要.然后根据需要转移到UML,但没有什么能比起手工绘制它的灵活性.
如果您正在为.NET开发,Microsoft已经发布了(作为免费的电子书!)应用程序架构指南2.0b1.在编写任何代码之前,它提供了大量有关规划架构的非常好的信息.
如果你绝望,我希望你可以使用大块的非基于.NET的架构.
我要说的是,我主要进行Web开发,其中大部分架构已经提前决定(WebForms,现在是MVC),而且我的大多数项目都是相当小的,单人工作需要不到一年的时间.我也知道,我将分别使用ORM和DAL来处理业务对象和数据交互.最近,我已经转而使用LINQ,因此很多"设计"通过DBML设计器成为数据库设计和映射.
通常,我以TDD(测试驱动开发)方式工作.我不会花很多时间在建筑或设计细节上工作.我通过故事收集用户与应用程序的整体交互.我使用这些故事来制定交互设计并发现应用程序的主要组件.我在这个过程中与客户做了很多白板 - 有时用数码相机拍摄细节,如果它们看起来很重要,可以保持图表形式.主要是我的故事在维基中以故事形式被捕获.最终,这些故事被组织成版本和迭代.
到这个时候,我通常对架构非常了解.如果它很复杂或有不寻常的位 - 与我的正常做法不同的东西 - 或者我正在与其他人(不典型)合作,我将绘制事物(再次在白板上).复杂的交互也是如此 - 我可以在白板上设计页面布局和流程,保留它(或通过相机捕获)直到我完成该部分.一旦我对我要去哪里以及首先需要做什么有了一个大概的了解,我就会开始为第一个故事编写测试.通常,这就像是:"好的,要做到这一点,我需要这些课程.我将从这个开始,它需要这样做." 然后我开始快乐TDDing,架构/设计从应用程序的需求增长.
我会发现自己想要再次编写一些代码,或者认为"这真的很有气味",我会重构我的设计以消除重复或用更优雅的东西取代臭味.大多数情况下,我关注的是在遵循良好的设计原则的同时降低功能.我发现使用已知的模式并注意良好的原则,你可以很好地解决问题.
| 归档时间: |
|
| 查看次数: |
28991 次 |
| 最近记录: |