信息系统管理工程师-软件设计与 UML 建模全解析
一、引言软件设计是信息系统开发生命周期中连接需求分析与系统实现的核心阶段核心目标是将 需要做什么 的需求规格说明转化为 如何实现 的技术方案是软考中级信息系统管理工程师第六章的核心考查内容占上午基础知识部分分值约 6-8 分同时是下午案例分析题的高频命题方向。软件设计方法经历了三个主要发展阶段20 世纪 70 年代形成结构化设计方法论以数据流为核心、自顶向下逐层分解为核心特征90 年代面向对象设计逐步成为主流通过封装、继承、多态提升系统可扩展性2000 年后统一建模语言 UML2.0 标准正式发布成为面向对象设计的通用建模规范同时设计模式理论的普及进一步提升了软件设计的复用性和规范性。本文将从结构化设计原理、面向对象设计原则、UML 建模体系、设计模式分类四个维度系统梳理核心知识点明确考试高频考点与实践应用要点。二、软件设计核心原理与分类一软件设计的定义与目标软件设计是依据需求规格说明书SRS通过科学的方法对系统的结构、模块、接口、实现逻辑进行定义的过程核心目标是保证系统的功能正确性、可维护性、可扩展性、安全性和性能指标满足需求。从工程视角可分为两个层级概要设计又称为总体设计核心任务是完成系统结构划分明确模块功能、接口与调用关系输出系统架构图、模块划分说明、接口规范等文档。详细设计针对每个模块的内部实现逻辑进行定义包含处理流程、数据存储、界面设计、异常处理、安全控制等内容输出详细设计说明书、伪码、数据库设计文档等交付物。二两大设计方法论对比目前主流设计方法分为结构化设计与面向对象设计两类两类方法的核心差异如下对比维度结构化设计面向对象设计核心导向面向数据流面向对象 / 类分解逻辑自顶向下逐层分解功能按业务实体抽象封装对象复用机制函数 / 过程复用类继承、对象组合复用扩展性调整需求需重构模块结构可通过扩展子类实现需求迭代适用场景流程固定的嵌入式系统、科学计算软件业务迭代频繁的信息系统、互联网应用软考中需明确两类方法的输入输出差异结构化设计输入为数据流图DFD、数据字典输出为系统结构图、模块说明面向对象设计输入为用例模型、领域模型输出为类图、交互图、设计方案。软件设计阶段整体流程与输入输出关系示意图三、结构化设计核心规则与实施方法一模块设计核心准则高内聚低耦合模块是结构化设计的基本单元具备功能、逻辑、状态三个基本属性功能定义模块的输入输出与对外能力逻辑描述内部实现机制状态定义模块运行的依赖环境。模块设计需遵循以下两个核心度量准则耦合衡量模块之间关联的紧密程度耦合度越低模块独立性越强从低到高共 7 类1非直接耦合两个模块无直接调用关系通过上层模块控制实现协同独立性最高2数据耦合仅通过参数传递简单数据类型是推荐的模块交互方式3标记耦合传递记录、对象等复杂数据结构仅使用结构中部分字段时会产生冗余依赖4控制耦合传递控制信号如状态标识、开关量被调用模块的执行逻辑由调用方控制增加了模块间的依赖程度5公共耦合多个模块访问同一个全局数据区如共享内存、公共数据库表数据修改会影响所有关联模块故障定位难度大6内容耦合一个模块直接访问另一个模块的内部数据、修改执行逻辑或直接进入模块内部执行是最差的耦合方式需严格禁止。内聚衡量模块内部各代码段的功能关联性内聚度越高模块职责越单一从高到低共 7 类1功能内聚模块所有代码共同完成单一明确的功能无冗余逻辑是最优的内聚类型2顺序内聚处理元素关联且必须按固定顺序执行前一个步骤的输出是后一个步骤的输入3通信内聚所有处理逻辑都操作同一组输入数据或生成同一组输出数据4过程内聚处理逻辑关联且必须按特定流程执行流程步骤之间无数据依赖5时间内聚包含的任务必须在同一时间间隔内执行如系统初始化模块、异常清理模块6逻辑内聚完成逻辑上相关的一组任务通过外部参数决定执行哪个分支7偶然内聚模块内代码无逻辑关联仅为减少代码量随意组合是最差的内聚类型。结构化设计的核心原则是尽量实现数据耦合、控制标记耦合、避免控制耦合、严禁公共耦合和内容耦合同时优先保障功能内聚、减少低层级内聚。二结构化设计常用工具概要设计工具系统结构图SC 图通过矩形表示模块、箭头表示调用关系、空心圆表示传递数据、实心圆表示传递控制信息清晰展示模块的层级结构与交互关系。详细设计工具1图形工具程序流程图使用起止框、处理框、判断框、流程线表达逻辑、N-S 图盒图完全去掉流程线适合结构化逻辑表达、PAD 图问题分析图支持自顶向下逐步求精2表格工具判定表、判定树适合多条件组合的逻辑描述3语言工具PDL伪码使用结构化语言描述处理逻辑无需关注语法细节可直接转化为代码。某省级政务服务审批系统采用结构化设计将系统划分为受理模块、审核模块、审批模块、出证模块四个核心模块模块间仅传递审批单编号与状态标识数据耦合每个模块仅完成对应环节的单一功能功能内聚系统上线后需求变更的平均修改成本降低 40%故障定位效率提升 60%。耦合与内聚类型对比及设计优先级示意图四、面向对象设计核心原则与类设计一面向对象设计七大原则SOLID 迪米特 组合重用面向对象设计的核心思想是抽象、封装、继承、多态通过七大设计原则保障系统的可扩展性与可维护性单职原则一个类仅承担一项职责仅有一个引起变化的原因避免类的功能过于臃肿例如用户类仅负责用户属性与基础操作不应包含用户权限校验逻辑。开闭原则对扩展开放、对修改封闭通过抽象层固定实现规范新增需求通过扩展实现类完成无需修改已有代码是面向对象设计的核心目标。里氏替换原则子类可以完全替换父类出现的位置且业务逻辑不受影响是继承复用的基础禁止子类重写父类的非抽象方法。依赖倒置原则高层模块依赖抽象接口不依赖具体实现类底层模块实现抽象接口通过依赖注入降低模块间的耦合度。接口隔离原则使用多个细粒度的专用接口避免定义包含多个不相关方法的总接口防止实现类实现不需要的冗余方法。组合重用原则优先使用对象组合Has-A 关系实现代码复用尽量减少类继承Is-A 关系避免继承带来的父类修改影响所有子类的问题。迪米特原则最少知识原则一个对象仅对直接关联的对象有了解仅调用直接关联对象的方法减少不必要的依赖降低需求变更的影响范围。二面向对象设计的三类核心类根据职责不同面向对象设计中的类分为三类实体类映射业务领域中的实体对应需求中的持久化数据通常包含属性与简单的属性操作方法例如用户类、订单类、商品类属性与数据库表结构直接对应。控制类实现用例的业务逻辑控制负责协调实体类与边界类的交互一个用例通常对应一个控制类例如订单创建控制类负责校验库存、生成订单、扣减库存等逻辑的编排。边界类实现系统与外部参与者的交互包括用户界面、第三方系统接口、硬件设备接口等例如 PC 端用户注册页面、微信支付回调接口、打印机驱动接口。某电商系统采用面向对象设计将订单相关功能划分为 Order 实体类、OrderCreateControl 控制类、OrderFrontPage 边界类当新增移动端订单提交入口时仅需新增 MobileOrderPage 边界类无需修改已有实体类与控制类代码需求迭代周期从 7 天缩短至 2 天。面向对象设计三类核心类协作关系示意图五、UML 建模体系与核心图应用统一建模语言UML是 OMG 组织发布的面向对象建模标准目前主流版本为 UML2.0其结构包含构造块、规则、公共机制三部分共定义 14 种模型图分为静态结构图、动态行为图两大类。一UML 核心元素事物是 UML 的基本建模元素分为四类1结构事物表示静态概念或物理元素包括类、接口、用例、构件、节点等2行为事物表示动态行为包括交互、状态机、活动3分组事物用于组织模型层次核心是包4注释事物用于解释模型元素即注释。关系定义事物之间的关联逻辑分为四类1依赖一个事物的变化会影响另一个事物的语义用带箭头的虚线表示2关联对象之间的结构性连接包括普通关联、聚合整体与部分可独立、组合整体与部分不可独立用实线表示3泛化一般元素与特殊元素的继承关系用带空心三角的实线表示4实现类实现接口定义的契约用带空心三角的虚线表示。二UML14 种图的分类与应用场景静态结构图描述系统静态结构1类图描述类、接口的属性、方法及相互关系是最核心的静态模型用于系统静态结构设计2对象图类图的实例快照展示某一时刻系统中对象的状态与关联3构件图描述封装构件的接口、端口与内部结构用于系统组件化设计4部署图描述运行时节点与构件的部署关系展示软件到硬件的映射5用例图描述参与者与系统用例的关联展示系统对外提供的功能6制品图描述系统的物理文件结构包括可执行文件、配置文件、依赖库等7包图描述模型的包层级结构与包之间的依赖用于模型组织管理8组合结构图描述类或构件的内部结构与协作关系。动态行为图描述系统动态逻辑1状态图描述单个对象的状态流转与触发事件用于状态变化复杂的对象建模如订单状态、审批流程状态2活动图描述业务流程的控制流与数据流类似流程图支持并发分支表达3顺序图强调对象交互的时间顺序展示消息的发送顺序与时间先后4通信图强调交互对象的组织结构展示对象之间的消息关联5定时图描述对象状态或值随时间的变化用于实时系统的时间约束建模6交互概览图结合活动图与顺序图的特征展示多个交互片段的流程关系。三UML 五视图架构体系UML 通过五个视图完整描述系统架构用例视图从外部参与者视角描述系统功能是其他视图的基础逻辑视图展示系统内部功能的实现逻辑包含类图、交互图进程视图描述系统的并发与同步机制包含线程、进程的调度关系实现视图描述系统的代码与构件结构包含构件图、制品图部署视图描述系统的物理部署架构包含部署图、节点关系。软考中需重点掌握类图、用例图、顺序图、活动图、状态图、部署图的适用场景与元素含义这六种图是每年的必考点。UML14 种图分类与应用场景对比表六、设计模式分类与核心应用设计模式是对软件设计中反复出现的问题的通用解决方案包含模式名称、问题场景、解决方案、效果四个核心要素按照处理范围与目的分为不同类别。一按处理范围分类类模式处理类与子类的静态关系通过继承实现编译时确定关系包括工厂方法、适配器类、模板方法、解释器等。对象模式处理对象之间的动态关系通过组合 / 聚合实现运行时可动态调整适用性更广泛包括抽象工厂、单例、代理、观察者等大部分设计模式。二按目的与用途分类创建型模式5 种用于对象创建逻辑的封装解耦对象的创建与使用包括单例模式保证一个类仅有一个实例、工厂方法模式、抽象工厂模式、建造者模式、原型模式。结构型模式7 种用于类或对象的组合实现灵活的结构扩展包括适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式。行为型模式11 种用于描述对象之间的交互与职责分配实现灵活的业务逻辑扩展包括职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式、中介者模式、备忘录模式、解释器模式。某企业 CRM 系统的客户通知功能采用策略模式将短信通知、邮件通知、微信通知封装为不同的通知策略类新增通知渠道时仅需新增策略实现类无需修改已有通知逻辑扩展成本降低 70%系统日志收集采用外观模式为上层业务提供统一的日志接口内部封装文件日志、数据库日志、ELK 日志存储的实现细节业务代码无需关心底层存储逻辑。设计模式分类与核心模式应用场景示意图七、总结与软考备考建议一核心知识点总结本文覆盖软件设计四大核心板块结构化设计的耦合内聚 7 种类型、模块设计原则、常用工具面向对象设计的 7 大原则、三类核心类职责UML 建模的 4 种关系、14 种图的分类与应用场景、五视图架构设计模式的三大分类与核心模式特征。二软考考试重点提示高频考点包括耦合与内聚的类型判断每年必考 1-2 题、面向对象设计 7 大原则的应用场景、UML 图的分类与适用场景、设计模式的分类与核心模式的作用。易错点包括聚合与组合的区别、状态图与活动图的适用场景、类模式与对象模式的差异。下午案例分析题通常会给出业务场景要求判断模块的耦合内聚类型、绘制 UML 类图或顺序图、选择合适的设计模式。三实践与备考建议备考时需结合真题理解概念重点记忆耦合内聚的排序、UML 图的分类、设计模式的分类实践中需遵循 高内聚低耦合 的核心准则优先使用面向对象设计方法结合设计模式提升系统的可扩展性建模时优先选择核心 UML 图避免过度建模。下一期我们将学习软件实现、部署交付与全过程管理的核心知识点敬请关注。八、课后小测在结构化设计中表示模块之间联系的程度从低到高分为 7 种类型。A. 内聚B. 耦合C. 模块化D. 抽象答案B。耦合表示模块之间联系的程度内聚表示模块内部各代码成分之间联系的紧密程度。