软考系统分析师·每日学习卡 | [日期:2025-06-12] | [今日主题:软件工程-逆向工程]

一、今日学了啥?

  • 软件产品线:一个产品集合,共享一个公共的、可管理的(可满足特定领域的特点要求的)特征集

    • 核心资源:共用的软件架构,通用构件、文档等
    • 产品集合:产品先线中的各种产品
    • 基于现有产品(现有系统需求->领域分析->领域设计->领域实现,属领域工程)和全新产品线(新系统需求->需求分析->系统设计->系统实现->新系统,属应用工程)
  • 逆向工程(现有系统->重构->新系统,现有系统->逆向工程->考虑新需求->正向工程->新系统)

    • 重构:同一抽象级别上转换系统描述形式
    • 设计恢复:从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息
    • 再工程:在逆向工程信息基础上,修改或重构已有系统,产生系统一个新版本
    • 正向工程:在现有系统中恢复设计信息的基础上,使用该信息去改变或重构现有系统

二、重点/要记住的!

  • 🔺 基于现有产品和全新产品线在演化方式和革命方式上的不同
对比维度 基于现有产品 全新产品线
演化方式 复用核心资源(如架构、构件)渐进优化现有系统 产品线核心资源随产品新成员的需求而演化(敏捷迭代)
革命方式 核心资源的开发基于现有产品集的需求和可预测的、将来需求的超集 开发满足所有预期产品线成员的需求的核心资源
  • ❌ 逆向工程级别

    级别 关注点 重构时需要吗? 举例
    实现级 代码本身(变量、方法、逻辑) 核心需要 a + b + c重构为sum(a, b, c)
    结构级 模块间关系(调用、继承) 有时需要 重构时避免破坏模块接口
    功能级 程序做什么(输入、输出、行为) 必须知晓(但不能改变) 确保重构后计算结果的正确性
    领域级 业务概念和规则 通常不需要 不理解“金融衍生品”也能重构计算它的代码

三、今天的小收获/卡住的地方

  • 例题:以下活动不属于逆向工程的是 ( ) ,如果只是希望完成代码重构任务,则只需获得 ( ) 信息即可。

    A 重构 B 设计恢复 C 再工程 D 架构设计
    A 实现级 B 结构级 C 功能级 D 领域级

    • 答案:D、A

    • 解析:与逆向工程相关的概念有重构、设计恢复、再工程和正向工程。对于代码重构任务,通常只需获得实现级信息,即过程的设计模型(实现级,一种底层的抽象),因为这足以支持代码级别的修改和优化。


四、明天学啥?

  • 需求工程相关内容

像实干家一样思考问题,像思想家一样付诸行动。

愿你我共同进步!

posted @ 2025-06-12 12:08  梦想截留时光  阅读(21)  评论(0)    收藏  举报