今天毕业设计答辩,虽然我第一个上场,但是不是特别紧张,因为整个系统都是我写的。我以为自己天衣无缝,能应付所有老师的所有问题。事实上,我被老师教育了一番。

老师说我,毕业论文中没有一个类。我一开始比较懵,什么没有类?然后我和老师说我写了什么什么类。老师说,没有 UML 类图之类的东西。

其实我一开始是抗拒的。UML 类图,有什么用?不就是面向对象的类图嘛?直接画 E-R 图不行吗?老师和我说了面向对象的软件工程方法,首先需求分析,然后画 UML 图,UML 设计好了,再具体实现 E-R 图等等。

虽然被说得很懵,但是回去我整理了一下思路。我记得很多企业现在并不会把 UML 图放在设计里,大多数情况下都是架构师自己画一画,并不写在设计里。不过这不是主要的,我在想,为什么我们需要 UML 图,具体而言,E-R 图难道不够替代 UML 图吗?

其实,仔细想想,E-R 图的确不能替代 UML 图。起码 UML 图是面向对象的,E-R 图不能使纯粹的面向对象的,或者说,E-R 图并不能完全面向对象的思考。

就比如,我现在有个测试的实体,包括测试信息(题号,题名,内容等)和多组测试用例。一定要注意多组测试用例。假如我们用 E-R 图进行思考的话,最终很容易提前走向纠结:多组测试用例到底是一张表还是和测试信息合成一张表?如果是一张表,总觉得对应现实中的实体很变扭;如果合并成一张表,那么多组测试用例要么分开保存,要么合并保存:分开保存必定有冗余性的问题;合并保存,那每组测试用例以什么作为分隔符怎么保存呢?似乎也不好,测试用例可能有多组分隔符。E-R 图非纯面向对象(至少我是这么认为的),所以不应该以 E-R 图作为需求分析阶段的图,还没有到达这种细化的地步。

老师说的还是比较正确的,我也虚心接受批评。以后我要多认真学习一下软件工程了。

前路漫漫,唯码作伴。

毕业设计之感悟 —— UML 与 ER 图的更多相关文章

  1. UML与ER图

    UML 统一建模语言(Unified Modeling Language, UML)是一种描述软件系统结构的图形化语言. 类图 类图用于描述类之间的关系,类图中主要的关系包括: 聚集 带空心菱形的实心 ...

  2. 《GO Home Trash!》UML类图,ER图以及数据库设计

    <Go Home Trash!>UML类图 ER图以及数据库中数据表 分析: 这款软件经过我们前期的讨论以及需求分析,确定了用户,客服以及管理员三个实体.在设计UML类图时,对各个实体之间 ...

  3. 各种图(流程图,思维导图,UML,拓扑图,ER图)简介

    来源于:http://www.cnblogs.com/jiqing9006/p/3344221.html 流程图 1.定义:流程图是对过程.算法.流程的一种图像表示,在技术设计.交流及商业简报等领域有 ...

  4. 关于ER图和UML图之间的对比

    ER图与UML图 ER图:实体-联系图(Entity-Relation Diagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,ER图提供了表示实体(即数据对象).属性和联系的方法,用来 ...

  5. ER图与UML图

    ER图:实体-联系图(Entity-Relation Diagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,ER图提供了表示实体(即数据对象).属性和联系的方法,用来描述现实世界的概念 ...

  6. 【转】各种图(流程图,思维导图,UML,拓扑图,ER图)简介

    原文地址:各种图(流程图,思维导图,UML,拓扑图,ER图)简介 流程图 1.定义:流程图是对过程.算法.流程的一种图像表示,在技术设计.交流及商业简报等领域有广泛的应用. 2.案例 3.计算机语言只 ...

  7. powerdesign、navacat、ER图、uml、类图、时序图

    关于建表和生成实体以及ER图的简便方法 a:用navacat客户端生成简单的ER图,并生成建表sql,执行生成表. b:用powerdesign连接数据库,反向生成带有注释的ER图. c:用ideal ...

  8. 软件工程 #02# Entity Relationship Diagram VS. 用 UML 中的类图表示 E-R 图

    不同的老师叫我们画 E-R 图居然是不一样的,于是我仔细研究了一番.. 通常所说的 E-R 图(外文全称 Entity Relationship Diagram,简称 ERD)长这个样子: 而有时候它 ...

  9. uml类图和er图中主外键的表示区别

    在er图也就是数据库中,无论是mysql/oracle都是从表引用主表的pk作为外键. 而在uml类图表示法中,他们的顺序则刚好相反,从主对象导向到子对象,如下: 主体是资金借款方,征信信息和资金借款 ...

随机推荐

  1. c# 调用ArcEngine的GP工具

    转自原文c# 调用ArcEngine的GP工具,AE调用GP工具 IAoInitialize m_AoInitialize = new AoInitializeClass(); esriLicense ...

  2. [SCSS] Use Standard Built-in SCSS Functions for Common Operations

    We can use javascript for color and opacity variations, math, list and map logic or to see if someth ...

  3. (一一六)新浪微博client的离线缓存实现思路

    上一节(一一五)利用NSKeyedArchiver实现随意对象转为二进制介绍了将随意对象转化为二进制数据和还原的方法.可用于实现本节介绍的微博数据离线缓存. 通过新浪官方的API能够发现,返回的微博数 ...

  4. php实现 求int型数据在内存中存储时1的个数(函数都可自己实现)

    php实现 求int型数据在内存中存储时1的个数(函数都可自己实现) 一.总结 一句话总结:函数我们自己都可以实现,尤其是很多基础函数,没有工具的时候自己写. 1.php进制转换函数? base_co ...

  5. Haproxy解析

    简单介绍 HAProxy是一款提供高可用性.负载均衡以及基于TCP和HTTP应用的代理软件,HAProxy是全然免费的.借助HAProxy能够高速而且可靠的提供基于TCP和HTTP应用的代理解决方式. ...

  6. Atom编辑器折腾记_(13)JS代码智能提示补全(插件:atom-ternjs)

    题外话 官方正式版尽管内置了.autocomplete-plus;最为明显的一个功能就是记忆你已经输入过的名称进行匹配; 可是针对于某些语言来说,还是有些不足的-.当中JS的补全上就明显不足了-所以须 ...

  7. 与Qt的联系方式:邮件,论坛,销售,Bug报告

    If you want to learn more about upcoming things for Qt, please stay tuned for new blog posts and web ...

  8. js进阶 9-8 html标签如何实现禁止复制和粘贴

    js进阶 9-8  html标签如何实现禁止复制和粘贴 一.总结 一句话总结: 1.在oncopy方法中return false即可阻止在控件中复制内容 2.在onpaste方法中return fal ...

  9. RPC与REST的差别

    一:RPC RPC 即远程过程调用, 非常easy的概念, 像调用本地服务(方法)一样调用server的服务(方法). 通常的实现有 XML-RPC , JSON-RPC , 通信方式基本同样, 所不 ...

  10. 前端常见算法JS实现

    算法是程序的灵魂,一个优秀的前端工程师对算法也是要有所了解的. 排序算法 1. 冒泡排序 //冒泡排序 function bubbleSort(arr){ var i = j = 0; for(i=1 ...