EA中的逆向工程

来源:互联网 发布:消防编程软件 编辑:程序博客网 时间:2024/05/22 14:21

        承接上篇《EA中的正向工程》,这次是EA中的逆向工程,何为逆向工程?逆向工程指的是针对已有的,推出其实现的设计和细节,本文要说的是针对已有的代码和数据库,生成其架构图的过程。

 EA中的逆向工程

        代码→架构图

        从代码转换到架构图,主要是为了复用已经存在的架构,转为类图到EA中,在此基础上拓展,从而复用这些类图,以下列代码为例:

/////////////////////////////////////////////////////////////  ItemManager.cs //  作用:项目管理模块//  创建日期:2012年8月12日//  作者:   ***//  小组: ****** ///////////////////////////////////////////////////////////using Entity;using DAL;using System.Data;using System;using System.Text;namespace BLL{    public class ItemManager    {        ItemDAO itemDao = new ItemDAO();        /// <summary>        /// 添加项目        /// </summary>        /// <param name="item">使用item实体中的全部属性</param>        public bool AddItem(Item item)        {            //防止项目名称重复(根据item的Name和SectionID查询是否存在记录)            if (itemDao.QueryItemByName(item).Rows.Count != 0)            {                throw new Exception("该科室下面已经存在此项目!");            }            //防止项目编号重复            else if (itemDao.QueryItemByItemID(item).Rows.Count != 0) {                throw new Exception("该项目编号已经存在,请重新填写!");            }            //添加成功            else if (itemDao.AddItem(item))            {                throw new Exception("添加项目成功!");            }            //添加失败            else            {                throw new Exception("添加项目失败!");            }        }        /// <summary>        /// 根据项目id删除该项目        /// </summary>        /// <param name="item">使用item实体中的id属性</param>        public bool DeleteItemByID(Item item)        {            //删除成功            if (itemDao.DeleteItemByID(item))            {                throw new Exception("删除项目成功!");            }            //删除失败            else            {                throw new Exception("删除项目失败!");            }        }        /// <summary>        /// 根据科室id获取包含所有项目        /// </summary>        /// <param name="sections">使用sections实体中的id属性</param>        public DataTable QueryItemBySectionID(Sections sections)        {            return itemDao.QueryItemsBySectionID(sections);        }    }//end ItemManager}
             在EA中建立一个类图,导入源代码:

        

        生成的类图:

        

        生成的类图,不止包含方法属性,也包含注释的所有信息:

        

        数据库表→架构图实体

        详见博客《数据库表转换为实体类》。

        数据库→数据模型图

        EA还可以导入数据库表,生成对应的数据库模型图,需要建立ODBC数据源,具体过程不再赘述。

        导入ODBC数据源:

        

        

       选择要导入的表:

        

        生成的数据库模型图:  

            

        EA中正向工程和逆向工程就先介绍到这里,EA的这些功能并不难学,难的是理解“复用”这一思想,何为复用?借用已存在的成熟的事物,一想,这不就是“站在巨人的肩膀上”么,不过是换了个说法而已。编程中,同样的工作一直重复,得需要想想是否有可“复用”的内容,否则,只能埋头苦做无用功。