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

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

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

  • 风险 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)【审查+测试】

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

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

    • 软件运营项目

    • 软件维护项目

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

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

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

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

    • 立项谈判

    • 目标产品

    • 合同价格

    • 交付日期

    • 完工标准

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

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

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

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

    • 立项谈判

    • 目标产品

    • 合同价格

    • 交付日期

    • 完工标准

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

信创 | 信创基础设施建设:国内外对比分析研究

信创基础设施建设在国内外的比较分析涉及到多个方面,包括政策支持、产业发展现状、技术进步、市场应用等。通过综合分析,我们可以得出以下结论: 政策支持与发展方向:中国自2019年以来,陆续出台了一系列政策支持信创产业…

RS485空调系统到BACnet江森楼宇系统的高效整合攻略

智慧城市的每一栋建筑都在追求更高的能效与更佳的居住体验,而这一切的实现离不开强大且灵活的楼宇自动化系统。其中,协议转换网关作为连接不同设备的纽带,扮演着至关重要的角色。本文将以一个典型的商业综合体为例,揭秘BACnet协议…

北交所佣金费率标准是多少?北交所相关信息科普

北交所的佣金费率并非固定不变,而是可以根据投资者的需求和证券公司的政策进行调整。目前北交所的佣金费率最低是万分之二。 一般来说,北交所的佣金费率默认在万分之三左右,但这不是固定的费率。根据证券公司的不同,佣金费率可以…

语义分割——前列腺分割数据集

引言 亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 …

微服务学习笔记

微服务学习笔记 文章目录 微服务学习笔记认识微服务微服务技术栈微服务学习要点微服务远程调用1)注册RestTemplate2) 服务远程调用RestTemplate Eureka注册中心简介操作过程搭建EurekaServer注册user-service在order-service完成服务拉取 Ribbon负载均衡IRule负载均衡策略饥饿加…

Electron学习笔记(二)

文章目录 相关笔记笔记说明 三、引入现代前端框架1、配置 webpack(1)安装 webpack 和 electron-webpack:(2)自定义入口页面 2、引入 Vue(1)安装 Vue CLI (2)调试配置 -- …

【Micropython Pitaya Lite教程】烧录固件

文章目录 前言一、编译固件源码二、烧录固件总结 前言 MicroPython是一种精简的Python 3解释器,可以在微控制器和嵌入式系统上运行。Pitaya Lite是一款基于ESP32的微控制器开发板,它结合了低功耗、Wi-Fi和蓝牙功能。结合MicroPython和Pitaya Lite&#…

Python AI库pandas读写数据库的应用操作——以sqlite3为例

Python AI库pandas读写数据库的应用操作——以sqlite3为例 本文默认读者具备以下技能: 熟悉python基础知识,vscode或其它编辑工具 已阅读Pandas基础操作文章,了解pandas常见操作 具备自主扩展学习能力 在数据分析和人工智能领域,pandas库和s…

Ruby中的字符串转换方法

在Ruby中,你可以使用各种方法来转换字符串。下面是一些常用的方法,当然选择哪种适用的方法还得更具具体项目来做调整。日常使用中下面的错误也是比较常见的,看看我们怎么处理哈。 1、问题背景 在Python中,内置的数据结构都有一个…

VMware 虚拟机打开一段时间后卡死,VNX进程CPU占比高

一、问题描述 打开虚拟机后可以正常运行 运行几分钟后突然卡死 然后通过任务管理器可以观察到VMware Workstation VMX应用进程的CPU占比高,CPU也出现异常 关闭虚拟机重新开启,还是一样卡死 二、系统环境 系统: Windows10 VMware: Workstation 17 Pro …

visa/masterCard虚拟信用卡可以用于欧洲亚马逊店Amazon铺吗?欧洲亚马逊Amazon店铺扣租金

亚马逊是网络上最早开始经营电子商务的公司之一,亚马逊成立于1995年,一开始只经营网络的书籍销售业务,现在则扩及了范围相当广的其他产品,已成为全球商品品种最多的网上零售商和全球互联网企业。 很多小伙伴需要开多个站点店铺&a…

软胶囊硬度计:QC部门保障药品质量的精准工具

软胶囊硬度计:QC部门保障药品质量的精准工具 一、引言 随着医药行业的快速发展和药品监管力度的加强,制药企业对于药品质量的要求越来越高。在药品的生产过程中,软胶囊作为一种常见的剂型,其硬度的控制对于药品质量至关重要。软胶…

数组进了多个obj,但是 在修改某个num值时,导致别的num值也发生了变化如何解决?

问题如下: 遇到的问题,数组monthArr1 push进了多个obj,但是 在修改某个num值时,导致别的num值也发生了变化。 而这就是深拷贝浅拷贝的问题。 解决浅拷贝使用深拷贝最简单方法 :JSON.parse(JSON.stringify(obj)) 或者: 使用深拷…

学习Java的日子 Day44 HTML基础

Day44 HTML 学习路线: 前端:展示页面、与用户交互 — HTML 后端:数据的交互和传递 — JavaEE/JavaWeb 1.网页的组成部分(HTMLCSSJavaScript) 前端开发的工作模式:开发输出htmlcssjs HTML:页面结构 CSS:页面…

【linux】——日志分析

1. 日志文件 1.1 日志文件的分类 日志文件: 是用于记录Linux系统中各种运行消息的文件,相当于Linux主机的“日记". 日志文件对于诊断和解决系统中的问题很有帮助,系统一旦出现问题时及时分析日志就会“有据可查”。此外。当主机遭受攻…

JVM的垃圾回收

JVM简介 JVM 是 Java Virtual Machine 的简称,意为 Java虚拟机。 虚拟机:是指通过软件模拟的具有完整硬件功能、运行在一个完全隔离的环境中完整计算机系统 1.JVM的内存区域划分 jvm是一个java进程 每一个java进程就是一个jvm实例 一个进程运行过程中 就要从操作系…

uniapp0基础编写安卓原生插件之编写安卓页面在uniapp上显示(摄像头调用)

前言 如果你对安卓插件开发部分不熟悉你可以先看uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之零基础编写安卓插件 效果 开始 dcloud_uniplugins.json {"nativePlugins": [{"hooksClass": "","plugins": [{&…

软件试运行方案,试运行报告(word原件获取)

一、 试运行目的 (一) 系统功能、性能与稳定性考核 (二) 系统在各种环境和工况条件下的工作稳定性和可靠性 (三) 检验系统实际应用效果和应用功能的完善 (四) 健全系统运行管理体制&…

Pspice for TI学习

Pspice for TI中PSpice Part Search空白解决方法 配置环境变量 Cad_PSpice_TI_Regr_Srvr https://software-dl.ti.com/pspice/S009 重新安装2023版的Pspice Pspice安装链接 打开新安装的软件即可发现PSpice Part Search可以正常使用了 VSIN各参赛的含义 VOFF直流偏置VAMPL…

JavaEE企业级开发中常用的Stream流

介绍 在Java编程中,Stream流是Java 8引入的一个重要概念,它提供了一种新的处理集合的方式,可以更加简洁、高效地进行数据操作。Stream流支持各种常见的操作,比如过滤、映射、排序、聚合等,同时也支持并行处理&#xf…