EA中的逆向工程

        承接上篇《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();
        /// 
        /// 添加项目
        /// 
        /// 使用item实体中的全部属性
        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("添加项目失败!");
            }
        }

        /// 
        /// 根据项目id删除该项目
        /// 
        /// 使用item实体中的id属性
        public bool DeleteItemByID(Item item)
        {
            //删除成功
            if (itemDao.DeleteItemByID(item))
            {
                throw new Exception("删除项目成功!");
            }
            //删除失败
            else
            {
                throw new Exception("删除项目失败!");
            }
        }
        /// 
        /// 根据科室id获取包含所有项目
        /// 
        /// 使用sections实体中的id属性
        public DataTable QueryItemBySectionID(Sections sections)
        {
            return itemDao.QueryItemsBySectionID(sections);
        }

    }//end ItemManager
}
              在EA中建立一个类图,导入源代码:

        

        生成的类图:

        

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

        

        数据库表→架构图实体

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

        数据库→数据模型图

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

        导入ODBC数据源:

        

        

       选择要导入的表:

        

        生成的数据库模型图:  

            

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

你可能感兴趣的:(软件工具)