您是先设计/绘制/绘制开发解决方案然后开发它吗?如果是这样的话? [关闭]

StackOverflow https://stackoverflow.com/questions/155948

  •  03-07-2019
  •  | 
  •  

我与希望在其业务中更好地使用技术的决策者合作。我发现一张图片胜过千言万语并且在一些图表中对系统进行原型设计总是为讨论提供了很多帮助。我使用了Visio,UML(有点),思维导图,流程图和模拟WinForms来启动这些赞助商的愿景,以确保每个人都在同一页面上。我似乎总是在寻找可以用来将业务愿景编织到开发过程中的共同流程,以便我们最终都达到同一目的,“解决问题的功能

我正在寻找关于如何处理设计过程的建议或Cliff说明,以便它适用于可能只需要一周时间开发的应用程序,但也可以用于包含更大的项目。

我知道这深入研究了UML领域,但我发现我很难找到适当使用各种图表类型的指南,更不用说帮助业务用户理解图表并与之相关。

您使用什么来捕获系统/应用程序的愿景,然后呈现给项目的赞助商? (所有在你编写一行代码之前)......

有帮助吗?

解决方案

纸或白板!

对于单独的开发者,我推荐纸张。至少在开始时,最终你可能想用UML将其形式化,但我认为没必要。

对于一组合作(物理)的开发人员,我建议使用白板。这样每个人和每个人都可以看到它可以改善和贡献。同样,你可能想要在这一点上形式化,但我仍然不认为它的必要性

当我第一次开始做OOP(或设计一个算法)时,我会在编码时全力以赴。但在做了一些合理的复杂项目之后,我肯定会看到在系统中绘制不同对象之间的交互的好处。

我自己做项目,因此我使用大量索引卡来设计类和纸张以进行交互。关键是它需要易于改变。我曾经使用过图表编辑器Dia来做UML,但是进行更改太困难了。我希望能够快速做出改变,这样我才能找出最有效的方法。

值得一提的是TDD和做“尖峰”[1]项目在设计系统时也有帮助。

[1]来自C#的Extreme Programming Adventures,第8页:

  

"穗"是极限编程术语   意思是“体验”。我们用这个词   因为我们认为穗是一个穗   快速,近乎蛮力的实验   旨在学习一件事。   想想通过一个大的钉子   板。

其他提示

对于小型或非常有限的任务,我认为开发人员几乎普遍认为任何类型的图表都是不必要的步骤。

然而,在处理更大,更复杂的系统时,尤其是当需要两个或多个进程进行交互或需要复杂的业务逻辑时, Process Activity Diagrams 非常有用。我们在开发中使用相当纯粹的敏捷方法,并且发现它们几乎是我们使用的唯一类型的图。令人惊讶的是,您可以通过将前面的所有大件连接到流线来优化高级设计。我不能强调为你的问题定制图表的重要性,而不是相反,所以虽然链接提供了一个很好的起点,但只需添加有意义的代表你的系统/问题。

至于存储,白板可以很好地进行头脑风暴,当想法仍在改进时,但我认为一旦这个想法采取相当最终的形式,电子和维基更好(OmniGraffle是图表之王如果你足够幸运能够在工作中使用Mac :)。拥有一个转储所有这些图表的区域对于新手来说非常有用,可以快速掌握整个系统,而无需深入挖掘代码。此外,因为活动图表示较大的逻辑块,所以不存在始终必须使它们保持最新的问题。当您对系统进行大的更改时,是的,但希望可能使用现有的图表来计划更改。

阅读Kruchten的 4 + 1意见

这是一种可以继续的方式。

  1. 将用例收集到用例图中。这将显示演员和用例。该图不是从很多细节开始的。

  2. 优先使用用例以专注于高价值用例。

  3. 写叙述。如果需要,可以绘制活动图。

  4. 以上完全是非技术性的。 UML对要使用的形状施加了一些规则,但除此之外,您可以用最终用户术语描述事物。

    1. 您可以进行名词分析,绘制类图来说明实体和关系。首先,这些将是用户术语。没有令人讨厌的技术内容。

    2. 您可以展开活动图或添加序列图以显示处理模型。这将从最终用户,非技术性的处理描述开始。

    3. 您可以遍历类和活动图,从分析转向设计。在某些时候,您将退出分析并进入工程模式。用户可能不希望看到所有这些图片。

    4. 您可以为物理视图绘制开发视图和部署图的组件图。当你的系统概念扩展和细化时,这些也会迭代。

在设计应用程序时(我主要创建Web应用程序,但这确实适用于其他应用程序),我通常会创建用户故事以确定最终用户确切需要什么。这些形成了典型的“业务要求”。

在确定用户故事后,我创建了流程图,以列出人们在使用该应用时将采取的路径。

在该步骤(有时获得批准过程)之后,我创建界面草图(笔/铅笔和方格纸),并开始数据库的布局。这个以及下一步通常是最耗时的过程。

下一步是绘制草图并将其转换为清理过的线框。我使用OmniGraffle进行这一步 - 它比Visio早了几年。

在此之后,您可能希望执行典型的UML图表或其他对象布局/功能组织,但业务人员不会太在意这类细节:)

当我整理设计时,我很关心将这些想法干净利落地传达给观众。观众由(通常)不同背景的人组成。我不想做的是进入“教学模式”。对于特定的设计模型。如果我不得不花费相当多的时间告诉我的客户什么是实心头的箭头意味着什么,它与中空的方式或方形意味着什么不同于圆圈,我没有取得进展 - 至少没有取得进展我想。

如果它是非常非正式的,我会在白板或纸上画出来 - 最多是块状和简单的箭头。此时粗略设计的要点是确保我们在同一页面上。它会因客户而异。

如果它更正式,我可能会拿出一个UML工具并将一些图表放在一起,但大多数情况下我的客户不会编写软件,而且内部可能只是略微有趣。我们将其保持在“泡沫和线条”状态。水平并可能将一些项目符号列表放在一起,需要澄清。我的客户通常不希望看到类图或类似的东西。

如果我们需要展示一些GUI交互,我会在Visual Studio中将一些简单的窗口原型放在一起 - 它快速而简单。我发现客户可以很容易地与之相关。

简而言之,我制作了简单的图纸(以某种形式),可以将设计传达给感兴趣的各方和利益相关者。我确保我知道我想要它做什么,更重要的是 - 他们需要做什么,并与之交谈。它通常不会进入杂草,因为人们迷失在那里,我没有找到花时间把所有东西都计算到n度。最终,如果客户和我(以及所有其他相关方)在通过设计谈话后都在同一页面上,我会很开心。

我是一个敏捷的人,所以我倾向于不花很多时间去绘图。有时候在白板或餐巾纸上画草图有助于确保您了解特定的问题或要求,但没有什么比在客户面前获得工作软件更能让他们看到它是如何工作的。如果您的客户会接受频繁的迭代和演示设计,我会说它去做。如果他们可以通过单元或集成测试的形式获得早期反馈,那就更好了(比如 Fit 在这里运作良好)。

我一般不喜欢原型,因为原型常常成为最终产品。我不幸在一个基本上扩展商业产品的项目上工作,结果证明这是一个“概念证据”。包装和销售。在针对核心应用程序记录了超过1000个缺陷(不包括我们当前正在进行的任何增强或自定义)之后,该项目被取消。

我尝试过使用UML,发现除非看到图表的人理解UML,否则他们没有什么帮助。屏幕模型通常不是一个坏主意,但它们只显示直接影响用户的应用程序的一面,因此您不会为任何不呈现的内容获得太多里程。奇怪的是,像Visual Studio中的工作流设计器这样的工具可以生成非常清晰的图表,非开发人员很容易理解,因此,如果您的应用程序非常复杂,可以从中获益,那么它就是生成核心应用程序工作流的好工具。

尽管如此,在我多年来使用的所有方法中,没有什么可以让用户亲自动手让你知道你对这个问题的理解程度。

我建议阅读Joel关于“无痛功能规范”的文章。第1部分标题为“Why Bother?”

我们在工作时使用样机屏幕(“Quick and Easy Screen Prototypes”)。改变屏幕很容易,而且这些只是一种设计。

然后将模型包含在包含规范的Word文档中。

来自 概念性封锁:更好的创意指南 <詹姆斯·L·亚当斯(James L. Adams):

  

知识分子导致了   精神战术的低效选择   或缺乏知识分子   弹药。 。 。 。解决问题   使用不正确的语言的问题   (口头,数学,视觉) - 作为   在试图解决问题   数学上它可以更容易   视觉上完成

(第71页,第3版)

毋庸置疑,如果您选择使用图表来捕捉可能通过数学更好地捕获的想法,那么同样糟糕。当然,诀窍在于找到正确的语言来表达问题和解决方案。当然,使用多种语言来表达问题和解决方案可能是恰当的。

我的观点是你假设图表是最好的方法。我不确定我是否愿意做出这样的假设。通过构建需求和提议设计的其他方法,您可以获得更好的答案(并且客户可能对结果更满意)。

顺便说一下,强烈推荐使用Conceptual Blockbusting。

如果你正在开发一个大型的,那么UML的建议很有效。与许多利益相关者和许多贡献者的风险规避项目。即使在这些项目中,开发原型以向决策者展示也是非常有帮助的。通常通过UI浏览它们和典型的用户故事就足够了。也就是说,您必须注意,关注决策者的UI会使他们忽略一些重要的后端问题,例如验证,业务规则和数据完整性。他们倾向于将这些问题写成“技术”问题。问题而不是商业决策。

另一方面,如果您正在开发一个敏捷项目,可以快速更改代码(并快速回滚错误),那么您可以使用所有工作制作进化原型。您的应用程序的体系结构应该足够灵活,足以支持快速更改(例如裸体对象设计模式或Rails风格的MVC)。它有助于建立鼓励实验的发展文化,并承认BDUF不是成功运作软件的预测指标。

4 + 1次观看仅适用于技术人员。只有他们有足够的兴趣。还记得十几次你努力与客户讨论用例图吗?

我发现与大家合作的唯一事实就是向他们展示你的应用程序的屏幕。你说自己:一张图片胜过千言万语。

奇怪的是,有两种方法对我有用:

  1. 向用户提供完整的用户手册(甚至在开发之前),或者
  2. 使用看起来不像完成的应用程序的模型:首先讨论你应用程序的主屏幕。如果满意,请继续讨论模型,但一次只能讨论一个场景。
  3. 对于选项(1),你可以使用你想要的任何东西,这并不重要。

    对于选项(2),从笔和纸开始是完全没问题的。但很快您最好使用专门的模型工具(只要您需要编辑,维护或组织模型)

    我最终在2005年编写了自己的模型工具,它变得非常流行: MockupScreens

    这是我所知道的最完整的模型工具列表。其中许多是免费的: http://c2.com/cgi/wiki?GuiPrototypingTools

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