我试图安装一个储存库的可重复使用的代码。我想具有的每一码可重复使用的模块具有某些"成熟程度"的评价。该评价将被定义为在哪个级别可重复使用的代码在一定的要求。最高的成熟度,将以最高程度的标准的一个预先设定的要求。

例如:
水平;要求;描述
平0;代码是合法使用;是代码的法律使用中的商用行业/跨多个合同等?
第1级;基代码线和符合级别0要求;原型代码,第3次缔约方的工具,等等
2级;具有功能的接口和意见,并符合级别1的要求;足够的文件每一类和功能;能够确定功能的意见
3级;坚持编码标准和满足2级的要求;下定义的编码标准和通过代码检查工具的测试
级别4;包括试验的情况下,满足第3级要求;有足够的测试案例,以试验的所有功能的代码
平5;批准通过再利用委员会和满足级别4的要求;审查重复使用专家和同行和验证它符合所有水平的成熟

我想知道,如果这成熟水平应该是一个分层的结构,其在以移动到一个新的水平,你需要满足的要求的所有以前的水平(正如我上面所示的)?

或者如果它应该是一个子集中的要求,以满足一个新的水平?

例如,我们必须满足x y要求,我们就可以移动到一个新的水平(要求将是相同的如前所述)。

0级,满足了0出的6个要求
1级,以满足1/6的要求

我看的问题,与集方式是一些要求应该有一个更强有力的加权,而在这种做法,将不会被考虑到(除非我开始得到特定的一样,符合一行的b和x y,等等)。但随后可能开始变得复杂。

有没有人这样做之前,如果是这样,你怎么设置你的图书馆?你有一个成熟的水平在所有或某些其他结构?任何输入将不胜感激。

有帮助吗?

解决方案

设置代码重用存储库是一项艰巨的任务。主要的困难不在于如何设置,而在于 如何传达各个库的存在 在存储库中。重用库只有在被使用的情况下才是好的,只有在已知的情况下才会使用它们,只有在代码质量高并且满足用户的需求时才会被广泛使用。

我喜欢成熟度级别的想法,但正如其他人所发布的,可能有相当多的设置/构建工作要做。我想到了一种类似的方法来构建应用程序 - 我将其称为置信度。在应用程序构建领域,低置信度构建是指未通过单元测试的构建;中等置信度可能包括通过单元测试,但不包括集成测试,等等。这是与 QA 和用户沟通期望的良好机制。类似的机制可能适用于图书馆。

文档注释是必须的,并且必须像在代码中一样小心地对待它们。评论应传达内容、原因、地点、时间、方式、内容等。您的构建过程应该将文档发布到众所周知的位置(同样,沟通是关键)。

在沟通过程中,时不时地展示现有的内容并没有什么坏处。再次!沟通。

因此,每个库的构建至少应该:

  • 发布库(也许通知订阅者)
  • 发布文档
  • 运行单元测试
  • 发布成熟度级别

至于成熟度级别,我会用“级别名称”和级别含义的描述来定义它们。发布升级或降级的标准。事实上,现在我想了一下,也许你想要一组正交标准:代码级别、文档级别、使用策略(即必须拥有 XYZ) 和其他属性的许可证。 不过,我确实建议您以较小的增量来实现这一点。 归根结底,向最终用户提供功能才是最重要的。

您还必须传达一种将可重用位自然推入存储库的心态。开发人员通常必须有动力这样做。寻找重复和同行评审的静态代码检查工具只能做到这一点。必须有人实际完成将代码移动到存储库的工作。

最后,我建议您在存储库的设置、构建、维护和通信中使用尽可能多的工具支持。否则,就像任何非代码工件一样,您将面临一定量的熵,随着非代码工件过时,该熵会降低其值。

其他提示

我认为您会发现很难确保整个开发团队足够准确地遵循这些准则。特别是当指南可能以一种或另一种方式解释时。此外,如果有人通过添加测试来改进一段代码,然后突然必须转移到另一个项目,这将是一个很大的痛苦。更有可能的是,此类代码将保留在最初放入的项目中,随着时间的推移,成熟度级别将变得毫无意义。

我在一家大公司看到的一种行之有效的方法是:

  • 所有第三方库都致力于一个特殊的目录,并且始终包含版本号。
  • 我们自己的公共库是根据 参考 他们必须做其他事情。例如。如果实用程序代码引用 Infragistics 库,然后这段实用程序代码进入 InfragisticsUtils 图书馆。
  • 我们自己的公共库形成了清晰可辨的“单元”,并进入单独的库中。例如,处理证券定价的代码库是一个单独的项目。
  • 所有不满足上述任何条件的可重用代码都会进入包罗万象的状态 Utilities 项目。
  • 我们自己的库被编译并发布到一个共享位置,项目可以在其中引用它们。由项目的开发团队决定是否要引用已编译的二进制文件或仅将实用程序项目包含到其解决方案中。

显然,您在包罗万象中找到的代码质量 Utilities 库可能会有很大差异。为了缓解这个问题,我们只是确保来自不同开发团队的两个人审查了所有签入 Utilities. 。这会清除掉很多不该放的东西!

我想大的代码库将包括CM工具和wiki工具。该CM工具应使用水平的想法(如你建议)的质量是结构化的,因为它的结构代码。维基应该充当什么样的软件可以做“广告”,以及它如何帮助你。本wiki还可以继续喜欢,信息哪些项目正在使用的代码,它是如何使用的评价,以及如何使用它的例子。如果有人担心开发团队以下水平的准则,应该指出的自我监管是如何工作的,并给它与维基如何运作的例子。

现在,在CM工具的结构是重要的。它的目的是传达代码的质量,所以你知道你进入,当你使用它。例如,如果你写一个简单的类几乎没有任何意见,它并没有真正坚持编码标准(可能是原型),那么这将是进入\ sw_repository \ 0级\ ExamplePrototype。

也许有人然后采取该一段代码和添加的注释并把它达到标准。则该人将其放置在\ sw_repository \ 1级\ ExamplePrototype。

然后该同一人,一会儿后,创建用于ExamplePrototype单元测试。那么这会去level2的等等。

定义的水平应该采取一些想法。他们真的应该有点顺序即使例如,你写单元测试的原型代码,但它并不能满足意见和编码标准,然后它被放置在0级呢。然而,它会很容易去level2的,如果这些意见和标准支付。

有关我的图书馆,我只是把我写的,可以跨多个应用程序使用的代码。如果代码是针对特定的应用程序,然后它不会进入图书馆。随着越来越多的应用程序使用它,虫子得到精确计算所以我从来没有想到它是没有错误的时候了。虫子会不断地发现和修复为您的图书馆到期,并且强调了与不同的应用程序。它永远不会是没有缺陷,但随着时间的推移将接近可靠性。 此外,当我意识到了一些东西API是错的,我不担心,并尽快重构API。点击 点击 这是我在C ++中点击库 http://code.google.com/p/kgui/

多年来微软已经大倡导者,对于什么是被称为 软件工厂, 很大一部分是致力于解决该问题的重用。

什么是问题的重用?首先,它是很难的。这是非常难以拿出一个图书馆和API,这将有助于超越眼前的需要的项目。你怎么预见未来?此外,该问题的集中式存储库,既作为一个知识基础和充满活力的社区的做法是非常具有挑战性。你怎么做的东西既是非常灵活又容易使用?许多人尝试和失败。既 软件工厂软件产品线 试图解决这些问题。

祝你好运!

试剂盒中提到的的最重要的问题:重用即可。 这个想法的其余部分是好的,但它并不比一个更详细。

我的意思是,我自己也有麻烦维护我自己的重用库。有时我这样做是非常具体项目的实施,还是我做的第n个原型的一些想法,这些都不曾进入我的媒体库。

如果你真的在具有代码重用库成功,所使用和维护的许多开发商,以规范的方式,比的胜利。你需要一个版本控制系统和bug跟踪系统,后者由两个项目所有者和使用者使用。你需要沟通和贡献的手段。具有使用了项目开发者屈指可数显着提高其质量。实施变得更好。文件被创建。 API和功能设计都在一个更高的水平。委员会是一个很好的事情,但它不能决定,怎么好定的代码是,实际上并没有使用它。它可以决定代码是否符合特定标准,但符合标准是不够好的库。

你需要尽最大努力确保,你没有漂浮吨代码片段,所有这些都可以或多或少地做一些事情。 OK,任何设计决策都有优点和缺点,但我认为,它更有意义的一个项目给定任务开始和分支吧,如果真的有必要,但要保持项目团队之间活着的沟通,并考虑(部分)合并回来。

不要太担心分类不同项目的质量。如果一个项目是坏的,那么用户/开发者将它推到更好的水平。大多数人都聪明足以看出,当一个库是好的,当它不是。你真的需要把你的能量在这些共生的效果,而不是试图负担参与者严格的规定。

只是我2美分...;)

看就会Tracz的,之类的东西“一个使用的程序推销员的自白”,由惠普的重用拉比,马丁GRISS。

我想您所想太多非问题。

你是怎么设置我的图书馆?轻松,如果在两个或多个项目中使用相同(或几乎相同)的方法,将其移动到库中。

它被认为好方法有自己的图书馆,但千行之一是一片废墟!

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