在软件开发生命周期中,您会生成哪些重要的设计工件?是什么让它们对您的实践至关重要?

我目前正在进行的项目已经制作了 8 年多了。在此期间,该 Web 应用程序得到了积极的增强和维护。虽然我们制定了基于 CMMI 的政策和流程,并且我们的部分实践得到了明确的定义,但设计阶段在很大程度上被忽视了。最佳实践,有人吗?

有帮助吗?

解决方案

过去从事过很多瀑布项目,最近也从事过很多临时和敏捷项目,我喜欢创建许多设计工件,尽管我无法充分说明它实际上取决于项目的细节(方法/团队结构/时间表/工具等)。

对于通用的、基于服务器的“企业应用程序”,我希望最低限度是这样的:

  • 详细的功能设计文档(又名规范)。一般来说,类似于乔尔的风格 WhatsTimeIsIt 示例规范, ,尽管可能有一些 UML 用例图。
  • 软件技术设计文档。不一定要详细说明 100% 的系统覆盖率,但要详细说明所有关键领域并包含所有设计决策。作为一个 UML 狂热者,如果能看到大量类似包图、组件图、关键功能类图的图片,可能还需要一些序列图,那会很高兴。
  • 基础设施设计文件。可能使用 UML 部署图来进行概念设计,也可能使用网络图来进行更实际的设计。

当我说文档时,上述任何内容都可能被分解为多个文档,或者可能存储在 wiki/其他一些工具上。

至于它们的用处,我的理念始终是开发团队应该始终能够将应用程序移交给支持团队,而不必交出他们的电话号码。如果设计工件没有清楚地表明应用程序做什么、如何做以及在哪里做,那么您就知道支持团队会给应用程序提供与疯狗一样的照顾和关注。

我应该提到的是,我并不是在证明将软件从开发团队移交给支持团队的做法是正确的。 完成的, ,这提出了各种有趣的问题,我只是说如果管理层愿意的话,这应该是可能的。

其他提示

工作代码...和白板图。

:P

设计在开发期间和之后发生了很大的变化,以至于我精心制作的大部分文档都在源代码管理中腐烂了,一旦代码投入生产,它们几乎变成了障碍而不是帮助。我认为设计文档对于良好的沟通和在开发某些东西时澄清你的想法是必要的,但之后需要付出巨大的努力才能正确维护它们。

我确实拍摄白板照片并将 JPEG 保存到源代码管理中。这些是我最好的一些设计文档!

在我们的模型(相当特定于业务流程应用程序)中,设计工件包括:

  • 领域数据模型,带有对每个实体和属性的注释
  • 属性文件列出了每个实体上的所有修改和创建触发器、计算属性、验证器和其他业务逻辑
  • 一组屏幕定义(视图模型)

然而,这些真的算作设计制品吗?我们的框架是这样的,这些定义用于生成系统的实际代码,因此它们可能超出了设计范围。

但事实上,它们承担双重职责是很强大的,因为根据定义,它们是最新的,并且始终与代码同步。

这本身不是设计文档,而是我们的 单元测试 服务于“描述”他们测试的代码应该如何运行的双重目的。最好的部分是他们 永远不会过时, ,因为我们的单元测试必须通过才能使我们的构建成功。

我认为没有任何东西可以取代良好的老式设计规范,原因如下:

  • 它是向其他人传达您将如何构建应用程序的一种方式。
  • 它可以让您从头脑中汲取灵感,这样您就不必担心同时跟踪一百万件事情。
  • 如果您必须暂停一个项目并稍后返回该项目,那么您就不会重新开始您的思考过程。

我喜欢在设计规范中看到各种信息:

  • 对您应对当前挑战的方法的一般说明
  • 您将如何监控您的申请?
  • 有哪些安全问题以及如何解决这些问题?
  • 流程图/顺序图
  • 开放式问题
  • 已知的限制

单元测试虽然是应用程序开发中的一项出色且可以说是至关重要的项目,但并没有涵盖所有这些主题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top