|
|
| |
| 推出《代码逆向模型服务》 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 次
|
|
| |