软考系统分析师·每日学习卡 | [日期:2025-06-12] | [今日主题:软件工程-逆向工程]
一、今日学了啥?
-
软件产品线:一个产品集合,共享一个公共的、可管理的(可满足特定领域的特点要求的)特征集
- 核心资源:共用的软件架构,通用构件、文档等
- 产品集合:产品先线中的各种产品
- 基于现有产品(现有系统需求->领域分析->领域设计->领域实现,属领域工程)和全新产品线(新系统需求->需求分析->系统设计->系统实现->新系统,属应用工程)
-
逆向工程(现有系统->重构->新系统,现有系统->逆向工程->考虑新需求->正向工程->新系统)
- 重构:同一抽象级别上转换系统描述形式
- 设计恢复:从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息
- 再工程:在逆向工程信息基础上,修改或重构已有系统,产生系统一个新版本
- 正向工程:在现有系统中恢复设计信息的基础上,使用该信息去改变或重构现有系统
二、重点/要记住的!
- 🔺 基于现有产品和全新产品线在演化方式和革命方式上的不同
| 对比维度 | 基于现有产品 | 全新产品线 |
|---|---|---|
| 演化方式 | 复用核心资源(如架构、构件)渐进优化现有系统 | 产品线核心资源随产品新成员的需求而演化(敏捷迭代) |
| 革命方式 | 核心资源的开发基于现有产品集的需求和可预测的、将来需求的超集 | 开发满足所有预期产品线成员的需求的核心资源 |
-
❌ 逆向工程级别
级别 关注点 重构时需要吗? 举例 实现级 代码本身(变量、方法、逻辑) 核心需要 将 a + b + c重构为sum(a, b, c)结构级 模块间关系(调用、继承) 有时需要 重构时避免破坏模块接口 功能级 程序做什么(输入、输出、行为) 必须知晓(但不能改变) 确保重构后计算结果的正确性 领域级 业务概念和规则 通常不需要 不理解“金融衍生品”也能重构计算它的代码
三、今天的小收获/卡住的地方
-
例题:以下活动不属于逆向工程的是 ( ) ,如果只是希望完成代码重构任务,则只需获得 ( ) 信息即可。
A 重构 B 设计恢复 C 再工程 D 架构设计
A 实现级 B 结构级 C 功能级 D 领域级-
答案:D、A
-
解析:与逆向工程相关的概念有重构、设计恢复、再工程和正向工程。对于代码重构任务,通常只需获得实现级信息,即过程的设计模型(实现级,一种底层的抽象),因为这足以支持代码级别的修改和优化。
-
四、明天学啥?
- 需求工程相关内容
像实干家一样思考问题,像思想家一样付诸行动。
愿你我共同进步!

浙公网安备 33010602011771号