软件工厂(Software factory)介绍

简介:

工厂是一个使用标准部件、工具和生产流程来规模化生产产 品设备的组织,它广泛用在工业中,然而在软件开发行业中却很少提起。现在我们写的很多应用共性大于差异,但是我们仍然需要从头开始构建任何一个项目,这是 非常低效的。由于没有一种方法可以让我们像工业上一样进行规模化生产,我们就需要不停地重复着一些代码工作,规模化一直是我们需要解决的主要问题之一。

  几年前看过两本介绍软件工厂方面的书籍Software Factories(2004年)和Practical.Software.Factories.in.dot.NET,由于现在考虑OpenExpressApp的建模支持,所以又重新整理一下并与大家分享一下软件工厂的内容。

      

  软件工厂是由微软提出来的,它作为一种创新的方法,可以帮助我们基于可重用流程和软件框架之上创建产品线,采用软件工厂将会帮助我们从系统化的重用获得规模化开发,获得更快的交付时间,更少的测试但更高的质量以及更好的可维护性等。

软件工厂是什么?

  A software factory is a software product line that configures extensible tools, processes, and content using a software factory template based on a software factory schema to automate the development and maintenance of variants of an archetypical product by adapting, assembling, and configuring framework-based components.


   Schema是分类或汇总开发工件的一个一致的方法,它在开发产品时是可配置的

产品线
 

 规模化产品开发方法-产品线工程 .pdf

MDD是什么? 

模型驱动开发(MDD)介绍

高级别的开发流程

      

提炼功能模型

架构定义流程

Software Factories书籍内容框架

  • 第1部分:介绍一下软件工厂
    • 第1章:讲述一个全书引用的一个例子,用来了解软件开发人员面对的挑战。
    • 第2章:描述当前方法和实践处理复杂性带来的问题
    • 第3章:描述当前方法和实践处理改变带来的问题
    • 第4章:描述面向对面不能很好的克服的一些长期问题,并介绍一些重要的创新,这些是软件工厂的基本组成
    • 第5章:详细的描述软件工厂,并展现了一种规模工业化的愿景
  • 第2部分:这部分包含多个主题,每一个描述了一个在第一部分介绍的重要创新,这些章节可以按照顺序的去读
    • 第6章-第9章:讨论模型驱动开发(MDD)。第6、7两章讨论模型、模式和建模相关内容,第8、9章讲解语言本质以及构建语言族的工具
    • 第10-11章:讨论产品族开发。第10章描述系统化的重用,第11章描述软件产品线内容
    • 第12-13章:讨论基于组装的开发。第12章看了一下基于平台的抽象,包括类、库和框架,第13章讨论组件和服务
    • 第14-15章:讨论了生成开发相关内容。第14章讲解了映射和转换,第15章讨论了如何从模型生成代码和其他生成工件
  • 第3部分:回顾了一下第1部分的内容,梳理了一下第2部分内容。第16章引用了一个软件工厂例子,第17章回答了一些常问的问题
  • 附件:描述抽象和提炼,以及UML的优劣

  如果想快速阅读,可以先看第1、5、6、17章,然后通过第4章可以对重要的创新有个全面的了解,通过第1、2、3可以了解当前方法的一些问题。如果想阅读详细的讨论,则可以依次看低6到15章内容。






 本文转自 jingen_zhou 51CTO博客,原文链接:http://blog.51cto.com/zhoujg/403111,如需转载请自行联系原作者















相关文章
|
设计模式 XML API
掌握工厂方法模式,打造灵活多变的软件生产线
本文深入探讨了工厂方法模式在软件开发中的应用与优势,帮助读者掌握这一设计模式,进而打造灵活多变的软件生产线。文章首先介绍了工厂方法模式的基本概念和原理,通过生动的例子解释了该模式如何在不修改代码的情况下创建不同对象。接着,文章详细分析了工厂方法模式的特点和优势,包括降低对象之间的耦合度、提高系统的可扩展性和可维护性等。最后,文章结合实际案例,阐述了如何在项目中运用工厂方法模式来构建高效、灵活的软件架构。本文内容深入浅出,既适合初学者入门学习,也能为有经验的开发者提供有价值的参考。通过掌握工厂方法模式,您将能够更有效地应对软件开发中的挑战,实现更优质的软件产品。
182 2
|
并行计算 PyTorch 算法框架/工具
社区供稿 | 本地部署通义千问大模型做RAG验证
这篇文章中,我们通过将模搭社区开源的大模型部署到本地,并实现简单的对话和RAG。
|
人工智能 PyTorch 算法框架/工具
|
消息中间件 存储 SQL
跨系统数据一致性方案的思考(上)
本文主要意在总结沉淀现有问题解决经验过程,整理解决跨系统数据不一致问题的经验方法。 跨系统数据一致性,比较优秀的解决方案就是微服务化,不同应用系统采用统一数据源方式,这样可以有效避免数据一致性问题。 但是我们很多系统由于历史原因或者业务缘由,导致非服务化情况下,又要采取数据一致性方案。
跨系统数据一致性方案的思考(上)
|
7月前
|
运维 Kubernetes Cloud Native
什么是云原生?
云原生(Cloud Native)是一种充分利用云计算弹性和自动化能力的架构理念,核心思想包括以云为中心、模块化与松耦合、自动化运维及弹性容错。其关键技术涵盖容器化(如Docker)、编排调度(如Kubernetes)、微服务和DevOps等。相比传统架构,云原生具备敏捷性、弹性伸缩、高可用性和资源优化等优势,适用于互联网高并发业务、AI/大数据平台及企业转型场景。然而,落地面临技术复杂度高、组织文化转型及安全合规挑战。未来发展趋势包括混合多云管理、智能化运维及WebAssembly等轻量化技术。Gartner预测,到2025年超95%新应用将采用云原生模式开发。
2445 3
|
11月前
|
并行计算 前端开发 物联网
全网首发!真·从0到1!万字长文带你入门Qwen2.5-Coder——介绍、体验、本地部署及简单微调
2024年11月12日,阿里云通义大模型团队正式开源通义千问代码模型全系列,包括6款Qwen2.5-Coder模型,每个规模包含Base和Instruct两个版本。其中32B尺寸的旗舰代码模型在多项基准评测中取得开源最佳成绩,成为全球最强开源代码模型,多项关键能力超越GPT-4o。Qwen2.5-Coder具备强大、多样和实用等优点,通过持续训练,结合源代码、文本代码混合数据及合成数据,显著提升了代码生成、推理和修复等核心任务的性能。此外,该模型还支持多种编程语言,并在人类偏好对齐方面表现出色。本文为周周的奇妙编程原创,阿里云社区首发,未经同意不得转载。
28404 18
|
11月前
|
SQL 数据可视化 关系型数据库
开源低代码平台推荐!10款优秀的开源低代码平台!
本文介绍了10款免费开源低代码开发平台,包括JeeLowCode、Ample、WaveMaker、JeecgBoot、Jabdp、华炎魔方、NocoBase、Appsmith、NodeRED和Budibase。这些平台通过减少代码编写量,提供灵活的开发工具,支持企业快速构建应用,满足不同开发需求和应用场景。文章详细列出了各平台的核心特点、适用场景及推荐指数,为企业选择最适合的开发工具提供了全面指导。
|
Web App开发 机器学习/深度学习 人工智能
AI Agent满级进化!骑马种田、办公修图,样样精通,昆仑万维等发布通用Agent新框架
【7月更文挑战第23天】AI Agent技术迎来突破,昆仑万维联合顶尖学府发布Cradle框架,赋能智能体通用控制能力。Cradle结合大型语言模型与六大核心模块,实现跨场景灵活操控,从游戏到办公软件,无师自通。实验验证其在《荒野大镖客2》等游戏及Chrome、Outlook上的卓越表现。框架开源,促进AI社区进步,但仍需面对实际应用的挑战与安全性考量。[论文](https://arxiv.org/abs/2403.03186)详述创新细节。
350 3
|
数据安全/隐私保护 开发者 Docker
国内docker公开镜像站的关闭!别急,docker_image_pusher 使用Github Action将国外的Docker镜像转存到阿里云私有仓库
通过使用 docker_image_pusher 这样的开源项目,我们能够轻松地解决国内访问 Docker 镜像拉取速度慢及拉去失败的问题,同时保证了镜像的稳定性和安全性。利用 Github Action 的自动化功能,使得这一过程更加简单和高效。
2677 2
|
SQL 关系型数据库 Java
PostgreSQL 通信协议
我们在使用数据库服务时,通常需要使用客户端连接数据库服务端,以 PostgreSQL 为例,常用的客户端有自带的 psql,JAVA 应用的数据库驱动 JDBC,可视化工具 PgAdmin 等,这些客户端都需要遵守 PostgreSQL 的通信协议才能与之 "交流"。所谓协议,可以理解为一套信息交互规则或者规范,最为我们熟知的莫过于 TCP/IP 协议和 HTTP 协议。 ![image.p
5871 0
PostgreSQL 通信协议