资深开发进阶软件架构-必备技能UML

Posted 圣灵君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了资深开发进阶软件架构-必备技能UML相关的知识,希望对你有一定的参考价值。

作为一个老资深开发程序猿,目前面对的现实的社会挑战摆在面前,就是不断学习不断进步,为啥呢?

原因有三:

知识更新迭代太快;

后起之秀太优秀;

自己年龄大了。


废话不多说了,准备日更技术专题,把知识重新梳理一下。今天梳理软件开发知识筹备知识。下面展开对工作和行业的理解。

一、工作:

1、工作是做开发人员 OR 研发人员?

主要是使用成熟的框架去开发应用功能,还是使用JavaEE、JVM、并发编程、NIO/Netty等知识点实现编写自定义框架或者解决高并发场景下的非功能性需求,比如如何提高并发能力等?如何进行接下来的学习呢?他山之石,可以攻玉!!学习人家的框架,写出自己的框架。

2、什么是框架?

可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系。因此构件库的大规模重用也需要框架。

3、为什么使用框架?

因为软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,它可以处理系统很多细节问题,比如,事务处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处就行。

4、软件开发的三层结构

我们用三层结构主要是使项目结构更清楚,分工更明确,有利于后期的维护和升级.三层结构包含:表现层,业务层,持久层

5、UML(unified Modeling Language)

统一建模语言是一种为面向对象系统的产品进行说明、可视化和编制文档的标准语言,是非专利的第三代建模和规范语言。UML是一种面向对象设计的建模工具,是在开发阶段说明、可视化、构建和书写的一个面向对象软件密集系统的制品的开放方法,但独立于任何具体的程序设计语言。

UML可以对任何具有静态结构和动态行为的系统进行建模,而且适用于从需求规格描述直至系统完成后的测试和维护等系统开发的各个阶段。

1、事物(4种)

事物是抽象化的最终结果,分为

结构事物、行为事物、分组事物、注释事物

结构事物(7个):类、接口、用例、协作、组件、活动类、节点。

行为事物(2个):交互、状态

分组事物(1个):包

注释事物(1个):注释

2、关系(6种)

关联

聚合

组合

泛化

实现

依赖

3、图(13种)

UML2.0一共有13种图(UML1.5定义了9种,UML2.0增加了4种)

结构图(3个):

            静态图(3个):类图、对象图、包图(2.0 add)

            实现图(2个):构建图、部署图

            组合结构图(1个):(2.0 add)

行为图(3种):活动图、状态图、用例图

交互图(4种):

   时序图、时间图(2.0 add)、交互概览图(2.0 add)、协作图

资深开发进阶软件架构-必备技能UML


资深开发进阶软件架构-必备技能UML

资深开发进阶软件架构-必备技能UML

资深开发进阶软件架构-必备技能UML

资深开发进阶软件架构-必备技能UML


资深开发进阶软件架构-必备技能UML

资深开发进阶软件架构-必备技能UML

类图

资深开发进阶软件架构-必备技能UML

类图

资深开发进阶软件架构-必备技能UML

类图

资深开发进阶软件架构-必备技能UML


时序图的组成元素

资深开发进阶软件架构-必备技能UML

时序图的组成片段

资深开发进阶软件架构-必备技能UML

资深开发进阶软件架构-必备技能UML

资深开发进阶软件架构-必备技能UML

资深开发进阶软件架构-必备技能UML

资深开发进阶软件架构-必备技能UML

资深开发进阶软件架构-必备技能UML

6、七大软件架构的设计原则

1、开闭原则

   理解归纳:对扩展开放,对修改关闭

   目的:降低维护带来的新风险

2、依赖倒置原则

   理解归纳:高层不应该依赖低层

   目的:更利于代码结构的升级扩展

3、单一职责原则

   理解归纳:一个类只干一件事

   目的:便于理解提高代码的可读性

4、接口隔离原则

   理解归纳:一个接口只干一件事

   目的:功能解耦,高聚合,低耦合

5、迪米特法则

   理解归纳:不该知道的不要知道

   目的:只和朋友交流不和陌生人说话,减少代码臃肿。


6、里氏替换原则

   理解归纳:子类重写方法功能发生改变,不该影响父类方法的含义

   目的:防止继承泛滥

7、合成复用原则

   理解归纳:尽量使用组合实现代码复用,而不是使用继承。

   目的:降低代码耦合

7、设计模式

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式不是一种方法和技术,而是一种思想。设计模式和具体的语言无关,学习设计模式就是要建立面向对象的思想,尽可能的面向接口编程,低耦合,高内聚,使设计的程序可复用。学习设计模式能够促进对面向对象思想的理解,反之亦然。它们相辅相成。

设计模式的类型

总体来说,设计模式分为三类23种:

创建型(5种) :工厂模式、抽象工厂模式、单例模式、原型模式、构建者模式

结构型(7种):适配器模式、装饰模式、代理模式 、外观模式、桥接模式、组合模式、享元模式

行为型(11种):模板方法模式、策略模式 、观察者模式、中介者模式

、状态模式、责任链模式、命令模式、迭代器模式、访问者模式、解释器模式、备忘录模式

8、学习开源框架的途径

1、开源框架官网---再次强调一定是官网,知识点可以百度搜索。

2、码云开源代码一周研究一个

3、掘金小册子可以顺手买过来学习

4、总结知识,细化知识,markdown Typora必备。

二、行业

toB行业的春天,移动互联网基本趋于饱和,boss直聘上,招聘toB企业异军突起。

toB企业目前走主流路线:

1、企业定制化开发+企业saas。

2、企业托管开发,长期维护。

3、工业互联网3.0


移动互联网行业三大主流:

电商+新零售主流

短视频+直播+游戏主流

IM+会议 主流


三、技术

区块链

大数据+AI智能

万物物联--物联网


四、编程语言

java

Python

c++

Go

php

等等

喜欢就关注我,点击关注。







以上是关于资深开发进阶软件架构-必备技能UML的主要内容,如果未能解决你的问题,请参考以下文章

程序员必备技能:如何画好架构图?

史上最全java架构师技能图谱(下)

[架构之路-102]:《软件架构设计:程序员向架构师转型必备》-12-粗粒度“软件架构的功能模块”划分,架构师必备基础技能

进阶大数据架构师学习指导路线

进阶大数据架构师学习路线

php架构师视频教程完整体系—PHP程序员进阶架构师必备