系统架构设计师 - 软件工程(2)

news2024/11/17 19:24:51

软件工程

  • 软件工程(13-22分)非常重要
    • 软件系统建模
    • 系统设计
      • 界面设计 ★★
      • 软件设计
      • 结构化设计 ★★
      • 面向对象设计 ★★★★★
        • 基本过程
        • 设计原则
        • 设计模式
          • 创建型模式:创建对象
          • 结构型模式:更大的结构
          • 行为型模式:交互及职责分配


大家好呀!我是小笙,本章我主要分享系统架构设计师 - 软件工程(2)知识,希望内容对你有所帮助!!

软件工程(13-22分)非常重要

软件系统建模

软件系统建模是软件开发中的重要环节,通过构建软件系统模型可以帮助系统开发人员理解系统、抽取业务过程和管理系统的复杂性

软件系统建模优化过程

image-20240621125254189

例题

软件系统建模(Software System Modeling)是软件开发中的重要环节,通过构建软件系统模型可以帮助系统开发人员理解系统、抽取业务过程和管理系统的复杂性,也可以方便各类人员之间的交流。软件系统建模是在系统需求分析和系统实现之间架起的一座桥梁,系统开发人员按照软件系统模型开发出符合设计目标的软件系统,并基于该模型进行软件的维护和改进。请围绕“论软件系统建模方法及其应用”论题,依次从以下三个方面进行论述

  1. 说明软件系统开发中常用的建模方法有哪几类?阐述每种方法的特点及其适用范围

    1、结构化建模方法:结构化建模方法是以过程为中心的技术,可用于分析一个现有的系统以及定义新系统的业务需求。结构化建模方法所绘制的模型称为数据流图(DFD)。对于流程较为稳定的系统可考虑结构化建模方法
    2、信息工程建模方法(或数据库建模方法):信息工程建模方法是一种以数据为中心,但过程敏感的技术,它强调在分析和研究过程需求之前,首先研究和分析数据需求。信息工程建模方法所创建的模型被称为实体联系图(ERD)。主要用于数据建模
    3、面向对象建模方法:面向对象建模方法将“数据”:和“过程”集成到被称为“对象”的结构中,消除了数据和过程的人为分离现象。面向对象建模方法所创建的模型被称为对象模型。随着面向对象技术的不断发展和应用,形成了面向对象的建模标准,即UML(统一建模语言)。UML定义了几种不同类型的模型图,这些
    模型图以对象的形式共建一个信息系统或应用系统,是目前比较常用的建模方法


系统设计

界面设计 ★★

黄金三法则

  • 置于用户控制之下
  • 减少用户的记忆负担
  • 保持界面的一致性

例题

下列关于用户界面设计的叙述中,错误的是 界面交互模型应经常进行修改

  • 界面交互模型应经常进行修改
  • 界面的视觉布局应该尽量与真实世界保持一致
  • 所有可视信息的组织需要按照统一的设计标准
  • 确保用户界面操作和使用的一致性

软件设计

软件设计包括体系结构设计、接口设计、数据设计和过程设计

  • 结构设计:定义软件系统各主要部件之间的关系
  • 接口设计(人机界面设计):软件内部,软件和操作系统之间以及软件和人之间如何通信
  • 数据设计:将模型转换成数据结构的定义(好的数据设计将改善程序结构和模块划分,降低过程复杂性)
  • 过程设计:系统结构部件转换成软件的过程描述

例题

软件设计包括了四个既独立又相互联系的活动:高质量的 数据设计 将改善程序结构和模块划分,降低过程复杂性; 软件结构设计 的主要目标是开发一个模块化的程序结构,并表示出模块间的控制关系; 人机界面设计 描述了软件与用户之间的交互关系

  • 程序设计 数据设计 算法设计 过程设计
  • 软件结构设计 数据结构设计 数据流设计 分布式设计
  • 数据架构设计 模块化设计 性能设计 人机界面设计

结构化设计 ★★

  • 概要设计(外部设计):功能需求分配给软件模块,确定每个模块的功能和调用关系,形成模块结构图
  • 详细设计(内部设计):为每个具体任务选择适当的技术手段和处理方法

结构化设计原则

  • 模块独立(高内聚、低耦合)

    image-20240625125002962 image-20240625125024197

  • 保持模块的大小适中

  • 多扇入,少扇出

  • 深度和宽度均不宜过高

模块的四个要素

  1. 输入和输出,模块的输入来源和输出去向都是同一个调用者,即一个模块从调用者那取得输入,进行加工后再把输出返回调用者
  2. 处理功能,指模块把输入转换成输出所做的工作
  3. 内部数据,指仅供该模块本身引用的数据
  4. 程序代码,指用来实现模块功能的程序

面向对象设计 ★★★★★

基本过程

image-20240818132252326

设计原则
  • 单一职责原则:设计目的单一的类
  • 开放封闭原则:对扩展开放,对修改封闭
  • 里氏替换原则:子类可以替换父类
  • 依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程
  • 接口隔离原则:使用多个专门的接口比使用单一的总接口要好
  • 组合重用原则侧:要尽量使用组合,而不是继承关系达到重用目的
  • 迪米特原则(最少知识原则):一个对象应当对其他对象有尽可能少的了解

例题

1、最少知识原则(也称为迪米特原则)是面向对象设计原则之一,指一个软件实体应当尽可能少地与其他实体发生相互作用。这样,当一个实体被修改时,就会尽可能少地影响其他的实体。下列叙述中, 在类的结构设计上,每个类都应当尽可能提高对其属性和方法的访问权限 不符最少知识原则

  • 在类的划分上,应当尽量创建松耦合的类
  • 在类的设计上,只要有可能,一个类型应当设计成不变类
  • 在类的结构设计上,每个类都应当尽可能提高对其属性和方法的访问权限
  • 在对其他类的引用上,一个对象对其他对象的引用应当降到最低
设计模式

概念:主要关注软件系统的设计,与具体的实现语言无关

注意:有打钩的表示既可以是类模式,也可以是对象模式,无下划线的表示只是对象模式

创建型模式:创建对象
  • 工厂方法(Factory Method)模式 √

    定义了创建对象的接口,它允许子类决定实例化哪个类(动态生成)

    image-20240627125039527
  • 抽象工厂(Abstract Factory)模式

    提供一个接口,可以创建一系列相关或相互依赖的对象而无需指定它们具体的类(生产成系列对象)

    image-20240627125314210
  • 原型(Prototype)模式

    允许对象在不了解要创建对象的确切类以及如何创建等细节的情况下创建自定义对象。通过拷贝原型对象来创建新的对象(克隆对象)

  • 单例(Singleton)模式

    确保一个类只有一个实例,并且提供了对该类的全局访问入口(单实例)

  • 构建器(Builder)模式

    将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示(复杂对象构造)

结构型模式:更大的结构
  • 适配器(Adapter)模式

    将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作(转换接口)

    image-20240703145129825

  • 桥接(Bridge)模式

    将一个复杂的组件分成两个独立的但又相关的继承层次结构将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化(继承树拆分)

    image-20240705143421438

  • 组合(Composite)模式

    创建树型层次结构来改变复杂性,同时允许结构中的每一个元素操作同一个接口。用于表示“整体部分”的层次结构(树形目录结构)

    image-20240705144255883
  • 装饰(Decorator)模式

    在不修改对象外观和功能的情况下添加或者删除对象功能即动态地给一个对象添加一些额外的职责(动态附加职责)

  • 外观(Facade)模式

    子系统中的一组接口提供了个统一的接口(对外统一接口)

  • 享元(Flyweight)模式

    可以通过共享对象减少系统中低等级的、详细的对象数目提供支持大量细粒度对象共享的有效方法(汉字编码)

  • 代理(Proxy)模式

    为控制对初始对象的访问提供了一个代理或者占位符对象(快捷方式)

行为型模式:交互及职责分配
  • 职责链(Chain of Responsibility)模式

    可以在系统中建立一个链,这样消息可以在首先接收到它的级别处被处理,或者可以定位到可以处理它的对象(传递职责)

  • 命令(Command)模式

    在对象中封装了请求,这样就可以保存命令,将该命令传递给方法以及像任何其他对象一样返回该命令(日志记录,可撤销)

  • 解释器(Interpreter)模式 √

    可以解释定义其语法表示的语言,还提供了用表示来解释语言中的语句的解释器(虚拟机的机制)例如适用于工作流

  • 迭代器(Iterator)模式

    为集合中的有序访问提供了一致的方法,而该集合是独立于基础集合,并与之相分离的(数据集)

  • 中介者(Mediator)模式

    通过引入一个能够管理对象间消息分布的对象,简化了系统中对象间的通信(不直接引用)

    image-20240716141349566
  • 备忘录(Memento)模式

    保持对象状态的快照,这样对象可以在不向外界公开其内容的情况下,返回到它的最初状态(游戏存档)

  • 观察者(Observer)模式

    为组件向相关接收方广播消息提供了灵活的方法,定义对象间的一种一对多的依赖关系(订阅、广播、联动)

  • 状态(State)模式

    允许一个对象在其内部状态改变时改变它的行为(状态变成类)

  • 策略(Strategy)模式

    定义一系列算法,把它们一个个封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的用户而变化(多方案切换)

    image-20240717142219965

  • 模板方法(Template Method)模式 √

    提供了在不重写方法的前提下允许子类重载部分方法的方法(框架)

  • 访问者(Visitor)模式

    提供了一种方便的、可维护的方法来表示在对象结构元素上要进行的操作(数据与操作分离)

例题

1、设计模式按照目的可以划分为三类,其中, 创建型 模式是对对象实例化过程的抽象。例如 Singleton 模式确保一个类只有一个实例,并提供了全局访问入口; Prototype 模式允许对象在不了解要创建对象的确切类以及如何创建等细节的情况下创建自定义对象; Builder 模式将复杂对象的构建与其表示分离

  • A 创建型 B 结构型 C 行为型 D 功能型
  • A Facade B Builder C Prototype D Singleton

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

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

相关文章

四川财谷通信息技术有限公司抖音小店优势解析

在数字经济蓬勃发展的今天,电商平台如雨后春笋般涌现,其中,四川财谷通信息技术有限公司旗下的抖音小店凭借其独特的优势和强大的实力,在众多竞争者中脱颖而出,成为消费者和商家信赖的优选平台。本文将详细解析四川财谷…

Windows键快捷键大全

Windows键快捷键大全 Windows键结合其他键可以执行多种快捷操作,以下是一些常用的Windows键快捷键: Windows键 D: 显示或隐藏桌面。Windows键 E: 打开文件资源管理器。Windows键 L: 锁定电脑。Windows键 R: 打开运行对话框。Windows键 I: 打开Win…

Java中JDK动态代理

参考:疯狂Java讲义 第18章 文章目录 前言复杂度与耦合的矛盾 使用JDK动态代理总结 前言 复杂度与耦合的矛盾 开发实际应用的软件系统时,通常会存在相同代码段重复出现的情况,在这种情况下,一般都提取为一个方法,在不…

SOP企业内部推行:效率飙升100%,质量保障零瑕疵!

在企业的日常运营中,你是否经常遇到这样的问题:同样一项工作,不同的人做出来效果却大相径庭?或者,明明已经制定了工作流程,但执行起来却总是出现偏差,导致效率低下、质量不稳?这些问…

【STM32单片机_(HAL库)】3-2-2【中断EXTI】【电动车报警器项目】继电器定时开闭

1.硬件 STM32单片机最小系统继电器模块 2.软件 继电器模块alarm驱动文件添加GPIO常用函数main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "alarm.h"int main(void) {HAL_Init(); …

海外服务器和内地服务器有什么区别?

海外服务器和内地服务器在许多方面存在区别,主要包括以下几个方面: 1. 地理位置 海外服务器:位于中国大陆以外的地区,比如美国、欧洲、东南亚等地。常见的海外服务器提供商有Amazon Web Services(AWS)、Goo…

稚晖君发布5款全能人形机器人,开源创新,全能应用

8月18日,智元机器人举行“智元远征 商用启航” 2024年度新品发布会,智元联合创始人彭志辉主持并发布了“远征”与“灵犀”两大系列共五款商用人形机器人新品——远征A2、远征A2-W、远征A2-Max、灵犀X1及灵犀X1-W,并展示了在机器人动力、感知、…

【LLM之Base Model】Weaver论文阅读笔记

研究背景 当前的大型语言模型(LLM)如GPT-4等,尽管在普通文本生成中表现出色,但在创造性写作如小说、社交媒体内容等方面,往往不能很好地模仿人类的写作风格。这些模型在训练和对齐阶段,往往使用的是大规模…

Java | Leetcode Java题解之第347题前K个高频元素

题目&#xff1a; 题解&#xff1a; class Solution {public int[] topKFrequent(int[] nums, int k) {Map<Integer, Integer> occurrences new HashMap<Integer, Integer>();for (int num : nums) {occurrences.put(num, occurrences.getOrDefault(num, 0) 1);…

【layui】layer弹出图片层(开启图片旋转 放大 缩小 还原)

详细参照layui官网组件 弹出层组件 &#x1f525;Photots —————————————————————————— 弹出图片层&#xff08;开启图片旋转 放大 缩小 还原&#xff09;是layui2.8.16的新增功能&#xff0c; 新增 photos 层的鼠标滚轮缩放功能 是layui2.8.16的新增…

8.17模拟赛题解

先考虑空间能不能把N个座位放好 最优的方式就是挨着摆放 那么一排能摆放QL/x的商个椅子 &#xff0c;然后计算摆放完N个座位需要多少排&#xff0c;N/Q 向上取整 计算所需要的排总共占据多宽&#xff0c;讨论有没有超过W&#xff0c;然后讨论剩余空间还能放几条走廊 如果走廊数…

蚓链数字化营销:连接心灵的新桥梁

在当今数字化浪潮汹涌的时代&#xff0c;营销领域也经历了一场深刻的变革。蚓链数字化营销&#xff0c;已不仅仅是一种推广手段&#xff0c;更是连接品牌与消费者心灵的新桥梁&#xff0c;让每一次互动都充满温度与价值。 曾经&#xff0c;品牌与消费者之间的沟通隔着一层厚厚…

小白零基础学数学建模系列-Day8-多目标规划问题与案例实践

文章目录 1. 引言1.1 优化问题的背景1.2 单目标规划与多目标规划的概述 2. 单目标规划2.1 定义2.2 应用场景2.3 求解方法2.4 案例&#xff1a;制造企业生产成本最小化的优化方案2.4.1 案例背景2.4.2 模型建立2.4.3 模型求解2.4.4 结果分析2.4.5 总结 3. 多目标规划3.1 定义3.2 …

【MySQL进阶之路】数据库的操作

目录 创建数据库 字符集和校验规则 查看数据库支持的字符集 查看数据库支持的字符集校验规则 指定字符集和校验规则 在配置文件中配置 查看数据库 显示创建语句 修改数据库 删除数据库 数据库的备份和恢复 备份整个数据库 备份特定表 备份多个数据库 备份所有数据…

无人机测绘技术及应前景详解

无人机测绘技术是一种将无人机技术、遥感技术、地理信息系统&#xff08;GIS&#xff09;和计算机技术相结合&#xff0c;对自然地理要素或地表人工设施的形状、大小、空间位置及其属性等进行测定、采集并绘制成图的技术。它利用高精度传感器&#xff08;如激光雷达、航拍相机等…

遗传进化算法进行高效特征选择

在构建机器学习模型时&#xff0c;特征选择是一个关键的预处理步骤。使用全部特征往往会导致过拟合、增加计算复杂度等问题。因此&#xff0c;我们需要从原始特征集中选择一个最优子集&#xff0c;以提高模型的泛化性能和效率。 特征选择的目标是找到一个二元掩码向量&#xf…

液相色谱仪仪器校准怎么做?具体校准方法是什么?

液相色谱法概述 液相色谱仪是由输液系统、进样系统、分离系统、检测系统和数据处理系统等部分组成的分析仪器。液相色谱仪是根据样品之中各组分在色谱柱中的固定相和流动相间的分布或吸附特性的差异&#xff0c;流动相将样品带入色谱柱进行分离。由检测器检测&#xff0c;并由…

Java 和 .NET Core 在企业级应用开发中各有什么优势和劣势?看看AI是怎么回答的

Java 和 .NET Core 在企业级应用开发中各有什么优势和劣势&#xff1f;看看AI是怎么回答的 1.kimi 网址&#xff1a;https://kimi.moonshot.cn/ Kimi是北京月之暗面科技有限公司于2023年10月9日推出的一款智能助手&#xff0c;主要应用场景为专业学术论文的翻译和理解、辅助分析…

python基础语法 010 类和对象-6-1 继承定义

前提&#xff1a; 在真实世界中&#xff0c;类型之间可能存在范围包含关系&#xff0c;比如&#xff1a;人这个类型和亚洲人这个类型。 人是包括了亚洲人的&#xff0c;如果某人是员工亚洲人&#xff0c;那么它必定是一个人 这种关系&#xff0c;在编程语言中称为继承关系 比如…

Java Web|day5.MyBatis

MyBatis 定义 它是一款半自动的ORM持久层框架&#xff0c;具有较高的SQL灵活性&#xff0c;支持高级映射(一对一&#xff0c;一对多)&#xff0c;动态SQL&#xff0c;延迟加载和缓存等特性&#xff0c;但它的数据库无关性较低 **ORM: **Object Relation Mapping&#xff0c;…