影响软件质量的3组因素
1、产品修改
可理解性(我能理解它吗?)
可维修性(我能修复它吗?)
灵活性(我能改变它吗?)
可测试性(我能测试它吗?)
2、产品转移
可移植性(我能在另一台机器上使用它吗?)
可再用性(我能再用它的某些部分吗?)
互运行性(我能把它和另一个系统结合吗?)
3、产品运行
正确性(它按我的需要工作吗?)
健壮性(对意外环境它能适当地响应吗?)
效率(完成预定功能时它需要的计算机资源多吗?)
完整性(它是安全的吗?)
可用性(我能使用它吗?)
风险(能按预定计划完成它吗?)
原型法
适用于需求不明确的开发,按功能分为水平原型(界面)、垂直原型(复杂算法);按最终结果分为抛弃式原型、演化式原型。
抛弃型原型,此类原型在系统真正实现以后就放弃不用了。
演化型原型,此类原型的构造从目标系统的一个或几个基本需求出发,通过修改和追加功能的过程逐渐丰富,演化成最终系统。
统一过程
典型特点是用例驱动、以架构为中心、迭代和增量。
统一过程把一个项目分为四个不同的阶段:
构思阶段(初始/初启阶段):定义最终产品视图和业务模型、确定系统范围。
细化阶段(精化阶段):设计及确定系统架构、制定工作计划及资源要求。
构造阶段:开发剩余构件和应用程序功能,把这些构件集成为产品,并进行详细测试。
移交阶段:确保软件对最终用户是可用的,进行β测试,制作产品发布版本。
9个核心工作流:业务建模、需求、分析与设计、实现、测试、部署、配置与变更管理、项目管理、环境。
敏捷开发
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,适用于:①小团队,小项目;②经常变更;③高风险;④组织结构认可等情况;不适用:关键性、可靠性、安全性要求较高等情况。
常见的敏捷开发方法有极限编程法、水晶法、并列争球法和自适应软件开发方法。
极限编程(XP):在一些对费用控制严格的公司中使用,非常有效,近螺旋式的开发方法。四大价值观(沟通【加强面对面沟通】、简单【不过度设计】、反馈【及时反馈】、勇气【接受变更的勇气】),十二大最佳实践(简单设计、测试驱动、代码重构、结对编程、持续集成、现场客户、发行版本小型化、系统隐喻、代码集体所有制、规划策略、规范代码、40小时工作机制)。
水晶方法:白水晶、黄水晶等家族,适用不同项目。探索了用最少纪律约束而仍能成功的方法,从而在产出效率与易于运作上达到一种平衡。
开放式源码:程序开发人员在地域上分布很广【其他方法强调集中办公】。
SCRUM:明确定义了可重复的方法过程。适用于任何复杂的或创新性的项目。侧重于项目管理。
功用驱动开发方法(FDD):认为有效的软件开发需要3要素【人、过程、技术】。定义了6种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家。
ASD方法:其核心是三个非线性的、重叠的开发阶段:猜测、合作与学习。
动态系统开发方法(DSDM):倡导以业务为核心。
构件的组装
顺序组装:按顺序调用已经存在的构件,可以用两个已经存在的构件来创造一个新的构件。
层次组装:被调用构件的“提供”接口必须和调用构件的“请求”接口兼容。
叠加组装:多个构件合并形成新构件,新构件整合原构件的功能,对外提供新的接口。
组装可能出现3种不兼容:参数不兼容、操作不兼容、操作不完备。
逆向工程
逆向工程导出信息的四个抽象层次:
实现级:包括程序的抽象语法树、符号表、过程的设计表示。
结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构。
功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型。
领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如实体关系模型。
【逆向工程恢复信息的方法】:
使用用户指导下的搜索与变换方法可导出实现级、结构级信息。
使用变换式方法可导出实现级、结构级、功能级信息。
使用基于领域知识的方法可导出功能级、领域级信息。
使用铅板恢复法可导出实现级、结构级信息。
净室软件工程
净室即无尘室、洁净室。也就是一个受控污染级别的环境。
强调以合理的成本开发出高质量的软件。
理论基础主要是函数理论和抽样理论。
它提倡开发者不需要进行单元测试(但还是需要传统的模块测试),而是进行正确性验证和统计质量控制。
因为高质量改进管理,降低风险及成本,满足用户需求,提供竞争优势。
【技术手段】:
1.统计过程控制下的增量式开发:控制迭代
2.基于函数的规范和设计:盒子结构
定义3种抽象层次:行为视图(黑盒)→有限状态机视图(状态盒)→过程视图(明盒)
3.正确性验证:净室工程的核心
4.统计测试和软件认证:使用统计学原理,总体太大时必须采用抽样方法。
【缺点】:
太理论化,正确性验证的步骤比较困难且耗时。
开发小组不进行传统的模块测试,这是不现实的。
脱胎于传统软件工程,不可避免带有传统软件工程的一些弊端。
系统建模方法
(1)结构化建模方法:结构化建模方法是以过程为中心的技术,可用于分析一个现有的系统以及定义新系统的业务需求。结构化建模方法所绘制的模型称为数据流图(DFD)。对于流程较为稳定的系统可考虑结构化建模方法。
(2)信息工程建模方法(或数据库建模方法):信息工程建模方法是一种以数据为中心,但过程敏感的技术,它强调在分析和研究过程需求之前,首先研究和分析数据需求。信息工程建模方法所创建的模型被称为实体-联系图(ERD)。主要用于数据建模。
(3)面向对象建模方法:面向对象建模方法将“数据”和“过程”集成到被称为“对象”的结构中,消除了数据和过程的人为分离现象。面向对象建模方法所创建的模型被称为对象模型。随着面向对象技术的不断发展和应用,形成了面向对象的建模标准,即UML(统一建模语言)。UML定义了几种不同类型的模型图,这些模型图以对象的形式共建一个信息系统或应用系统。是目前比较常用的建模方法。
UML图(静态图/结构图)
包括类图、对象图、构件图、部署图、制品图、包图和组合结构图。
其中:
类图:描述一组类、接口、协作和它们之间的关系。
对象图:描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。
构件图:描述一个封装的类和它的接口、端口,以及由内嵌的构件和连接件构成的内部结构。
部署图:描述对运行时的处理节点及在其中生存的构件的配置。部署图给出了架构的静态部署视图,通常一个节点包含一个或多个部署图。软硬件之间映射。
制品图:系统的物理结构。
包图:由模型本身分解而成的组织单元,以及它们之间的依赖关系,包的图标像是一个带标签的文件夹,包的基本思想是把共同工作的元素放到一个文件夹中。
UML图(动态图/行为图)
包括用例图、顺序图、通信图、定时图、交互概览图、状态图和活动图。
其中:
用例图:系统与外部参与者的交互
顺序图:是一种交互图,它强调对象之间消息发送的顺序,同时显示对象之间的交互。强调按时间顺序。
通信图:也叫协作图。通信图也是一种交互图,它强调收发消息的对象或参与者的结构组织。顺序图和通信图表达了类似的基本概念,但它们所强调的概念不同,顺序图强调的是时序,通信图强调的是对象之间的组织结构(关系)。
定时图:强调实际时间。
状态图:描述一个状态机,它由状态、转移、事件和活动组成。状态图给出了对象的动态视图。
活动图:将进程或其他计算结构展示为计算内部一步步的控制流和数据流。
UML图关系之用例图关系
包括:包含关系、扩展关系、泛化关系。
包含关系:其中这个提取出来的公共用例称为抽象用例,而把原始用例称为基本用例或基础用例,当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们。
扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例,这样使描述可能更加清晰。
泛化关系:当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系。
UML图关系之类图/对象图关系:
泛化(继承)关系:特殊/一般关系。
实现关系:接口与类之间的关系。
关联关系:描述了一组链,链是对象之间的连接。
组合关系:整体与部分生命周期相同。
聚合关系:整体与部分生命周期不同。
依赖关系:一个事物发生变化影响另一个事物。
2026年下半年软考系统架构设计师备考学习可查看更多!2026年下半年软考考试题库-试题及答案-考试备考