一般产品:功能、质量、结构

news2024/11/19 11:24:55

**一般产品:**功能、质量、结构

通用工程: 收益-风险;过程-结果;少数-多数

  • 风险 vs 收益

  • 过程 vs 结果

  • 少数 vs 多数

工程师的特点:

  • 人道无害
  • 雇主
  • 实事求是,恪守公心,严守纪律,蓄意学习

*软件特点:复杂性;商品属性;可变性;功能的契合性

软件家族:版本序列;产品线;产品家族;成品组件

软件的功能

  • 包括基本功能、高级功能和定制功能等
  • 开发人员需要根据产品需求和设计要求进行开发和测试,以确保软件的功能和特性能够满足业务需求和用户需求。

软件的质量

  1. 用户反馈:软件的质量需要通过用户反馈进行评估,包括用户满意度、用户体验等。
  2. 软件的自适应:软件需要具备自适应性,即能够根据用户的需求和环境变化进行调整和优化。
  3. 移植性:软件需要具备良好的移植性,即能够在不同的平台和操作系统上运行,并且能够兼容各种硬件和软件环境。
  4. 功能稳定性:软件的各种功能需要保证稳定性,即能够在各种情况下正常运行,并且不会出现崩溃和异常情况。
  5. 性能效率:软件的性能效率需要保证,即能够在各种数据量和负载情况下保持良好的性能表现。
  • 在软件工程领域中,没有银弹能够解决所有问题。 没有银弹的核心原因是软工非常复杂,比过程更重要的是人

软件天花板

  • 天花板的核心是复杂度太高,进而规模的上升导致复杂度更快的增长,而人类的能力无法承受复杂度的增长;

  • 期望设计一个结构,使得复杂度线性增长而非超线性增长,这属于架构师的工作了

    • 如何设计架构?
    • 判断哪个架构最好?
      • 适合产品的设计
      • 可行性、可构造性
      • 可变性(持续)【与实体工业的区别
      • 因为软件有如下特性
        • 复杂性
        • 可变性
        • 商品属性
    • 软件三层金字塔(从上到下):质量、功能、结构
    • 软件结构形态
      • 单体架构
      • 模块集成:模块化是一种常见的软件架构设计方法,它能够将系统拆分为多个独立的模块,每个模块之间的关系简单明了。这种方法适用于变更频率较低的中小型软件项目。
        • 缺点:模块化使得关系数量上升,复杂性超线性增长
        • 使用与变更频率低的中小场合
      • (大型)平台服务【微服务】:平台服务是一种分布式系统架构,能够实现热插拔和冗余存储,同时具备高可用和高可伸缩性。这种方法适用于大型复杂的软件系统。
        • 分布式
        • 热插拔
        • 冗余存储
      • 系统乌合:取源于“乌合之众”
        • "乌合之众"是指没有明确目标和领导的人群,他们的行动和思想容易受到外界影响。系统乌合设计方法的缺点可能包括以下几个方面:
          1. 缺乏统一的规划和控制
          2. 不兼容和冲突问题
          3. 维护成本高
          4. 可扩展性受限
  • 平台+服务会成为主流

  • 平台就是一个软件产品

  • 从产品为中心 -> 服务为中心

    • 提高开发效率
    • 可扩展性和可维护性
    • 降低系统的复杂性,使得系统更易于维护
    • 提高系统的可用性和稳定性、
    • 灵活(热插拔)
  • 未来:平台会被垄断;服务会被分散;云服务一定是主流

    • 对服务端/云端:最上游被垄断
      • 资金
      • 时间
      • 布局
      • 功能相同,适者生存,仅留胜者
    • 对开发者和中小公司
      • 快速开发,省时、省钱、省力
      • 培训成本降低
      • 不同的服务可以使用相同的平台(大模型)
    • 对非cs领域
      • 省钱
    • 对程序员而言会被淘汰,我们需要:
      1. 大局观
      2. 对行业的见解和规划
      3. 领导能力
      4. 冲破性的技术革新
  • 分久必合,合久必分:微服务(now)和serverless(future)。

    • 微服务架构是将一个大型的应用系统分解为多个小型的服务,每个服务都可以独立部署和扩展。而Serverless架构则更进一步,将服务拆分为更小粒度的函数,不需要自己管理服务器,只需要编写和部署函数即可。
  • 服务 = 设计+开发+测试+托管

    • 平台面向领域
      • 实现领域共性需求
      • 实现领域特定架构
      • 一个领域只需要一个平台
    • 高度集成一体化 Devops:高度集成一体化的DevOps则是指在服务的开发、测试、部署和运营过程中,采用高度集成的工具和流程,实现快速迭代和持续交付。这种DevOps方式可以提高服务的效率和质量,同时也可以降低开发和运维的成本和复杂性。
  • (如何设计平台)开发大规模平台

    • 知识
    • 经验:架构设计经验
    • 领域需求
  • 设计审查-设计质量(贯穿整个软件生命周期)-架构质量

  • 架构

    • 架构分为抽象架构和具象架构

    • 跨模块型缺陷MCD

      • 解决:代码审查;测试验证;接口设计和模块化设计
    • 架构质量:

      • 经验视角
      • 主观视角
      • 客观视角(结构;缺陷)
    • 架构质量评估:

      • 经验视角、主观视角和客观视角来评估软件系统的架构质量
      • 编码之前
        • 设计原理:模块化、高内聚低耦合、单一职责
        • 设计共识:设计模式、架构模式、UML建模
        • 在这个阶段,可以通过评审、审查等方式来评估系统的架构质量,确保软件系统的设计符合最佳实践和标准。
      • 演化之中
        • 结构视角:结构偏差;评估软件系统的结构是否符合设计原则和设计共识,以及模块之间的耦合和内聚关系是否合理
        • 缺陷视角:评估软件系统中存在的缺陷和问题,例如跨模块型缺陷(MCD)
    • 软件开发过程:设计->架构

    • 架构中心开发方法:

      • 业务驱动
      • 复用优先
  • 设计

    • 软件设计质量:K、R、E
    • 设计于维护
      • 维护的概念
        • 维护是指在软件、硬件或其他系统运行期间,对其进行修复、更新和改进的过程。维护可以分为预防性维护和修复性维护两种类型。预防性维护是指在问题发生之前采取的措施,以防止问题的出现。而修复性维护则是指在问题已经出现之后,对其进行修复和改进。
      • 维护实践(独立维护)
      • 设计从何而来:逆向工程
        • 逆向工程是指通过分析已有的产品或系统,来了解其设计和实现的过程。通过逆向工程,维护人员可以了解一个产品或系统的内部结构和工作原理,从而可以二次开发或进行维护。
      • 设计如何使用:CIA
    • 设计于演化
      • 演化概念
      • 演化实践;演化开发
      • 架构恶化
  • 设计审查需要考虑的点:

    • 设计审查清单
      • Y轴:方法、过程、工具
      • X轴:产品、模式、代码
    • 交互设计审查清单
    • image-20230614112837422
    • 设计审查是基于清单的自查自纠
    • 软件系统的质量控制:审查+测试
  • 软件架构模式:界面层、逻辑层、数据层和DB

  • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    1. 界面层(Presentation Layer):负责与用户交互,展示数据和处理用户的输入。在Web应用中,通常是Web页面或Web应用程序。
    2. 逻辑层(Application Layer):负责处理业务逻辑,包括数据处理、计算、校验等。通常是一个独立的应用程序或服务。
    3. 数据层(Data Layer):负责处理数据的存储和访问,包括数据库和数据访问层。在传统的软件架构中,数据层通常是一个独立的数据库,而在现代的云架构中,数据层常常被拆分成多个分布式存储和处理服务。
    4. 数据库(DB):负责存储应用程序的数据。可以是关系型数据库(如MySQL、Oracle等)或非关系型数据库(如MongoDB、Redis等)。
  • 界面工程:

    • 界面属性:颜色、字体、排版
    • 界面元素:按钮、文本框、下拉框
    • 界面设计
      • 静态 (草图)、 动态(流程图)
    • 界面实现
      • 内容、样式、行为分离MVC或MVVM等设计模式
      • 低代码平台
    • 界面质控
      • 两个等级:愉悦感和可用性
      • 界面审查:基于清单
  • 数据工程:

    • 关系型数据库、NoSQL数据库、数据仓库、数据湖
    • 数据需求:使全部功能得以执行的所有数据
    • image-20230614111933719
    • 数据定义
      • 合规审查(前提):合法性和安全性
        • 数据合规官(Data Compliance Officer,DCO)是一个组织中负责数据合规的专业人员
      • 数据画像:对数据进行深度分析和可视化,以便更好地理解数据。数据画像可以帮助人们快速了解数据的特征、质量和价值,从而更好地利用数据。
      • 定义元数据:对数据进行描述和分类
    • 数据层开发
      • 数据获取
      • 数据访问
    • DB管理、数据分析:备份、恢复、性能优化
    • 数据库工程
      • DB概念模型:ER图
      • DB逻辑模型:表
      • DB物理实现:sql语言和文件系统
    • 生产数据:实际生产中产生的数据,包括企业、机构或个人在业务过程中产生的所有数据。生产数据是实际业务活动的结果,包括交易数据、客户数据、产品数据、供应链数据等,是企业和机构的重要资产之一。
    • 元数据先导型Proactive Metadata,后生型Reactive Metadata
    • 数据本体(Data Ontology)是指描述数据和数据之间关系的概念模型,是知识表示和知识管理的一种方式。数据本体通常包括一组定义良好的概念和关系,用于描述领域中的实体、属性和关系,并提供一种共享和重用这些概念和关系的方式。
      • 实体:描述领域中的实体,如人、物、事等。
      • 属性:描述实体的各种属性,如名称、年龄、性别等。
      • 关系:描述实体之间的各种关系,如父子关系、雇佣关系等。
    • Q:获得数据前需要做什么?
      1. 需要什么数据?
      2. 能收集么?能商用吗?
      3. 有能力保护数据吗?
      4. 基于什么条件来收集?
      5. 数据怎么使用?(合规审查,数据合规官DCO)
  • 管理的三重境界:

    • 人:都需要经理调控
      • 工程师
      • 客户、投资人
      • 用户
      • 变更未知,不想1+1算1w次那样简单
      • 风险预测未知;时间、成本管理困难
      • CTO不管理? 不行
      • 胶冻团队:临时组建的跨部门或跨职能团队,在短时间内迅速响应某项任务或项目,快速协作完成任务并在完成后解散的一种团队形式。
      • 产品
      • 文档(制品)
      • 议素
        • 待实现和决议的内容
        • 带移除修复的缺陷
  • 软件管理三部分

    • 产品管理
    • 项目管理
    • 过程管理
  • 软件管理的三种项目

    • 软件开发项目

      • 项目规划

        • 进度规划

          • 项目估算

            • 项目规模
            • 技术难度
            • 人力资源
          • 软件里程碑

        • 质量规划

          • 质量保障(QA)

            • 质量标准和规范
            • 过程管理
            • 质量培训
          • 质量控制(QC)【审查+测试】

            • 质量检查和测试
            • 缺陷管理
            • 质量评估审查
      • 项目监管

        • 项目风险
        • 项目团队
      • 项目改进

    • 软件运营项目

    • 软件维护项目

      • 逆向开发,开发者小队+维护二次开发者小队
    • 软件演化项目

      • 常规
      • 非常规
  • 开发过程需要考虑的:规模 -> 工作量 -> 工期、用人 -> 成本

  • 规模增长 + 软件具有复杂性和频变性,导致软件有三高:价值、成本、风险 【考点】

  • 这些因素都会对软件开发的工作量、工期和成本产生重要的影响,做决策规划之前需要确认和考虑:

    • 立项谈判

    • 目标产品

    • 合同价格

    • 交付日期

    • 完工标准

      • 逆向开发,开发者小队+维护二次开发者小队
    • 软件演化项目

      • 常规
      • 非常规
  • 开发过程需要考虑的:规模 -> 工作量 -> 工期、用人 -> 成本

  • 规模增长 + 软件具有复杂性和频变性,导致软件有三高:价值、成本、风险 【考点】

  • 这些因素都会对软件开发的工作量、工期和成本产生重要的影响,做决策规划之前需要确认和考虑:

    • 立项谈判

    • 目标产品

    • 合同价格

    • 交付日期

    • 完工标准

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

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

相关文章

LeetCode-460. LFU 缓存【设计 哈希表 链表 双向链表】

LeetCode-460. LFU 缓存【设计 哈希表 链表 双向链表】 题目描述:解题思路一:一张图秒懂 LFU!解题思路二:精简版!两个哈希表,一个记录所有节点,一个记录次数链表【defaultdict(new_list)&#x…

ChatGLM3大模型本地化部署、应用开发与微调

文章目录 写在前面ChatGLM3推荐图书作者简介推荐理由粉丝福利写在后面 写在前面 本期博主给大家推荐一本初学者学习并部署大模型的入门书籍,一起来看看吧! ChatGLM3 ChatGLM3是继一系列先进语言模型之后的又一力作,专为追求高精度和广泛适…

Linux网络——自定义序列化与反序列化

前言 之前我们学习过socket之tcp通信,知道了使用tcp建立连接的一系列操作,并通过write与read函数能让客户端与服务端进行通信,但是tcp是面向字节流的,有可能我们write时只写入了部分数据,此时另一端就来read了&#x…

【Linux】进程间通信方式之管道

🤖个人主页:晚风相伴-CSDN博客 💖如果觉得内容对你有帮助的话,还请给博主一键三连(点赞💜、收藏🧡、关注💚)吧 🙏如果内容有误的话,还望指出&…

阿里云开发uniapp之uni-starter

一、为什么使用uni-starter uni-starter是集成商用项目常见功能的、云端一体应用快速开发项目模版。 一个应用有很多通用的功能,比如登录注册、个人中心、设置、权限管理、拦截器、banner... uni-starter将这些功能都已经集成好,另外,uni-s…

Linux下的SPI通信

SPI通信 一. 1.SPI简介: SPI 是一种高速,全双工,同步串行总线。 SPI 有主从俩种模式通常由一个主设备和一个或者多个从设备组从。SPI不支持多主机。 SPI通信至少需要四根线,分别是 MISO(主设备数据输入,从设备输出),MOSI (主设数据输出从设备输入),SCLK(时钟信号),CS/SS…

ARM(4)缓存一致性

目录 一、缓存一致性问题 二、一致性实现方案 2.1 目录一致性协议 2.2 嗅探一致性协议 三、CHI协议 3.1 cache state 3.2 snoop维护一致性 四、其他一致性协议 4.1 MSI协议 4.2 MESI 协议 4.3 MOESI协议 本文介绍以下内容: 缓存一致性问题一致性实现方案…

vCenter 7.3证书过期无法登录处理方法

登录报错:如下图 Exception in invking authentication handler [SSL: CERTIFICATE_VERIFY_FAILED] certificate vertify failed: certificate has expired(_ssl.c:1076) 处理方法1:推荐,可行 登录vCenter控制台,AltF3切换至命令…

【DFT】高 K/金属栅极阈值电压偏移的密度泛函模型

文章《Density functional model of threshold voltage shifts at High-K/Metal gates》,是由R. Cao、Z. Zhang、Y. Guo、J. Robertson等人撰写,发表在《Solid-State Electronics》期刊上。通过密度泛函理论(Density Functional Theory, DFT&…

....comic科学....食用手册....

1.点击链接后,保存漫画至夸克网盘,若是新用户需要用手机注册. 2.在应用商店下载夸克APP. 3.登录APP下载已保存的漫画. 3.1 进入APP点击 夸克网盘 3.2 点击“转存的内容”后,长按 漫画文件夹,点击下载,下载速度400K左…

树(数据结构)

树的定义 一个根结点,其余结点分为 m 个不相交的集合, 其中每个集合本身又是一棵树,并且称为根的子树。 树的根结点没有前驱,其他结点有且仅有一个前驱。 所有结点可以有0个或多个后继。 基本术语 结点的度 树的度 : 树…

【Linux】深浅睡眠状态超详解!!!

1.浅度睡眠状态【S】(挂起) ——S (sleeping)可中断睡眠状态 进程因等待某个条件(如 I/O 完成、互斥锁释放或某个事件发生)而无法继续执行。在这种情况下,进程会进入阻塞状态,在阻塞状态下,进程…

mac 本地使用docker 运行es,kibana

1.下载 m芯片一些版本不支持.踩过坑.翻看官网才知道只有部分镜像支持m芯片 https://hub.docker.com/添加链接描述 docker pull elasticsearch:7.17.21 docker pull kibana:7.17.21镜像已经下载下来了 2.创建文件映射-挂载 /Users/lin/dev/dockerMsg 其中lin是自己的用户名…

设计模式(2)——工厂方法模式

目录 1. 摘要 2. 需求案例(设计一个咖啡店的点餐系统) 2.1 咖啡父类及其子类 2.2 咖啡店类与咖啡类的关系 3. 普通方法实线咖啡店点餐系统 3.1 定义Coffee父类 3.2 定义美式咖啡类继承Coffee类 3.3 定义拿铁咖啡继承Coffee类 3.4 定义咖啡店类 3.5 编写测试类 4. 简…

大模型微调实战之强化学习 贝尔曼方程及价值函数(五)

大模型微调实战之强化学习 贝尔曼方程及价值函数(五) 现在, 看一下状态-动作值函数的示意图: 这个图表示假设首先采取一些行动(a)。因此,由于动作(a),代理可能会被环境转换到这些状…

docker Harbor私有仓库部署管理

搭建本地私有仓库,但是本地私有仓库的管理和使用比较麻烦,这个原生的私有仓库并不好用,所以我们采用harbor私有仓库,也叫私服,更加人性化。 一、什么是Harbor Harbor是VWware 公司开源的企业级Docker Registry项…

ESP8266-01s刷入固件报SP8266 Chip efuse check error esp_check_mac_and_efuse

一、遇到的问题 使用ESP8266 固件烧录工具flash_download_tools_v3.6.8 烧录固件报错: 二、解决方法 使用espressif推出发基于python的底层烧写工具:esptool 安装方法:详见https://docs.espressif.com/projects/esptool/en/latest/esp32/ …

腾讯游戏海外扩张,增持芬兰游戏开发商股份持股比例增至14.8%

易采游戏网5月8日消息,近日腾讯再次出手,大幅增持了芬兰知名游戏开发商Remedy Entertainment的股份,持股比例猛增至14.8%。这一举动引起了业界和投资者的广泛关注。 据了解,腾讯此次增持是在2024年4月24日完成的。根据芬兰法律规…

Pandas高效化运算与时间序列处理

文章目录 第1关:字符串操作方法第2关:Pandas的日期与时间工具第3关:Pandas时间序列的高级应用 第1关:字符串操作方法 任务描述 本关任务:读取step1/bournemouth_venues.csv文件,获取Venue Name列&#xff…

【C++】string类的使用②(容量接口Capacity || 元素获取Element access)

🔥个人主页: Forcible Bug Maker 🔥专栏: STL || C 目录 前言🔥容量接口(Capacity)size和lengthcapacitymax_sizereserveresizeclearemptyshrink_to_fit 🔥元素获取(Ele…