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