dsi*_*cha 13 production definition semantics
像几乎所有编程一段时间的人一样,我熟悉术语"生产代码",并且对它的含义有一种模糊的感觉.但是,有人可以提供一个半严谨的定义,因为维基百科和谷歌似乎不能?似乎生产中有很多灰色区域,例如一小部分人使用的内部工具,因此在UI,文档等方面没有"正式化",而且开源应用程序也是如此.功能齐全,合理的无bug和工作,但缺乏润色,UI和广泛的测试.
Wil*_*ung 18
生产意味着您需要可靠,一致地工作的任何事物.
无论是构建脚本还是面向公众的Web服务器.
当其他人依赖你的代码时,特别是那些可能不理解它的人(即使是"智能"开发人员,但可能不在你的小组中,但使用你编写的库),该代码就是生产代码.
这是生产,因为当生产代码失败时,"工作停止"和"资金丢失".
我理解的定义是,生产代码是在实时非测试台系统上安装或使用的任何代码.公司内部使用的服务器是生产系统,如果它是公司员工使用的实时系统.这里的要点是,在编写代码的公司内部服务器上运行的代码可以是生产代码.
通常,在查看内部代码时,区别在于维护代码的组是否与使用代码的组分开.如果组是分开的,则代码是生产代码的可能性很小.如果运行业务取决于代码,那么它肯定是生产代码,即使它是在内部开发和维护的.
编辑:简短的回答:如果你“把农场押在它上面”,那就是“生产”。
这是一个很好的问题——一个绝对关键的区别,经常因为误解而给每个人带来麻烦。什么是“生产”的问题是什么是“环境”的相关问题的子集。
因此,部分答案是“生产”是最重要 、最值得信赖的“真实”事物。
所以现在我们必须定义“环境”(然后重新审视“生产”)。 我们还远远没有得到令人满意的答案。
我们程序员经常使用术语“环境”来指代由执行软件的硬件组成的计算机系统。该软件是我们编写的代码加上它所依赖的由其他人编写的软件。我们编写代码并将其与其他软件集成,然后我们通常通过一系列逐步升级的测试(单元测试、集成测试、功能测试、验收测试、回归测试等)来运行集成的软件,直到我们最终运行以完整的方式集成软件。
当然,并非所有事情都是完全自动化的。通常涉及很多人,并且他们需要执行手动流程。我们程序员寻找尽可能多的自动化流程的方法,但我们工作的系统中始终存在“人/机边界”。通常,在任何特定情况下都存在许多这样的边界。
另一方面,可能根本没有任何重要的自动化。例如,很久以前,当我们有一屋子的人进行手工劳动来生产产品时,我们就谈到了“生产” 。因此,我们的“生产”“环境”中不必存在任何自动化。还有一个中间立场,其中涉及的自动化不包括软件,例如一个人运行织布机织布的情况。
此外,可能没有产品,因为我们已经调整了“生产”“环境”的语言以包括无产品的服务提供商。
同样,测试可能不涉及软件,因为我们可能正在测试非软件驱动的机器(例如织机)甚至人员(培训和评估)。
现在我们已经触及了“环境”的所有关键要素:
intent有一个正在追求的目标intent需要一个意图,因此必须有一个sponsor(人或团体,但不是机器)来指定intentintent是通过各种processes不同的执行来追求的actorsactors可能是人,他们可能是在硬件上执行的软件,或者他们可能是非软件驱动的机器,因此可能存在也可能不存在自动化现在我们可以正确、完整地定义我们原来的术语了。
一个
environment由所有的processes和他们的代表其actors合作追求特定的目标组成。这意味着软件在硬件上执行,这意味着非软件驱动的机器,这意味着人们履行各种职责。主要定义的是the ,而不是 its或 its 。intentsponsorintentenvironmentprocessesactors
此外...
如果
intent所追求的特定目标environment是sponsor's最终目标,通常涉及生产product或提供service以换取金钱,那么我们将其environment称为production。
现在我们可以更进一步。
如果
intenta中所追求的environment是a的验证processes和actors准备production,我们称之为a 。testenvironment我们进一步称其为“如果该测试涉及重要个人或团体及其……的最初联合” 。
integrationenvironmentprocessesactors
actors如果该准备工作涉及人类执行新 的“编程”processes,或随后的验证(评估),那么我们称之为“ 。 ”trainingenvironment
有了这些区别和定义,我们现在可以理解几种常见的场景。
Anenvironment可能会被错误标记为与其不匹配的名称intent,例如当training环境被用作时test。
anenvironment可能会被严重滥用,例如当integrationortraining在 中完成时production。
Anenvironment可能会被歪曲,例如当关键processes或actors未被识别时(例如,手动调节,或者甚至完全忽略这些人)。
可以environment通过将其processes和actors重新调整用途来重新分配任务intent。对于某些组织来说,一种非常成功的技术是在每个版本之间定期“翻转”几组(托管软件的服务器actors)。productiontesttrainingintegration
在大多数情况下,单个actor(人或硬件)可以执行多个processes可以参与多个environments. 例如,单个计算机服务器可以托管执行事务的软件,同时还托管执行或运行功能production的其他软件。testtraining
通常,一个实例一次actor只能参与一个。在极少数情况下,如果相互兼容,则可以共享environment一个。大多数时候,尝试这种共享是非常不明智的,因为它们并不真正兼容。一个完美的例子是在也支持 的服务器上运行,导致整个服务器出现故障而导致停机。actorenvironmentsintentsintentstest processproduction processestest
因此, 的intent必须environment具有非常广泛的解释范围,包括可用性、可靠性、性能、灾难恢复、准确性、精确性、可重复性、寿命等概念。这意味着actors和processes必须经常被解释为包括诸如此类的内容提供电力、冷却、备份和冗余。
最后,请注意,情况可能会变得相当复杂。例如,actor开发团队 ( ) 可能会指派一台台式计算机 ( sponsor) 来托管其源代码控制 ( process),团队的主要工作 ( ) 依赖于该源代码控制 ( production)。然而,IT 人员将同一台台式计算机仅仅视为开发人员工作站(development,而不是production),并且当它出现硬件问题时,会轻蔑和冷漠地对待它。但开发人员正在生产production代码,那么他们不也是代码的一部分吗production?观点很重要。
编辑:生产质量
可靠的验证(testing)方法应该从打包的代码中获取代码development,并通过一系列tests(集成、TQA、功能、回归、验收等)运行它,直到它被另一方“盖章”以供production使用。然而,这使得包装质量却并非如此。只有当实际将其部署到最终级别的.production productionproductionsponsorenvironmentintent
但是,如果您的组织只是生产该包(其product)供其他人使用,那么这样的发布就接近production该组织将经历的情况product,因此通常会扩展该术语production来应用而不是澄清这一点这是质量。实际上,该组织的环境包括并参与其开发/发布工作,从而实现该目标。production productionactorsprocessesproduct
我说过这可能会变得相当复杂......