在为其他位置的其他开发人员设计类时,您如何从构思到实现?

时间:2009-09-15 09:41:27

标签: oop class-design

我正在寻找灵感来自如何在多个开发人员在不同位置的项目中从头设计课程(所以没有白板会话。)

假设您的任务是实现一个相当大的功能,该功能将在项目后期由其他开发人员使用。此功能需要多个类,并将与项目中已有的其他类进行交互。当然,在继续实施整个过程之前,您需要其他开发人员的意见。现在,你如何进行?

我会从最好的工具开始:笔和纸。但那又怎样?我想在我的论文中将我的线条,气泡和符号表示给其他开发者的屏幕。是简单扫描和发送电子邮件的最佳方法吗?将设计写为文本是否有良好的模式?有没有可以快速建模课程设计的在线工具?我应该简单地为课程编写“骷髅”并要求反馈吗?

这里要考虑的重点是,唯一可用的通信是电话和电子邮件,因为开发人员彼此远离。

12 个答案:

答案 0 :(得分:7)

我实际上不同意“唯一可用的通讯是电话和电子邮件”。网络已经发生了很大变化,lots great new ways do {} sharingmost themfree

编辑:列表形式的链接

答案 1 :(得分:3)

不要在你试图设计系统所有类的Big或全部会话中继续它。

选择1或2个功能并从那里开始。没有单一的大型会议,而是在评估这些功能的情况下进行快速小型会议。您将能够将经验教训应用到下一个课程中。如果需要,它还允许您深入细节。

如果这将与现有代码集成,请询问相应的开发人员如何影响它。

如果我们讨论不同的子系统,请将集成点保持在最低限度并保持简单。有时你不能/不应该把许多其他团队的偏好融入其中,而是让另一个团队做一个简单的类,以最方便的代码暴露你的api。你不希望整个过程变得复杂,保持简单通常是最好的途径。

另请注意,通过这些设计会议定义集成点的所有这些投资主要是在我们讨论子系统集成时。与团队合作的大项目。你不想进入他们各自开发的部件的任何内部(除非你在谈论架构问题......但是你应该有人能够在那些团队中处理这些...),而你想要集中注意力关于如何整合。

当你的分布式团队成员在系统的同一部分工作时,情况就不同了,只要你有干净的代码(这是你应该关注的唯一反馈),你就可以继续与团队合作并将代码演变为真正需要实现的内容。对于这些团队成员,你应该有持续的沟通,如果时区差异会导致你应该至少有30-60分钟的重叠......你可以不用而且我已经完成了,但重叠真的得到了回报。

聚苯乙烯。我已经与分布式团队进行了4年的广泛合作,我上面提到了两个案例(一个大项目的子系统上的不同团队,一个特定子系统上的团队),以及那些全球分布团队中的两年。 / p>

答案 2 :(得分:1)

使用视频会议:使用笔记本电脑的micro与对方交谈,让他们使用VNC进入您的计算机,以便他们可以看到您的屏幕。

由此,使用任何建模/文本编辑器作为支持:Paint,Word,WinDesign,Objecteering等。最佳沟通方式。

PS:我同意笔&纸是最好的,但是当它适合你时,不适合外国的开发者。所以忘记扫描并通过电子邮件发送^^

答案 3 :(得分:1)

首先,我开始阅读要求和文件,并尝试粗略草图。这主要在我脑海里完成,部分在纸上完成。 (我的记忆非常好。)设计的第一阶段通常远离我的电脑!当我在车里时,想法可能会浮现在我脑海中。有时候,我甚至在一个非常小的锁着的房间里,在一个大的瓷器锅里把东西甩了一些东西时得到了新的想法。总的来说,设计理念倾向于在安静的时候pup and而且我有机会让我的思绪在一点点徘徊。

大约两年前,我确实有一个需要设计的大项目。另一位开发人员已经开始研究这个问题,但却对它完全感到沮丧,因为离开公司只是因为几周之后他还没有找到一个好的解决方案。那么,轮到我了......

我的优点是我可以在家工作,所以我做到了。我在卧室,床上用笔,纸和文件设计的第一天。我收到了我以前的同事的笔记,可以看出他做得太复杂了,所以我开始用较小的步骤来分解问题。我继续浪费纸质笔记,在脑海中进行计算,并将我的笔记与文档和其他笔记进行比较。第一天,我从未使用过我的电脑。

第二天,我开始输入技术设计并编写一些代码来测试一些原则。不过,我仍然花了很多时间远离我的电脑,在中间休息,从沉重的思维中休息一下。这花了整整一天,但最后,我把整个概念写在了纸上。

第三天,我打印了我的概念并与我的队友分享。当我继续设置代码的基本要求时,他们可以开始判断我的设计并指出缺陷。那天,他们没有找到任何东西,虽然我确实留了一些。

第二天,一位队友和我开始实施概念验证代码,这些代码可以让它全部运转起来。在两周之内,整个beta版本已经完成,只需要一些调整。当我去度假时,这是团队其他成员所做的事情。

从我的假期回来后,整个项目取得了巨大成功,功能得到了客户的好评!

所以,所需材料:小房间,笔,纸,床,大量咖啡,食物和放松。远离电脑,懒惰。 (懒惰,我的意思是:避免立即编写代码。试想一下,这会让人觉得你什么都不做......)

在设计供他人使用的东西时,您需要自己完成设计的第一部分,尽可能完整。只要坚持做大事,就可以为你的团队添加一些小东西。最重要的是:依靠你的团队在某个时刻接管你的工作,并准备好一旦他们开始移动就退后一步!

答案 4 :(得分:0)

我没有这种缺乏共址情况的经验,但我同意笔和纸方法最适合开始讨论设计的想法。 Scott Ambler谈到使用POW(普通旧白板)......是同样的想法。可以使用数码相机拍摄第一张建模方法,不要浪费时间使用工具进行花哨的UML布局,直到模型更加坚固。拍摄白板可以节省大量时间。

我想Clement Herreman提议的视频会议的使用足以讨论模型,如果你可以共享屏幕的一部分,那么每个参加会议的人都可以看到正在分析的模型图片。

答案 5 :(得分:0)

使用UML,CRC卡和其他人写 - 视频通话。此外,像digitalsamba这样的服务将允许您在任意数量的参与者之间共享您的桌面和任何文档。

答案 6 :(得分:0)

首先要写出将使用你的界面的代码。您希望该代码如何工作和外观。然后开始为该界面编写代码。

让界面帮助你,而不是让你与界面斗争。

答案 7 :(得分:0)

您可以尝试使用协作思维导图工具,例如http://mind42.com/ 例如,它并不完全适用于建模类或活动图,但在交换想法时,它可能有助于协作。

此外,您可以使用源代码控制系统,您不仅可以存储源代码原型和骨架,还可以存储模型文件(例如,来自Rational Rose或您最喜欢的建模工具)。

我以前用过来在源代码控制中存储word文档,其中包含类图的提取,但它没那么有用。

答案 8 :(得分:0)

  • 确保您有明确定义的文件要求。
  • 每个人都应该查看要求以获得概述。一个人可以负责初始设计。设计文档可以像在系统中如何实现需求的详细列表一样简单,也可以根据项目的需要复杂化为充实的UML图。
  • 使用电话会议来完成设计并进行设计。
  • 使用即时消息程序发送链接,散列详细信息,以及(稍后)根据需要进行协作故障排除。
  • 有些项目(特别是开源项目)通常有一个IRC频道,开发者和用户可以在这个频道中闲逛,互相帮助,并重温一切。

答案 9 :(得分:0)

SVN或CVS是必须拥有的,因此您应始终可以访问您的同事部分,并且可以查看现有界面的说明。此外,团队中的所有人员都应该在原型中使用文档标记来创建Doxygen等自动文档系统。因此,它可以轻松地为所有其他开发人员生成文档。 该文档应该可以在存储库中找到(主要在“doc”文件夹中),这样您就可以每天使用您的工作副本进行更新,并获得更新的文档。

软件设计也是在编写一行代码之前创建大图片的一部分。因此,应该有关于整个项目或项目部分的思维导图,UML图,流程图等。所以对于刚接触该项目的其他开发人员来说也更容易理解。

因为您具有生成的文档的接口描述,所以构建原型不是问题。由于思维导图,UML,流程图等,您可以了解整个事情。文档标记还应该包括类似“@author”的内容,这样如果您需要更深入的描述(如果某些内容不明确),您可以轻松联系它们。如果人们使用即时通讯工具(MSN,ICQ,......),这通常是一个好主意,因此您可以轻松联系他们。通常它只是一个简短的问题,所以没有必要打电话给别人或写邮件(第二天你最终得到答案)

快速原型制作是游戏中的另一回事。如果类是用于GUI,或者这是“仅”程序逻辑,则存在问题。对于GUI,有许多可用的框架工具可以生成类,因此您只需要实现内部逻辑(事件处理)和同事类的接口。 对于其他部分,我建议使用UML工具(大多数情况下你只需要类图)。还有像ArgoUML这样的免费工具在Linux上运行。这些工具也可以为不同的语言(C ++,Java)生成类设计的很大一部分

答案 10 :(得分:0)

通过博客保持简单。

每位开发人员都可以发布他们的想法和进展,并在此过程中相互评论。我过去曾经使用过它,而且非常吸引人。

如果有客户,经理或其他感兴趣的人,他们可以看到人们活跃并且在处理事情。

答案 11 :(得分:0)

您可能比开发共享词汇表更糟糕,不仅是为了讨论问题域而且是为了解决方案域。在解决方案领域,而不是谈论具体的类 - 用design patterns来描述您的潜在解决方案。

我确信他们已经熟悉了,但如果他们不熟悉 - 一个模式允许您根据它将使用的可重用设计描述解决方案的整个子部分。