目录
UML小结
在大二上学期的时候,就了解到UML语言并心生仰慕,统一的理论统一的方法相信一直是学术界工业界的追求,期待去学习~
期末没太学的深入,这段时间恰好有空(这学期少得的空闲...),也正对软件工程萌生了探索的兴趣,也就在知乎上搜了UML内容,来看书学习一下。
然鹅,,,知乎界面是这样的,
- 有用无用论暂且不论,UML存在而且在一段时间普及过,那就有存在的价值,所以先学习,学习学习~
阅读学习
阅读一本书,是系统学习一个事物的最好的方式。
——比尔盖茨
我个人也非常喜欢看书(相较起看电子屏幕...捂脸.jpg)
根据这些知乎问题学习UML好的书籍,去图书馆找到了三本书,分别快速阅读简要摘录如下:(emmm...但是在阅读中,发现UML博大精深,,快速阅读可能只能完成作业,写完后需要更详细的学习
大象:Thinking in UML
这是一本好书,相见恨晚,“大象希形,大音稀声”,附上简介链接:大象:Thinking in UML(第2版)
emmm...UML对于软件工程来说非常重要,但是,,我们现在学是不是有点“超前”或者说“过分跃进”?毕竟其中涉及到的工作流程,大多数同学是没有体验过的。
- 建模基础
- 建模。用面向对象的方法去建。由面向对象的抽象角度确定了的目标是模。
- 用例驱动(这个我还没看太明白,再详细看。
- 抽象层次。这给架构指出了一条明路。
- UML核心元素(愈发觉得UML博大精深...
- 参与者Actor(课堂学习中还没有涉及到这部分,粗看这是在寻找对象
- 用例Use case(可以理解为“外力”,为互相独立的“孤独”的UML元素,施加“外力”,使之联系起来;实际书中,对用例的描述是精妙的多层次的多角度的)
- 边界(与封装的概念师出同源,有一点访问权限的意思,但在面向对象的思想中又有更广泛的内涵,"面向对象里,任何一个对象都有一个边界,外界只能通过这个边界来认识对象,与对象打交道,而对象内部则是一个禁区。"也可以理解为每个对象只做自己应该做的事情,给每个对象划定边界,会很好的避免“电梯造人”这种搞笑事情的发生~造人已经远远超出了电梯的能力范畴hhh~)
- 包(在IDE中,包就像文件系统中的文件夹,不过这种理解太抽象了。分包可分成领域包,子系统包,组织结构包,层)
关系(各种在Java编程中已经实现了的关系,
!以及业务实体、分析类、组件、节点等元素
- UML核心视图
- 发现UML种类很多
- 就我们非常熟悉的类图来说,也有概念层类图、实现层类图(我们经常用的是这个)、说明层类图
- 非常困惑,这些图都是干什么的?他们的创立是基于什么需求?
核心视图
以上是认识UML的基本准备知识,后面更多的是关于在软件工程开发中,运用UML实践的内容。
- 先列出了一个实践的大框架
- 从目录看,文章作者博学而幽默,阅读一定会非常有乐趣的。
- 比如
- 比如
- 最后一章是作者对UML或者是面向对象方法的一些思考
- 测试(文中对测试提出了测试矩阵,但总的测试篇幅较少,测试方面还需要阅读其他的内容)
- 用例(这个词之前是没有太听说过的,但这章中用三节来分别说明,用例是系统思维,用例与可扩展架构相关,用例驱动还是领域驱动)
- 抽象层次以及如何实现子系统的划分,来实现“高内聚,低耦合”(这也正是我在第四章UML解析作业中的一个困惑所在,程序越写越长,开始怎么去架构,怎么实现类与类之间、方法与方法之间的“高内聚,低耦合”?
接口是系统的灵魂。
系统中的权衡与选择(下图中提到的工作流思想,也是没听说过的,但找到一片博客可扩展的工作流引擎设计,粗看似乎明白了和状态图的区别)
学会使用设计模式(学期中学的实践的设计模式非常有限,记得昂神之前推荐过《Head First 设计模式》一书,假期会拜读一下)
- 以上就是全书的概要,由于作业的时间原因没能阅读理解之后写出更有思考力的概要
- 但这本书真的是提升软件的工程能力的一本必读书,假期要做到最基本的全文阅读。
UML精粹
相比起楼上的那本,除了基本的UML核心元素、视图之外,我对第二章——开发过程非常感兴趣,简要阅读摘录如下
- 项目开发过程
UML和模式应用
- 这本书翻阅了一下,相比起以上两本,算是一本讲的不错的字典书吧~可以查阅使用。
- 可能可读性不如上面两本,但是也有很多新鲜的内容,读完上面两本,这一本可以做补充知识使用。
本单元作业的架构设计
- 先上两次作业的包目录和类图
Homework13
Homework14
- 架构,作业主要还是完成剩余的模块
- 用
packge element
给出了各个元素,并设立抽象基类
四个单元中架构设计及OO方法的演进
- 第一单元:多项式求导
- 自以为这一单元收获最大的是Java语法,尤其是正则表达式的相关语法(可以写出不爆栈的正则表达式匹配了...)
- 当然,第一次接受继承重写接口实现等抽象概念,并在第三次作业中实现,收获良多
- 第二单元:电梯多线程
- 第三单元:图论地铁站 + JML规格
- 第四单元:UML及其相关解析
- 这一单元再次看到助教霸霸们高超的编程水平~
- 采用了抽象工厂、分层次等架构设计
- 在这次总结中,也从UML初窥软件工程
四个单元中测试与实践的演进
- 测试,总结起来,黑盒测试,针对指导书要求的白盒测试,Junit单元测试
- 但经过三单元的作业之后,我认为单元测试,是未来软件工程测试的必须。
课程收获
- 收获很多,但也有很多的遗憾和不甘,先说收获。
- 熟练应用Java这门面向对象的编程语言
- 初步掌握了面向对象的基本概念,继承多态接口等
- 大量的代码练习,熟练度架构水平提升
- 了解到了Jetbrain这一类强大的IDE
- 学习了很多软件工程中的知识,如JML、UML
- 听了两位业界工程师的讲座
- 不甘...或者说没学到的:
- 所以,现在虽是OO课程的结束,但也是新的软件的工程能力培养的开始,假如大家看到这里,有什么学习的书籍和实践平台的建议或推荐,感谢啦
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。