求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center 汽车系统工程   模型库  
会员   
订购 | 案例 | 建模扩展语言 | 模型框架 | 学习资源 | 培训&咨询 | 用户组 | 客户专区 | 联系我们
  42 次浏览  4 次
Code Engineer
Communicator
AUTOSAR Engineer
视频&文章
发布日志
 
推出《代码逆向模型服务》 by 火龙果科技
作者:俎涛,火龙果科技
软件研发团队普遍面临如下问题:
  • 随着多年的积累,软件代码越来越多;
  • 代码积累的过程是由不同的人在不同的时间逐步追加;
  • 实际的代码已经和原有的设计文档严重不符;
  • 已经没有人能够了解软件程序的全貌了。
这会很危险,造成软件积累的资产可能失去控制而变成一颗炸弹!
为此,作为专注 MBSE 落地实践的火龙果科技技术团队,推出了《代码逆向模型服务》,目的是帮助研发团队重新让日积月累的软件程序可控,具体提供的服务如下:
1. 从现有代码逆向出设计模型  // 使用工具: EA + CodeEngineer
a) 代码逆向《软件架构模型》
b) 代码逆向《详细设计模型》

2. 基于模型生成和实际程序一致的设计文档  // 使用工具:文档生成器

a) 生成《软件架构文档》

b) 生成《软件详细设计文档》

如下是在建模工具 EA 中使用 Code Engineer 已有的飞行控制程序代码逆向后得到的模型图例。

描述程序,首先应该理清程序文件之间的依赖关系,这个通过分析代码文件的调用关系获得,采用 UML 类图建模,如下是使用建模工具 EA 的插件 CodeEngineer 逆向的某飞行控制系统的程序结构:

图 1. 程序结构图,采用 UML 类图
对于每个功能,应该分析清楚程序处理流程,这个通过分析核心功能函数的实现代码获得,采用 UML 活动图建模,如下是建模工具 EA 的插件 CodeEngineer 逆向的某飞行控制系统的飞行状态控制函数处理流程:
图 2. 程序流程图,采用 UML 活动图
对于一个功能,应该能够分析相关的函数和调用关系,这个通过分析功能相关的函数的调用关系获得,采用 UML 活动图建模,如下是建模工具 EA 的插件 CodeEngineer 逆向的某飞行控制系统的飞行状态控制功能相关的函数调用关系:
图 3. 函数调用关系图,采用 UML 活动图
对于一个功能,应该能够分析涉及到的程序模块和交互关系,这个通过分析功能相关的程序模块的交互顺序获得,采用 UML 顺序图建模,如下是建模工具 EA 的插件 CodeEngineer 逆向的某飞行控制系统的飞行状态控制功能相关的模块交互顺序:
图 4. 软件模块交互顺序 , 采用 UML 时序图
在对已有代码逆向完成后,还需要提炼软件的架构,这需要按照架构的视图,在代码逆向出的模型基础上,根据架构设计需求进行提炼,包括:功能视图,逻辑视图、组件视图、部署视图、运行视图。如下是某飞行控制系统的架构模型部分示例:
图 5. 代码组织结构图,采用 UML 包图
图6 . 软件组件图,采用 UML 组件图
图7 . 部署图,采用 UML 部署图
最后,应该把模型输出为可以广泛阅读的文档,包括《软件架构文档》《软件详细设计文档》,这可以利用文档生成器,基于模型自动化输出。
如果您也受困于凌乱的代码和过时的文档,欢迎联系我们,帮您解困!
服务:代码逆向模型
工具
  • 建模工具EA
  • Code Engineer:代码正逆向
  • 文档生成器
  • 服务 软件模型框架搭建
    现有代码的模型逆向
    模型生成文档
    技术问题,欢迎联系我们
  • teacher@uml.net.cn
  • 010-62670969
  • 42 次浏览  4 次