系统架构25 - 软件架构设计(4)

软件架构复用

软件产品线

软件产品线是指一组软件密集型系统 ,它们共享一个公共的、可管理的特性集,满足某个特定市场或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理、复用、集成新的系统

定义

软件复用是指系统化的软件开发过程:开发一组基本的软件构造模块,以覆盖不同的需求/体系结构之间的相似性,从而提高系统开发的效率、质量和性能。软件复用是一种系统化的软件开发过程,通过识别、开发、分类、获取和修改软件实体,以便在不同的软件开发过程中重复的使用它们。

分类

软件架构复用的类型包括机会复用和系统复用

  • 机会复用是指开发过程中,只要发现有可复用的资产,就对其进行复用。
  • 系统复用是指在开发之前,就要进行规划,以决定哪些需要复用。

原因

软件架构复用可以减少开发工作、减少开发时间以及降低开发成本 ,提高生产力,还可以提高产品质量使其具有更好的互操作性。同时,软件架构复用会使产品维护变得更加简单。

复用对象及形式

基于产品间共性的"软件"产品线代表了软件工程中一个创新的、不断发展的概念。软件产品线的本质是在生产产品家族时,以一种规范的、策略性的方法复用资产 。可复用的资产非常广,包括以下几个方面。

(1)需求 。许多需求与早期开发的系统相同或部分相同,如网上银行交易与银行柜面交易。

(2)架构设计 。原系统在架构设计方面花费了大量的时间与精力,系统成功验证了架构的合理性,如果新产品能复用已有的架构,将会取得很好的效益。

(3)元素 。元素复用不只是简单的代码复用,它旨在捕获并复用设计中的可取之处,避免

(不要重复)设计失败的地方。

(4)建模与分析 。各类分析方法 (如性能分析)及各类方案模型 (如容错方案、负载均衡方案)都可以在产品中得到复用。

(5)测试 。采用产品线可积累大量的测试资源,即在考虑测试时不是以项目为单位,而是以产品线为单位 。这样整个测试环境都可以得到复用,如测试用例、测试数据、测试工具,甚至测试计划、过程、沟通渠道都可以得到复用。

(6)项目规划 。利用经验对项目的成本、预算、进度及开发小组的安排等进行预测,即不必每次都建立工作分解结构。

(7)过程、方法和工具 。有了产品线这面旗帜,企业就可以建立产品线级的工作流程、规范、标准、方法和工具环境,供产品线中所有产品复用。比如编码标准 就是一例。

(8)人员 。以产品线来培训的人员,适应于整个系列的各个产品的开发。

(9)样本系统 。将已部署(投产)的产品作为高质量的演示原型和工程设计原型。

(10)缺陷消除。产品线开发中积累的缺陷消除活动,可使新系统受益,特别是整个产品家族中的性能、可靠性等问题的一次性解决,能取得很高的回报。同时也使得开发人员和客户心中有"底"。

一般形式的复用主要包括函数的复用,库的复用 (比如在 C、C++语言中),以及在面向对象开发中的类、接口和包的复用 。可以看出,在当前的趋势下,复用体由小粒度向大粒度的方向发展

基本过程

复用的基本过程主要包括3个阶段:首先构造/获取可复用的软件资产 ,其次管理这些资产 ,最后针对特定的需求,从这些资产中选择可复用的部分 ,以开发满足需求的应用系统。如下图

  1. 复用的前提:获取可复用的软件资产
    首先需要构造恰当的、可复用的资产,并且这些资产必须是可靠的、可被广泛使用的、易于理解和修改的
  2. 管理可复用资产
    该阶段最重要的是:构件库 (Component Library),由于对可复用构件进行存储和管理,它是支持软件复用的必要设施 。构件库中必须有足量的可复用构件 才有意义。构件库应提供的主要功能包括构件的存储、管理、检索以及库的浏览与维护等,以及支持使用者有效地、准确地发现所需的可复用构件。
    在这个过程中,存在两个关键问题:一是构件分类 *,构件分类是指将数量众多的构件按照某种特定方式组织起来;二是构件检索,构件检索是指给定几个查询需求,能够快速准确地找到相关构件。
  3. 使用可复用资产
    在最后阶段,通过获取需求,检索复用资产库,获取可复用资产,并定制这些它们 :修改、扩展、配置等,最后将它们组装与集成,形成最终系统
相关推荐
吾日三省Java3 小时前
微服务体系下将环境流量路由到开发本机
微服务·系统架构·团队开发
Listennnn4 小时前
AI系统的构建
人工智能·系统架构
练习本6 小时前
AI架构师如何创建自己的知识库
系统架构
学软件的小铃铛20 小时前
ELK日志管理框架介绍
elk·系统架构
HAPPY酷2 天前
Kafka 和Redis 在系统架构中的位置
redis·kafka·系统架构
掘金-我是哪吒2 天前
分布式微服务系统架构第144集:FastAPI全栈开发教育系统
分布式·微服务·架构·系统架构·fastapi
半桔3 天前
【Linux手册】冯诺依曼体系结构
linux·缓存·职场和发展·系统架构
蓝天居士3 天前
软考 系统架构设计师系列知识点之杂项集萃(82)
系统架构
小马哥编程3 天前
【iSAQB软件架构】软件架构中构建块的视图:黑箱、灰箱和白箱及其交互机制
microsoft·架构·系统架构·交互
WispX8883 天前
【设计模式】门面/外观模式
java·开发语言·设计模式·系统架构·外观模式·插件·架构设计