首页 > 数据库 > 数据库开发技术 > 软考系统架构师软件工程考点
适用于需求不明确。可分为 抛弃型原型 和 演化型原型 。
优势:可以帮助用户明确需求
阶段:
定义:瀑布模型是将软件生存周期中的各个活动规定为依线性顺序连接的若干阶段的模型, 包括需求分析、设计、编码、运行与维护。每个阶段因果关系紧密相连。
缺陷:
组成:瀑布模型 + 原型
特征:核心功能最先完成,每轮进行功能增量迭代每一个增量均发布一个可操作的产品,核心功能可以得到充分的测试。
组成:快速原型 + 瀑布模型【从最初概念项目开始第一个螺旋】
核心:引入风险分析
V模型强调测试贯穿始终。 W模型强调测试和开发并行进行。
概念:瀑布模型的高速变种,适用于比传统生命周期快得多的开发方法,它强调极短的开发周期,通常适用于基于构件的的开发方法获得快速开发。
核心:极短的开发周期
过程:业务建模 -> 数据建模 -> 过程建模 -> 应用生成 -> 测试与交付
适用性:RAD 对模块化要求比较高, 只能用于管理信息系统的开发,不适合技术风险很高的情况
优势:易扩展、易重用、降低成本、安排任务更灵活
缺陷:设计需合理,技术要求高,第三方构件质量难以控制
特点:用例驱动、以架构为中心、选代和增量
对项目划分阶段:
构思阶段(初始阶段):定义最终产品视图和业务模型、确定系统范围
化阶段(精化阶段):设计及确定系统架构、制定工作计划及资源要求。
构造阶段:开发及测试
移交阶段:确保软件对最终用户是可用的,制作产品,发布版本
核心工作流:
定义:一种以人为核心、迭代、循序渐进的开发方法
适用范围:小团队、小项目【PS:目前许多大项目也借鉴了敏捷开发的思想,将整体拆分为许许多多的小的里程碑进行敏捷开发】
核心思想:小步快跑
极限编程【XP - Extreme programming】
四大价值观:
十二大最佳实践:
水晶方法
提倡“机动性”的方法,拥有对不同类型项目非常有效的敏捷过程。
开放式源码
程序开发人员在地域上分布很广【PS:其他方法强调集中办公】
SCRUM【并列争球】
明确定义了可重复的方法过程,一种迭代式增量软件开发过程。
特征:“购买”(构件)而不是“重新构造”
特性:
可组装性:所有外部交互必须通过公开定义的接口进行
可部署性:构件总是二进制形式的,能作为一个独立实体在平台上运行
文档化:用户根据文档来判断构件是否满足需求
独立性:可以在无其他特殊构件的情况下进行组装和部署
标准化:符合某种标准化的构件模型
组装方式:
含义:设计的恢复过程
分层:
实现级:包括程序的抽象语法树、符号表、过程的设计表示
结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构
功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型
领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如实体关系模型
关键行动:
重构/重组(restructuring):在同一抽象级别上转换系统描述形式。
设计恢复(design recovery):借助工具从已有系统中抽象出有关数据设计,总体结构设计和过程设计等方面的信息。
逆向工程(reverse engineering):逆向工程是分析程序,力图在比源码更高抽象层次上建立程序的表示过程,逆向工程是程序的恢复过程。
正向工程(forward engineering):指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统,以改善其整体质量。
再工程/重构工程(Re-engineering):再工程是对现有系统的重新开发过程,包括逆向工程,新需求的考虑过程和正向工程。
PS:净室即无尘室、洁净室。也就是一个受控污染级别的环境。【这里主要指的是软件领域参考净室的设计理念演化出来的模型】。正确性验证是净室工程的核心。使用统计学原理,总体太大时必须采用抽样方法。
核心:强调将正确性验证而不是测试,作为发现和消除错误的主要机制。
抽象层次:行为视图【黑盒】 -> 有限状态机视图【状态盒】 -> 过程视图【白盒】
缺陷:
软件需求:用户对系统在功能、行为、性能、设计约束等方面的期望
阶段划分:
需求获取方法:
结构化需求分析【SA - Structured Analysis】
结构化分析工具:数据流图【DFD - Data Flow Diagram】
PS:图内数据平衡原则!(以下几种情况称为不平衡,即不合规)
面向对象需求分析【OOA - Object Oriented Analysis】
面向对象基本概念
对象定义:属性(数据) + 方法(操作) + 对象ID
类:实体类、控制类、边界类
继承与泛化:复用机制
封装:隐藏对象的属性和实现细节,仅对外公开接口
多态:不同对象收到同样的消息产生不同的结果
接口:一种特殊的类,它只有方法定义没有实现
重截:一个类可以有多个同名而参数类型不同的方法
消息和消息通信:消息是异步通信的
UML图
两组公共分类:【类与对象】、【接口与实现】
结构事物:模型中属于最静态的部分,代表概念上或物理上的元素。【类、接口、协作、用例、活动类、构件和节点】
行为事物:模型中的动态部分,代表时间和空间上的动作。【交互、状态机】
分组事物:模型中组织的部分,可以划分模型【包】
注释事物:模型中的解释部分【注释】
UML图分类
静态图:
动态图:
关系
UML “4+1”视图
UML采用4+1视图来描述软件和软件开发过程:
需求定义(形成需求规格)
有风险的做法:无足够用户参与,忽略了用户分类,用户需求的不断增加,模棱两可的需求,不必要的特性,过于精简的 SRS,不准确的估算。
定义:一种以以过程为中心的技术,可用于分析一个现有的系统以及定义新系统的业务需求。
结构化建模方法所绘制的模型称为数据流图(DFD)。
PS:对于流程较为稳定的系统可考虑结构化建模方法。
定义:一种以数据为中心,但过程敏感的技术,它强调在分析和研究过程需求之前,首先研究和分析数据需求。
信息工程建模方法所创建的模型被称为实体-联系图 (ERD)。
PS:此方法主要用于数据建模。
定义:将“数据”和“过程”集成到被称为“对象” 的结构中,消除了数据和过程的人为分离现象。
面向对象的建模标准:UML(统一建模语言)。
定义:系统与用户之间架起一座交互桥梁。
主要内容:定义界面形式、定义基本的交互控制形成、定义图形和符号、定义通用的功能键和组合键的含义及其操作内容、定义帮助策略等。
黄金三法则:置于用户控制之下、减少用户的记忆负担、保持界面的一致性
概要设计【外部设计】
功能需求分配给软件模块,确认每个模块的功能和调用关系,形成模块结构图。
详细设计【内部设计】
为每个具体任务选择适当的技术手段和处理方法。
结构化设计原则
模块四要素
模块独立性度量标准
聚合【衡量模块内部各元素结合的紧密程度】
耦合【度量不同模块间互相依赖的程度】
设计过程
设计原则
类的分类
黑盒测试【功能测试】
应用阶段:主要用于集成测试、确认测试和系统测试阶段。
常见表现形式:
等价类划分:不同等价类,揭示不同问题,有效等价类/无效等价类。
边界值分析:如1 <= x <= 10 ,可取x的值为0、1、10和11作为测试数据。
错误推测:依靠测试人员的经验和直觉。
白盒测试
应用阶段:主要用于单元测试阶段。
常见表现形式:
灰盒测试
应用阶段:主要用于集成测试阶段。
常见表现形式:介于白盒测试与黑盒测试之间的一种测试。
V模型
淘汰策略:遗留系统的技术含量较低,且具有较低的业务价值。对遗留系统的完全淘汰是企业资源的根本浪费,系统分析师应该善于“变废为宝”通过对遗留系统功能的理解和借鉴,可以帮助新系统的设计,降低新系统开发的风险。
继承策略:遗留系统的技术含量较低,已经满足企业运作的功能或性能要求,且具有较高的商业价值,目前企业的业务尚紧密依赖该系统。对这种遗留系统的演化策略为继承。在开发新系统时,需要完全兼容遗留系统的功能模型和数据模型。
改造策略:遗留系统具有较高的业务价值,基本上能够满足企业业务运作和决策支持的需要。改造包括系统功能的增强和数据模型的改造两个方面。
集成策略:遗留系统的技术含量较高,但其业务价值较低,可能只能完成某个部门的业务管理。这种系统在各自的局部领域里工作良好,但对于整个企业来说,存在多个这样的系统,不同的系统基于不同的平台、不同的数据模型,形成了一个个信息孤岛,对这种遗留系统的演化策略为集成。
影响软件可维护性的因素
软件维护类型
作者也整理了软考架构师学习备考资料,有需要的可以在文末添加作者 VX 了解详情。
往期回顾
欢迎加入 DevXTalk 的程序员、架构师、IT从业者交流群,在这里你可以和大佬们一起交流分享技术,行业经验,职位内推,摸鱼聊天。总之期待你的加入...
添加我的wx,备注:“进群”拉你进群(群二维码有效时间太短维持不了几天)
有招聘需求的也可以加我微信把招聘岗位发给我,我会贴在文章末尾,毕竟我的读者个个都是人才。
有需要推广自己的开源作品的也可以联系我,可以在公众号内帮助推广。
看完本文有收获?转发给更多的朋友吧
DevXTalk 不止于技术
原文作者:DevXTalk;如有侵权,请联系管理员删除。