系统架构设计高级技能 · 软件产品线

news2024/12/24 0:13:00

现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。
Now everything is for the future of dream weaving wings, let the dream fly in reality.

点击进入系列文章目录

系统架构设计高级技能 · 软件产品线

  • 一、产品线概述
  • 二、产品线的过程模型
    • 2.1 双生命周期模型
    • 2.2 三生命周期模型
    • 2.3 SEI模型
  • 三、产品线的组织结构
  • 四、产品线的建立方式

在这里插入图片描述

一、产品线概述

软件产品线 主要由两部分组成,分别是 核心资源产品集合

核心资源 是领域工程的所有结果的集合,是产品线中产品构造的基础。核心资源必定包含产品线中所有产集共享的产品线架构,新设计开发的或者通过对现有系统的再工程得到的、需要在整个品线中系统化重用的软件构件。与软件构件相关的测试计划、测试实例以及所有设计文档, 需求说明书、领域模型、领域范围的定义, 以及采用COTS的构件也属于核心资源。

产品线架构构件 是用于软件产品线中的产品构建的最重要的 核心资源

软件产品线开发4个基本技术特点,即 过程驱动、特定领域、技术支持和架构为中心

与其它软件开发方法相比,组织选择软件产品线的宏观上的原因 有:

  • 对产品线及其实现所需的专家知识领域的清楚界定;
  • 对产品线的长期远景进行了战略性规划。
    在这里插入图片描述

二、产品线的过程模型

软件产品线的过程模型主要有双生命周期模型、SEI模型和三生命周期模型。

2.1 双生命周期模型

双生命周期模型 分成两个重叠的生命周期:领域工程和应用工程。

领域工程使用DSSA,主要任务有领域分析,领域设计,领域实现。

在这里插入图片描述

领域工程主要任务:

  • 领域分析,利用现有系统的设计、架构和需求建立领域模型。
  • 领域设计,用领域模型确定领域/产品线的共性和可变性,为产品线设计架构。
  • 领域实现,基于领域架构开发领域可重用资源(构件、文档、代码生成器)。
  • 应用工程领域:需求分析,系统设计,系统实现。

应用工程在领域工程结果基础上构造新产品:

  • 需求分析,划分领域公共需求和独特需求,得出系统说明书。
  • 系统设计,在领域架构基础上,结合系统独特需求设计应用的软件架构。
  • 系统实现,按应用架构,用领域可重用资源实现领域公共需求,用定制开发的构件满足系统独特需求,构件新的系统。

2.2 三生命周期模型

三生命周期模型为有多个产品线的大型企业增加企业工程流程,以便在企业范围内对所有资源的创建、设计和重用提供合理规划。
在这里插入图片描述

2.3 SEI模型

SEI模型基本活动分为三部分,分别是核心资源开发(即领域工程)、产品开发(即应用工程)和管理。
在这里插入图片描述

SEI模型的主要特点:

  • 循环重复是产品开发过程的特征,也是核心资源开发、产品线开发以及核心资源和产品之间协作的特征。
  • 核心资源开发和产品开发没有先后之分。
  • 管理活动协调整个产品线开发过程的各个活动、对产品线的成败负责。
  • 核心资源开发和产品开发是两个互动的过程,三个活动和整个产品线开发之间也是双向互动的。

核心资源开发活动的目标是建立产品线的生产能力。根据输入端的产品约束、框架、生产约束、生产策略和遗留资产清单,核心资产开发活动产出三项输出:

  • 产品线范围:产品线范围是关于构成产品线的产品或产品线所能包括的产品的描述,该描述列举了所有产品的共性和他们之间彼此的差异,包括产品所提供的特征或操作、产品所表现出的性能和其他产品属性等。
  • 核心资产:是产品线中产品生产的基础。这些资产包括产品共享的架构,以及为贯穿产品线进行系统化重用所开发的产品组件。提供了将纳入资产库的组件接口规范。
  • 生产计划:描述了如何从核心资产中生产产品。

三、产品线的组织结构

软件产品线 开发过程分为领域工程和应用工程,相应的软件开发组织结构也应该有两个基本组成部分,即负责核心资源的小组和负责产品的小组。这也是产品线开发与独立系统开发的主要区别。

组织模型 :开发部门、商务部门、领域工程部门和层次领域工程部门。

动态的组织结构 ,根据产品线的建立方式和发展阶段、成熟程度的变化,有一种组织结构向另一种组织结构演变。

组织结构类型:

  • 设立独立的核心资源小组
  • 不设立独立的核心资源小组
  • 动态的组织结构

要成功实施产品线,主要取决于以下因素:

  • 对该领域具备长期和深厚的经验
  • 一个用于构建产品的好的核心资源库
  • 好的产品线架构
  • 好的管理(软件资源、人员组织、过程)支持

四、产品线的建立方式

划分依据 :用演化方式和革命方式引入产品线开发过程,基于现有产品还是开发全新的产品线。

四种方式 的基本特征如下:

  • 将现有的产品演化为产品线
  • 用软件产品线替代现有产品集
  • 全新软件的产品的演化
  • 全新软件产品线的开发
演化方式革命方式
基于现有产品基于现有产品架构设计产品线的架构,经演化现有构件,开发产品线构件核心资源的开发基于现有产品集的需求和可预测的、将来需求的超集
全新产品线产品线核心资源随产品新成员的需求而演化开发满足所有预期产品线成员的需求的核心资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/995514.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI绘画:StableDiffusion实操教程-诛仙-碧瑶(附高清图下载)

前段时间我分享了StableDiffusion的非常完整的教程:“AI绘画:Stable Diffusion 终极宝典:从入门到精通 ” 不久前,我与大家分享了StableDiffusion的全面教程:“AI绘画:Stable Diffusion 终极宝典&#xff…

微调 TrOCR – 训练 TrOCR 识别弯曲文本

TrOCR(基于 Transformer 的光学字符识别)模型是性能最佳的 OCR 模型之一。在我们之前的文章中,我们分析了它们在单行打印和手写文本上的表现。然而,与任何其他深度学习模型一样,它们也有其局限性。TrOCR 在处理开箱即用的弯曲文本时表现不佳。本文将通过在弯曲文本数据集上…

Canvas怎样修改线条的宽度、颜色和形状?

在Canvas中,线的默认颜色为黑色,宽度为lpx,但我们可以使用相关属性为线添加不同的样式。下面我们将从宽度、描边颜色、端点形状3方面详细讲解线条样式的设置方法。 1.设置线条宽度 使用lineWidth属性可以定义线的宽度,该属性的取…

第三方电脑安装小爱同学

首先下面这个是小爱同学的商店地址,如图1: 查看链接(小爱同学 - Microsoft Store 应用程序) 打开微软应用商店后到上面的网页点击获取 安装完成后 点击miservice 点击隐私协议勾选同意 打开小爱同学登录小米账号即可开始使用 2…

UG\NX CAM二次开发 设置工序切削区域 UF_CAMGEOM_append_item

文章作者:代工 来源网站:NX CAM二次开发专栏 简介: UG\NX CAM二次开发 设置工序切削区域 UF_CAMGEOM_append_item 效果: 代码: static int init_proc(UF_UI_selection_p_t select, void* user_data) { int errorCode = 0; int num_triples = 1;//UF_UI_mask_…

打印剪刀手“耶”(V形)

用给定单个字符和首行宽度(奇数), 打印首行宽度为给定奇数“V”字形状)。 (本笔记适合Py 推崇的插件字符串格式化的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全…

UG\NX CAM二次开发 设置安全平面的起点和法向 UF_CAM_set_auto_blank

文章作者:代工 来源网站:NX CAM二次开发专栏 简介: UG\NX CAM二次开发 设置安全平面的起点和法向 UF_CAM_set_auto_blank 效果: 代码: void MyClass::do_it() { //获取加工环境tagtag_t setup_tag=NULL_TAG;UF_SETUP_ask_setup(&setup_tag);//返回当前工序导…

抓包工具Fiddler的下载与设置

1.在浏览器搜索Fiddler,找到下载Fiddler的官网‘ 2.选择Fiddler Classic 点击Learn more 3.填写邮箱信息进行下载 设置Fiddler可以对HTTPS协议进行抓包(刚下载只能对HTTP进行抓包) 1.点击Tools,选择Options,选择HTTP…

ChatGPT 太贵?一键部署自己的私有大模型

部署你的私有化对话机器人,只需要三步: 克隆 github 中文版 LLaMa repo下载 HuggingFace 13B 16K 完整模型启动对话窗口 没错,就是这么简单 我把这份操作指南,做成了一份 Jupyter Notebook 分享给大家,以下是链接&…

堆相关例子-排序最多移动k距离

题目: 一个几乎有序的数组。几乎有序是指:如果把数组排好序,每个数的移动距离一定不超过K,并且K一定远小于数组长度 分析: 给定的数组有上面的限制条件,根据条件可以分析得到: 对于前0-k个数…

java项目基于 SSM+JSP 的人事管理系统

java项目基于 SSMJSP 的人事管理系统 博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 大家好,今天和大家聊的是 Java 基于 SSM 的人事管理系统。…

李宏毅深度学习self-attentin学习笔记

self-attention 一、self-attention的起源二、self-attention网络架构三、multi-head self-attention四、positional encoding五、pytorch实现 一、self-attention的起源 self-attention初始也是用于解决seq2seq的问题。即input是一堆序列,而output也是一段长度固定…

【LeetCode: 210. 课程表 II:拓扑排序+图】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【C++】map值自定义key,value排序(含ccfcsp第四次认证第二题演示和map遍历方法)

如何自定义map排序 sort仅仅支持pair&#xff0c;vector&#xff0c;数组等排序&#xff0c;不支持对map的排序 所以如果想用sort对map排序的话&#xff0c;只需要把map转换为vector即可&#xff1a; map<int,int>res; res[1]1,res[2]2,res[3]3; vector<pair<in…

laravel部署api项目遇到问题总结

laravel线上部署问题 一、Ubuntu远程Mysql 61“Connection refused”二、Ubuntu更新php8三、线上部署Permission denied3.1、部署完之后访问域名出现报错&#xff1a;3.2、The /bootstrap/cache directory must be present and writable. 四、图片访问404五、git部署线上文件 一…

如何在linux系统下快速上手调试器gdb

1.什么是调试器&#xff1f; 调试器是一种帮助开发人员查看和修复程序错误的工具 2.gdb的作用和特点&#xff1f; gdb的作用 帮助开发人员寻找错误&#xff0c;并且提供了一系列的功能和工具进行调试 gdb的特点 源代码级调试多平台支持强大的调试功能拓展性强 3.gdb的基…

项目(智慧教室)第四部分,页面交互功能,WebServer建立与使用,

一。页面构思 1.标题栏 大标题&#xff1a;智慧教室管理系统 小标题&#xff1a;灯光&#xff0c;报警&#xff0c;风扇&#xff0c;温度&#xff0c;湿度&#xff0c;光照 2.样式设计 背景设置。字体设置&#xff08;字体大小&#xff0c;格式&#xff0c;颜色&#xff09; 3.…

多线程与高并发——并发编程(6)

文章目录 六、并发集合1 ConcurrentHashMap1.1 存储结构1.2 存储操作1.2.1 put方法1.2.2 putVal方法-散列算法1.2.3 putVal方法-添加数据到数组&初始化数组1.2.4 putVal方法-添加数据到链表1.3 扩容操作1.3.1 treeifyBin方法触发扩容1.3.2 tryPresize方法-针对putAll的初始…

VMware17 下载以及 配置虚拟机 一条龙全教程

前言&#xff1a;在网络安全相关方面的学习时&#xff0c;我们难免要使用虚拟机来模拟实现网络攻击或者防御&#xff0c;在这里&#xff0c;笔者就给大家分享 VMware 17 虚拟机下载安装使用的保姆级教程 目录 虚拟性软件版本推荐 下载 VMware 下载镜像 配置虚拟机 虚拟性软…