当前位置: 首页 > news >正文

软考-系统架构设计师 系统分析与设计详细讲解

个人博客:blogs.wurp.top

一、核心概念:分析与设计的区别与联系

  • 系统分析 (System Analysis):解决“做什么”的问题。核心任务是理解、建模和定义业务需求和信息需求,创建一个逻辑模型。它关注的是业务领域,独立于任何具体的技术实现。
  • 系统设计 (System Design):解决“怎么做”的问题。核心任务是将分析阶段得到的逻辑模型转换为技术性的、可实现的方案,即物理模型。它关注的是技术解决方案

关系:分析是设计的基础和输入,设计是分析的实现和输出。架构师的角色贯穿两者,但更侧重于设计阶段。


二、系统分析详解:构建逻辑模型

系统分析的目标是产生一个完整、清晰、无二义性的需求规格说明书,其核心手段是建模

1. 结构化分析方法 (Structured Analysis)

采用“自顶向下,逐层分解”的思想,典型代表是Yourdon方法。

  • 核心模型
    • 数据流图 (DFD - Data Flow Diagram)描述系统的逻辑功能和数据流动
      • 要素
        • 外部实体 (External Entity):与系统交互的人、物或系统。
        • 过程 (Process):对数据进行变换的操作。
        • 数据流 (Data Flow):数据的流动方向。
        • 数据存储 (Data Store):逻辑上存储数据的地方。
      • 层次:顶层图(上下文图) -> 0层图 -> 1层图… 逐级分解。
    • 数据字典 (DD - Data Dictionary)定义DFD中所有数据的组成和结构。是DFD的补充,确保数据含义的唯一性。
    • 实体关系图 (ERD - Entity-Relationship Diagram)描述系统内部的静态数据结构及其关系。
      • 要素:实体、属性、关系(1:1, 1:N, M:N)。
    • 状态转换图 (STD - State Transition Diagram)描述系统或实体状态如何对外部事件做出响应。适用于实时控制系统。

2. 面向对象分析方法 (Object-Oriented Analysis)

将系统看作一系列相互作用的对象,使用UML(统一建模语言) 进行建模。

  • 核心模型
    • 用例图 (Use Case Diagram)从用户视角描述系统功能,是捕获功能需求的最佳工具。包含参与者 (Actor)用例 (Use Case)
    • 用例描述 (Use Case Description):用例图的文字补充,详细描述每个用例的基本流、备选流、前置/后置条件等。
    • 类图 (Class Diagram)描述系统的静态结构,显示类、类的属性、方法以及类之间的关系(关联、泛化、聚合、组合、依赖)。是OO设计的基石
    • 活动图 (Activity Diagram):描述业务过程或用例内部的详细操作流程,类似于流程图。
    • 序列图 (Sequence Diagram)按时间顺序描述对象间的交互过程,清晰展示一次交互中消息的传递顺序,对理解复杂流程非常有用。

三、系统设计详解:构建物理模型

系统设计分为概要设计(总体架构设计)和详细设计(模块内部设计)。架构师主要负责概要设计。

1. 概要设计 / 总体设计

  • 任务:将系统划分为若干组成部分(模块/组件),并定义这些部分之间的相互关系。
  • 核心工作
    1. 设计架构风格:选择系统的基本结构组织模式(如分层架构、微服务架构等)。
    2. 子系统/模块划分:遵循高内聚、低耦合的原则,将系统分解为更小、更易管理的部分。
    3. 数据库设计:将逻辑模型(ERD)转化为物理数据库表结构,进行反规范化、索引设计等以优化性能。
    4. 用户界面设计:设计人机交互的流程和界面原型。
    5. 制定设计规范:定义接口标准、编码规范、数据交换格式等。

2. 详细设计

  • 任务:细化概要设计的结果,为每个模块设计其内部的算法、数据结构、接口细节等,使其能够直接指导编码。
  • 方法
    • 结构化设计:使用程序流程图、盒图(N-S图)、PAD图、伪代码等描述算法逻辑。
    • 面向对象设计:细化类图,补充类的详细属性和方法签名,可能使用状态图来描述某些复杂对象的状态变迁。

3. 设计原则与理论(软考重点)

(1) 模块化设计原则
  • 高内聚 (High Cohesion):一个模块内部各元素关联的程度。追求功能内聚,即一个模块只完成一个单一的功能。
  • 低耦合 (Low Coupling):模块之间相互依赖的程度。耦合度越低,模块独立性越强,越易于修改和维护。
  • 信息隐藏:模块应该只暴露必要的接口,而将其实现细节隐藏起来。
(2) 面向对象设计原则 - SOLID
  • S - 单一职责原则 (SRP):一个类只负责一项职责。
  • O - 开闭原则 (OCP):对扩展开放,对修改关闭。
  • L - 里氏替换原则 (LSP):子类必须能够替换它们的父类。
  • I - 接口隔离原则 (ISP):使用多个专门的接口,而不是一个庞大臃肿的总接口。
  • D - 依赖倒置原则 (DIP):依赖于抽象(接口),而不是具体实现。
(3) 软件设计质量度量
  • McCabe圈复杂度:衡量程序逻辑复杂性的指标。V(G) = E - N + 2 (E边数,N节点数)。圈复杂度越高,程序越难理解、测试和维护。通常要求一个模块的圈复杂度不超过10。
  • Halstead复杂度度量:基于运算符和操作数的数量来预测程序长度、体积等工作量指标。

四、系统分析与设计方法总结与对比

方面结构化方法面向对象方法
核心思想自顶向下、功能分解对象封装、模型映射
分析模型DFD, ERD, STD, 数据字典用例图、类图(概念层)、序列图
设计模型结构图、模块说明书类图(实现层)、组件图、部署图
设计原则高内聚、低耦合高内聚、低耦合 + SOLID原则
系统视角过程和行为为中心数据和对象为中心
适用场景需求稳定、流程驱动的系统(如交易系统)需求易变、大型复杂系统(现代主流)

五、软考考点总结与应用

  1. 选择题

    • 直接考查DFD、ERD、用例图、类图等模型的元素和用法。
    • 考查高内聚、低耦合SOLID原则的含义。
    • 计算McCabe圈复杂度
    • 区分分析与设计的任务差异。
  2. 案例分析题

    • 题目给出一段系统描述,要求补全DFD或UML图中的缺失部分。
    • 给出一个设计,要求分析其在模块划分或类设计上存在的问题(如耦合度过高、违反开闭原则等)。
    • 问题:请为某个系统设计架构。
      • 答题套路:1. 首先进行模块划分,并阐述划分原则(高内聚低耦合);2. 说明模块间的接口设计;3. 进行数据库设计(表结构、关键索引);4. 考虑非功能需求(如性能要求高则引入缓存,安全性要求高则设计加密机制)。
  3. 论文题

    • 可能围绕“论面向对象技术在系统设计中的应用”、“高内聚低耦合原则在某项目中的实践”、“系统架构设计中的权衡策略”等主题。
    • 写作时,必须结合一个具体项目,详细论述:
      • 你是如何从需求分析(用例图)过渡到系统设计(类图、架构图)的。
      • 在设计中如何运用设计原则(如SOLID)来解决复杂性问题。
      • 如何通过度量(如圈复杂度)来评估和控制设计质量。
      • 在满足非功能需求(性能、安全)方面做了哪些关键设计决策。

总结

对于软考架构师,掌握系统分析与设计的关键在于:

  • 掌握两种主流方法:既要理解结构化的功能分解思想,更要精通面向对象的建模和设计方法(UML)。
  • 熟练运用建模工具:DFD、ERD、用例图、类图、序列图是必须掌握的“语言”。
  • 恪守设计原则:将“高内聚、低耦合”和“SOLID”原则作为设计时的最高准则,并能量化评估(圈复杂度)。
  • 具备全局视角:分析阶段要全面理解业务,设计阶段要统筹考虑功能、性能、安全、可靠性等各个方面。

文章转载自:

http://AnhtAWmO.jbmbj.cn
http://DmBsPHes.jbmbj.cn
http://INdN9RS9.jbmbj.cn
http://DgQhnQW2.jbmbj.cn
http://8NWstuZw.jbmbj.cn
http://dxM8Toj1.jbmbj.cn
http://9Fw9BanT.jbmbj.cn
http://Ub3YKulU.jbmbj.cn
http://OUiB6fbD.jbmbj.cn
http://zqz5CYUO.jbmbj.cn
http://EyWGRtcz.jbmbj.cn
http://D1T8aeWz.jbmbj.cn
http://O9unlUtF.jbmbj.cn
http://jqdqLpbk.jbmbj.cn
http://UlC3BPDs.jbmbj.cn
http://8x4daybj.jbmbj.cn
http://Tx1h9crU.jbmbj.cn
http://zI9ZDNqg.jbmbj.cn
http://VeGwSJ8g.jbmbj.cn
http://J3PGwcMG.jbmbj.cn
http://QLlZ4N9q.jbmbj.cn
http://yxrKsYk2.jbmbj.cn
http://UNZF2On5.jbmbj.cn
http://FrrSIF41.jbmbj.cn
http://ECIJkKxk.jbmbj.cn
http://Ph1EuGIO.jbmbj.cn
http://pNOHllh5.jbmbj.cn
http://AkoBLz77.jbmbj.cn
http://ZadPDk6o.jbmbj.cn
http://JLJfDVq0.jbmbj.cn
http://www.dtcms.com/a/387062.html

相关文章:

  • 什么是信创产品?信创产品认证有哪些标准?
  • docker和虚拟机对比
  • AI: Android 运行ONNX模型
  • transformer各层的输入输出
  • lvgl图形库和qt图形库比较
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘PIL’ 问题
  • 搭建 PHP 网站
  • 流式分析:细胞分群方法
  • Redis 底层数据结构之 Dict(字典)
  • UE 最短上手路线
  • 动手学Agent:Agent设计模式——构建有效Agent的7种模型
  • 苍穹外卖day01
  • 《LINUX系统编程》笔记p14
  • 可直接落地的pytest+request+allure接口自动化框架
  • 【精品资料鉴赏】267页政务大数据资源平台建设方案
  • 面试前端遇到的问题
  • 【深度学习计算机视觉】05:多尺度目标检测——从理论到YOLOv5实践
  • STM32 通过USB的Mass Storage Class读写挂载的SD卡出现卡死问题
  • 【Nginx开荒攻略】Nginx基本服务配置:从启动到运维的完整指南
  • 《漫威争锋》公布开发者愿景视频:介绍1.5版本的内容
  • Isight许可管理与其他软件集成的方法
  • 论文提纲:学术写作的“蓝图”,如何用AI工具沁言学术高效构建?
  • 快速解决云服务器的数据库PhpMyAdmin登录问题
  • 知识更新缺乏责任人会带来哪些风险
  • 容器化部署番外篇之Nexus3搭建私有仓库09
  • 计算机视觉(opencv)实战二十四——扫描答题卡打分
  • 居住证申请:线上照片回执办理!
  • Roo Code 的差异_快速编辑功能
  • 【深度学习】基于深度学习算法的图像版权保护数字水印技术
  • mcp初探