软件工程:如何做好软件产品
1、什么是产品
产品:满足行业共性需求的标准产品。即要能够做到配置化的开发,用同一款产品最大限度地满足不同客户的需求,同时让产品具有可以快速响应客户需求变化的能力。
好的产品一定吸收了多个项目的共性,一定是多个项目经验的集大成者。
2、产品化的理论支撑
(1)组合原理:三元素=功能、逻辑、模型,表达的是业务的功能、业务逻辑和模型(将要素和逻辑整合在一起的形式)。
(2)基干原理:三元素=组件、机制、系统,表达的是系统的要素、运行机理和系统(将图16-15中的A、B、C、D整合在一起的形式)。
在系统设计时要将业务元素(要素、逻辑、模型)换成系统元素(组件、机制、系统),基干原理是组合原理在应用设计阶段的不同表达形式。
所有系统的运行都是由基干原理三元素按照基干模型给出的规律进行反复的循环,这样就找到了系统中业务的运行机理。业务的内容、架构的形态可以有无数种,但是在系统中的运行机理都是一样的,即组件+机制。
将稳定的内容和易变的内容分离开,不易变化的内容归集到组件中,易变的内容归集到机制中。在产品的设计和实现时,将易变的功能做成可配置的,如通过改动参数适应需求变化,这样就达到了产品的应变效果。
机制是“设置于组件之间的一种关联作用,可以使组件或业务处理按照某种规律反复进行”,机制是通过功能和规则实现的。
3、如何实现产品化
1、构件化
构件化思路:将传统上用编码直接编写程序的方式改为用编码开发制作小的控件,再由小控件组装成大的构件的方式来开发软件
采用4层的实现方式。
第一层:首先用编码的方式开发最小的控件:窗体、按钮、输入框等。
第二层:用“控件+规则”的方式形成组件。
第三层:用“组件+机制”的方式形成模块/系统。
第四层:用“系统+机制”的方式形成产品。
2、平台化
通过制造最小的控件和规则,由这两者不断地组合“形成”上一级的构件。即建立装配式平台。
3、配置化
〇 构件:比组件更小的零件,由构件(按钮、树表等)可以装配出软件的界面。
〇 规则:机制是用规则来表达的,系统执行的是规则,因此规则就等于机制。
将构成软件(组件)的内容进行拆分,形成一个一个的单独构件,然后逐一完成单独构件的制作,这就是软件工业化开发的基本思路。
4、设计文档生成自动化
在对各类界面上的控件、控制规则等进行拖曳时,可以同时记录这些活动,并产生对应的文字,从而自动形成设计文档。
4、软件开发智能化:设计工程化、开发工业化、产品构件化
软件设计工程化:按照工程化的要求,将软件设计过程的各项工作进行量化和标准化,并在实施工程中实现各阶段成果的传递与继承。
软件开发工业化:按照工业生产的方式,利用少码、无码的软件开发技术,从构件形成组件,再由组件形成模块和系统。
设计工程化、开发工业化、产品构件化,才能最终实现软件开发智能化。
相关文章:

软件工程:如何做好软件产品
1、什么是产品 从项目到产品 产品:满足行业共性需求的标准产品。即要能够做到配置化的开发,用同一款产品最大限度地满足不同客户的需求,同时让产品具有可以快速响应客户需求变化的能力。 好的产品一定吸收了多个项目的共性,一定是…...

蓝桥杯 省赛 2025python(B组)题目(分析)
目录 第一题 为什么答案是103而不是104? 第二题 为什么必须按长度排序? 第三题 易错点总结 第四题 逻辑问题: 可能超过时间复杂度的代码示例 1. 暴力枚举所有可能的子串 2. 递归回溯 第五题 1. 暴力枚举法 2. 优化枚举 3.数…...

React - 组件通信
组件通信 概念:组件通信就是组件之间数据传递,根据组件嵌套关系不同,有不同的通信方法 父传子 —— 基础实现 实现步骤 父组件传递数据 - 在子组件标签上绑定属性子组件接收数据 - 子组件通过props参数接收数据 声明子组件并使用 //声明子…...
《前端面试题:CSS的display属性》
CSS display属性完全指南:深入理解布局核心属性 掌握display属性是CSS布局的基石,也是前端面试必考知识点 一、display属性概述:布局的核心控制 display属性是CSS中最重要、最基础的属性之一,它决定了元素在页面上的渲染方式和布…...

飞牛使用Docker部署Tailscale 内网穿透教程
之前发过使用docker部署Tailscale的教程,不过是一年前的事情了,今天再重新发表一遍,这次使用compose部署更加方便,教程也会更加详细一点,希望对有需要的朋友有所帮助! 对于大部分用户来说,白嫖 …...

《数据挖掘》- 房价数据分析
这里写目录标题 采用的技术1. Python编程语言2. 网络爬虫库技术点对比与区别项目技术栈的协同工作流程 代码解析1. 导入头文件2. 读取原始数据3. 清洗数据4. 数据分割4.1 统计房屋信息的分段数量4.2 将房屋信息拆分为独立列4.3 处理面积字段4.4 删除原始房屋信息列 5. 可视化分…...
centos中的ulimit命令
centos中的ulimit命令 ulimit的作用CENTOS系统文件配置配置文件地址配置格式 配置方法 ulimit的作用 ulimit用于限制shell启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell进程创建文件的大小、内存锁住的…...
git提交代码和解决冲突修复bug
提交到分支的步骤如下: 确保你当前在开发分支上,可以使用命令 git branch 来查看当前所在分支,并使用 git checkout 命令切换到开发分支。使用 git add 命令将修改的文件添加到暂存区。使用 git commit 命令提交代码到本地仓库。 解决合并冲…...
华为仓颉语言初识:并发编程之同步机制(上)
前言 线程同步机制是多线程下解决线程对共享资源竞争的主要方式,华为仓颉语言提供了三种常见的同步机制用来保证线程同步安全,分别是原子操作,互斥锁和条件变量。本篇文章详细介绍主要仓颉语言解决同步机制的方法,建议点赞收藏&a…...
php中实现邮件发送功能
要在php项目中实现邮件发送功能,推荐使用phpmailer库通过smtp协议配置。首先安装phpmailer扩展,可通过composer命令composer require phpmailer/phpmailer安装;若未使用composer则手动引入源码。接着配置smtp信息,包括服务器地址&…...

C++之动态数组vector
Vector 一、什么是 std::vector?二、std::vector 的基本特性(一)动态扩展(二)随机访问(三)内存管理 三、std::vector 的基本操作(一)定义和初始化(二…...
arc3.2语言sort的时候报错:(sort < `(2 9 3 7 5 1)) 需要写成这种:(sort > (pair (list 3 2)))
arc语言sort的时候报错:(sort < (2 9 3 7 5 1)) arc> (sort < (2 9 3 7 5 1)) Error: "set-car!: expected argument of type <pair>; given: 9609216" arc> (sort < (2 9 3 )) Error: "Function call on inappropriate object…...
Android动态广播注册收发原理
一、动态广播的注册流程 1. 注册方式 动态广播通过代码调用 Context.registerReceiver() 方法实现,需显式指定 IntentFilter 和接收器实例: // 示例:在 Activity 中注册监听网络变化的广播 IntentFilter filter new IntentFilter…...
Ubuntu 系统通过防火墙管控 Docker 容器
Ubuntu 系统通过防火墙管控 Docker 容器指南 一、基础防火墙配置 # 启用防火墙 sudo ufw enable# 允许 SSH 连接(防止配置过程中断联) sudo ufw allow 22/tcp二、Docker 配置调整 # 编辑 Docker 配置文件 sudo vim /etc/docker/daemon.json配置文件内…...
AI 模型分类全解:特性与选择指南
人工智能(AI)技术正以前所未有的速度改变着我们的生活和工作方式。AI 模型作为实现人工智能的核心组件,种类繁多,功能各异。从简单的线性回归模型到复杂的深度学习网络,从文本生成到图像识别,AI 模型的应用…...

【Zephyr 系列 11】使用 NVS 实现 BLE 参数持久化:掉电不丢配置,开机自动加载
🧠关键词:Zephyr、NVS、非易失存储、掉电保持、Flash、AT命令保存、配置管理 📌目标读者:希望在 BLE 模块中实现掉电不丢配置、支持产测参数注入与自动加载功能的开发者 📊文章长度:约 5200 字 🔍 为什么要使用 NVS? 在实际产品中,我们经常面临以下场景: 用户或…...

【Android】Android Studio项目代码异常错乱问题处理(2020.3版本)
问题 项目打开之后,发现项目文件直接乱码, 这样子的 这本来是个Java文件,结果一打开变成了这种情况,跟见鬼一样,而且还不是这一个文件这样,基本上一个项目里面一大半都是这样的问题。 处理方法 此时遇到…...
n皇后问题的 C++ 回溯算法教学攻略
一、问题描述 n皇后问题是经典的回溯算法问题。给定一个 nn 的棋盘,要求在棋盘上放置 n 个皇后,使得任何两个皇后之间不能互相攻击。皇后可以攻击同一行、同一列以及同一对角线上的棋子。我们需要找出所有的合法放置方案并输出方案数。 二、输入输出形…...

一些免费的大A数据接口库
文章目录 一、Python开源库(适合开发者)1. AkShare2. Tushare3. Baostock 二、公开API接口(适合快速调用)1. 新浪财经API2. 腾讯证券接口3. 雅虎财经API 三、第三方数据平台(含免费额度)1. 必盈数据2. 聚合…...
DeepSeek本地部署及WebUI可视化教程
前言 DeepSeek是近年来备受关注的大模型之一,支持多种推理和微调场景。很多开发者希望在本地部署DeepSeek模型,并通过WebUI进行可视化交互。本文将详细介绍如何在本地环境下部署DeepSeek,并实现WebUI可视化,包括Ollama和CherryStudio的使用方法。 一、环境准备 1. 硬件要…...
机器学习算法时间复杂度解析:为什么它如此重要?
时间复杂度的重要性 虽然scikit-learn等库让机器学习算法的实现变得异常简单(通常只需2-3行代码),但这种便利性往往导致使用者忽视两个关键方面: 算法核心原理的理解缺失 忽视算法的数据适用条件 典型算法的时间复杂度陷阱 SV…...

SSIM、PSNR、LPIPS、MUSIQ、NRQM、NIQE 六个图像质量评估指标
评价指标 1. SSIM(Structural Similarity Index) 📌 定义 结构相似性指数(Structural Similarality Index)是一种衡量两幅图像相似性的指标,考虑了亮度、对比度和结构信息的相似性,比传统的 P…...

【笔记】旧版MSYS2 环境中 Rust 升级问题及解决过程
下面是一份针对在旧版 MSYS2(安装在 D 盘)中,基于 Python 3.11 的 Poetry 虚拟环境下升级 Rust 的处理过程笔记(适用于 WIN 系统 SUNA 人工智能代理开源项目部署要求)的记录。 MSYS2 旧版环境中 Rust 升级问题及解决过…...
centos查看开启关闭防火墙状态
执行:systemctl status firewalld ,即可查看防火墙状态 防火墙的开启、关闭、禁用命令 (1)设置开机启用防火墙:systemctl enable firewalld.service (2)设置开机禁用防火墙:system…...
[论文阅读] 人工智能 | 大语言模型计划生成的新范式:基于过程挖掘的技能学习
#论文阅读# 大语言模型计划生成的新范式:基于过程挖掘的技能学习 论文信息 Skill Learning Using Process Mining for Large Language Model Plan Generation Andrei Cosmin Redis, Mohammadreza Fani Sani, Bahram Zarrin, Andrea Burattin Cite as: arXiv:2410.…...
MS31912TEA 多通道半桥驱动器 氛围灯 照明灯 示宽灯 转向灯驱动 后视镜方向调节 可替代DRV8912
MS31912TEA 多通道半桥驱动器 氛围灯 照明灯 示宽灯 转向灯驱动 后视镜方向调节 可替代DRV8912 产品简述 MS31912 是集成多种高级诊断功能的多通道半桥驱动。 MS31912 具有 12 个半桥,典型工作电压 13.5V 下,每一个半桥支持 1A 电流,典型工…...
软考 系统架构设计师系列知识点之杂项集萃(84)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(83) 第151题 在软件系统工具中,版本控制工具属于(),软件评价工具属于()。 第1空 A. 软件开发工具 B. 软件维…...

矩阵QR分解
1 orthonormal 向量与 Orthogonal 矩阵 orthonormal 向量定义为 ,任意向量 相互垂直,且模长为1; 如果将 orthonormal 向量按列组织成矩阵,矩阵为 Orthogonal 矩阵,满足如下性质: ; 当为方阵时&…...
UDP与TCP的区别是什么?
UDP和TCP是互联网通信中最常用的两种传输层协议,它们在数据传输方式、可靠性、速度和适用场景等方面存在显著差异。本文将围绕UDP与TCP的核心区别展开详细分析,包括连接方式、数据传输机制、传输效率以及各自适合的应用场景,帮助开发者和网络…...
撰写脚本,通过发布/joint_states话题改变机器人在Rviz中的关节角度
撰写脚本,通过发布/joint_states话题改变机器人在Rviz中的关节角度 提问 为我写一个改变关节base_spherical_center_high_joint角度的python脚本吧。适用于ROS2的humble 回答 下面是一个适用于 ROS 2 Humble 的 Python 脚本,它会以指定频率持续发布 …...