FAQ - 什么是软件工厂?(翻译)

简介:
前言
  Microsoft Patterns & Practices已经提供了不少“软件工厂(Software Factory)”,例如 Smart Client Software FactoryWeb Service Software FactoryMobile Client Software Factory。而在CodePlex上也已经有了Microsoft P & P Team正在开发的下一代产品: Web Client Software Factory。这是一个非常有价值,非常值得关注的项目,目前正在以Weekly Drop的形式发布,按照计划将会在年底发布。在 Terry Lee和我都曾经对它进行过介绍。
  那么什么是“软件工厂”呢?它的作用又是什么呢? Jezz Santos在写了数篇有关这方面非常精彩的文章,他本人已经同意我将其文章进行翻译。我将陆续将它们翻译成中文,帮助大家和我自己理解一些概念。
原文信息
  原文《 FAQ - What is a Software Factory?》公布在 Jezz Santos的博客上,版权归作者所有。
 
正文翻译
  什么是“软件工厂”?这个问题经常能够引发下面的疑问:
   如何给出软件工厂的定义?紧接着考虑下面的问题: 我创建了一个命令行程序/一个指导性的包(Package)/一段脚本用于生成一些有用的组件 - 请您作出选择,它们也是软件工厂吗?
  想用三言两语就给出清楚定义还真不是一件容易的事情。
背景
  事实上这并不是个足够完整的问题,大多数人也正有这样的疑问,而且他们正在通过一些已经做好的东西或者重新去理解它们的区别,来设法搞清楚自己是否已经有了一个“工厂”或者“工厂”对他们来说还是个新事物。
解答
  让我们先从“软件工厂”的官方定义开始谈起,然后我会尝试着使用更简单的词汇来解释它,并且使用一些示例来给出这些定义的衍生,希望能帮助您理解这些。
  您能在 这里找到一个官方而泛泛的定义,但是我想从 JackKeth的那本有关 软件工厂的书中所使用的那段短小些的定义开始。您也能够在 我们的术语表中找到另一些定义。
软件工厂是 使用一个基于软件工厂模式(Software Factory Schema)的软件工厂模版(Software Factory Template)来配置外部工具,过程和内容的一条产品线。通过适配(Adapting),装配(Assembling)和配置一些框架化的组件,能够 自动化地对一个典型架构的产品进行开发和维护变化的工作。”
  呃……好吧(“咕嘟”——咽了一下口水), 这是一个学院派定义,我们来将它进行一点小小的延伸:首先,“软件工厂”的基本元素是一条使用一系列的工具(比如编辑器,代码模版,领域专用语言,命令行 工具等等)创建出来的“产品线”。这些工具会是用一个被称为“工厂模版”的东西来配置普遍适用的,能够扩展的开发工具(就像Visual Studio)。工厂模版实际上只是“工厂规范”的一个物理实现(例如,一个工厂模版包含了工具,指导和这些工具创建和配置一些东西的蓝本)。接着,则会 通过组装一些必须的组件,把这些工厂创建出来的不同产品的开发和维护过程进行自动化操作——理想情况下,这个过程会复用那些作为产品基础而存在的框架。
  好吧,这里最关键的一点是 产品线工厂规范,它的 工厂模版以及一个 产品。在我看来,如果您有了所有这些,您就已经基本上接近于有了一个工厂了,因为剩下的玩意儿都是通过这些东西来得到的。
  “框架”也是非常重要的东西,因为有了它, 您就已经在“为产品线上的产品定义变量”这个过程中迈出了一大步,大多数的工作它已经帮你完成了。请记住,您不应该为一个您还没有解决的方案创建一个工 厂,因此,创建一个工厂最基本的前提是:您已经有了对一些解决方案进行自动化操作的资本。
[当Visual Studio团队发布了一些能够帮助您自定义软件工厂的工具,那么微软对于这些术语的定义会变得更为具体,而且我猜想,如果要完全符合这个具体的工厂模 版,您只能使用被微软认可的软件工厂。但是就目前来说,您任何可以使用当前的工具和一些您自己的“创新”来创建符合上述定义的软件工厂。]
产品
  让我们先从 产品谈起,首先搞清楚一点:一个产品是一个特定的工厂创建的产物。
“一个 产品是一个工厂 生产线的最终产物”
  千万不要将“生产线(production line)”和“产品线(product line)”混淆起来。
  现在,一个产品并不需要真正的完成,结束,包装成一个像“Microsoft Word”这样的东西,虽然可能大多数人听到“产品”这个词的第一反应是这个。这个单词的含义只是描述一个工厂的产出。
  例如,一个汽车引擎制造商生产出了汽车引擎,这就是它的“产品”,然后把引擎卖给其它的工厂,让它们将这些引擎组装进一辆汽车。一个汽车引擎依旧属于一个引擎工厂的“产品”。
  所以,所有的工厂会建造一个有用的产品,这个产品可能会被组装进入一个更大的产品,当然也有可能不会。
  工厂会为这个产品定义一个模型,这就是这个产品的“模式(schema)”,它包含了产品的各个部分和它们的变量。这个模型为用户提供了一个独立创建,配置或者维护产品各部分的方法。
工厂模式(Factory Schema)与工厂模版(Factory Template)
  我们已经花了不少功夫定义了 工厂模式(Factory Schema),所以我不打算在这里再完全重复一遍。
  不过我们在这里这么说已经足够了:“工厂模式”是产品(和它的变量)以及它的各种配置的蓝图——也就是工厂产物的蓝图。它不只定义了工厂该建造那些东西,也包括建造这些东西方式,建造时所用的“零件”,以及在建造时所使用的工具。
  顺便提一下,“ 工厂模版(Factory Template)”则是指工具、运行时、文档和框架等其它作为您的工厂的的组成部分一起发布的那些东西——例如一起打包在一个MSI安装文件中。
产品线
  那么现在就谈一下 产品线——这到底是什么?这可不是指“生产线”。
产品线,由工厂产物的 变量组成。
  好,为了真正对开发有用,工厂需要能够创建产品的多个实例(我们把其中的一个叫做一个“产品变量”)。更准确的说,一个产品“变量”就是每一个您生产出的 实例,而不是产品的实际 类型。一个工厂能够定义多种产品的“类型”(每一个对应了产品的一个可变的方面)。
  因此,您的产品线定义了您工厂的 解决方案领域
[您能够在 这里 得到有关一个产品可变性以及其变量(是什么?应该如何使用?)更深入的讨论。]
 
  那么,您的 一个命令行程序/一个指导性的包(Package)/一段脚本是一个软件工厂吗


本文转自 jeffz 51CTO博客,原文链接:http://blog.51cto.com/jeffz/60507,如需转载请自行联系原作者
相关文章
|
2月前
|
运维 监控 安全
「译文」软件自动化发布管理的三个步骤
「译文」软件自动化发布管理的三个步骤
|
5月前
|
开发者
这款酷似飞书文档的工具开源了,支持私有部署!!!
这个酷似飞书文档的工具真的非常好用,体验和飞书差不多,同样支持 Markdown 语法,经常使用 Markdown 写文档的同学一定要试试了,相信你一定会喜欢上它,这个工具是我用差不多20天左右的时间开发的,而且它的前后端项目现在都已经开源了,如果你能帮我推广那我更是感激不尽。所以,如果你想有一个可以私有部署的文档工具,而且体验还特别棒的的,那就快来试试这个吧,相信它不会让你失望的。
|
1月前
|
文字识别 API 语音技术
MacOS平台翻译OCR软件,双管齐下,还可自定义插件,为其添砖加瓦!
MacOS平台翻译OCR软件,双管齐下,还可自定义插件,为其添砖加瓦!
|
1月前
|
人工智能 自然语言处理 API
Claude3发布,将取代ChatGPT4?附免费注册教程
Claude3最新发布,ChatGPT4王者地位将面临挑战。
5824 4
Claude3发布,将取代ChatGPT4?附免费注册教程
|
3月前
|
搜索推荐 算法 UED
技术文档指南:版本说明、网站文案、FAQ、案例研究与内容优化
Release Notes 通常是软件文档的一部分,是在新产品发布时提供给用户的简短、高级摘要。它们包含有关更新的重要信息,包括新功能、增强功能、错误修复,通常还包括已知问题。每个版本说明与特定软件版本相关联,并帮助用户了解该特定版本中可以期待的哪些更改或改进。有效的版本说明将以用户为中心的方式讨论新功能或增强功能,识别用户需要执行的任何操作,突出已知问题和解决方法,并在必要时包含指向更详细信息的链接。它使用户能够更有效地使用软件并解决潜在问题。
52 0
|
11月前
|
算法 安全 测试技术
嵌入式软件测试笔记2 |TEmb方法概述
嵌入式软件测试笔记2 |TEmb方法概述
100 0
|
网络协议 C++ Windows
西门子S7-200SMART入门,如何建立通信连接,如何创建程序
西门子S7-200SMART入门,如何建立通信连接,如何创建程序
西门子S7-200SMART入门,如何建立通信连接,如何创建程序
|
传感器 监控 自动驾驶
Paper:自动驾驶领域SAE标准之《道路机动车辆驾驶自动化系统相关术语的分类和定义》官方英文原文翻译与解读(一)
Paper:自动驾驶领域SAE标准之《道路机动车辆驾驶自动化系统相关术语的分类和定义》官方英文原文翻译与解读(一)
Paper:自动驾驶领域SAE标准之《道路机动车辆驾驶自动化系统相关术语的分类和定义》官方英文原文翻译与解读(一)
|
数据可视化 搜索推荐
如何建立你的阅读管理系统?以 FlowUs 和 Notion 等笔记软件为例
在《FlowUs 生态:如何建立你的书籍管理系统?》中,我事实上主要介绍了导入书籍信息的几种路径。今天,在这篇文章的基础上,我将继续介绍如何使用 Notion 类工具建立阅读管理系统。 注释:本文方法对于 FlowUs 、Notion 等笔记软件均通用。本文以 FlowUs 为例。
219 0
如何建立你的阅读管理系统?以 FlowUs 和 Notion 等笔记软件为例
|
数据库 索引
免费的翻译接口用不起不要太爽啊!(2)
免费的翻译接口用不起不要太爽啊!
174 0
免费的翻译接口用不起不要太爽啊!(2)