假如你是架构师,你要做些什么

很多做软件开发同学的梦想都是成为一名架构师,而架构师的核心工作就是做好软件设计。软件设计是软件开发过程中的一个重要环节,那么如何进行软件设计,其输出标准又是什么呢?软件设计过程中,如何和各个相关方沟通,使软件设计能同时满足用户的功能需求和非功能需求,并降低公司的开发成本? 

前期思考

  很多软件开发同学的职业规划都是架构师,试想这样一个场景,如果公司安排你做架构师,让你在项目开发前期进行了一些架构设计。

你该如何开展你的工作?

应该如何说出你的工作成果?

你如何确定你的设计是否满足用户需求的?

你是否有把握最后交付的软件是满足要求的?

是否有把握让软件团队每个工程师清晰了解自己的职责范围,并有效的完成开发工作?

  架构师的核心工作就是做好软件架构设计,软件设计是软件开发过程中一个重要的环节。

如何进行软件设计?

软件设计的输出是什么

软件升级过程中如何和各个相关方沟通?

软件设计如何既能满足用户的功能需求,又能满足用户的非功能需求,也能满足用户的成本要求?

如何能够使开发工程师,测试工程师,运维工程师,理解软件的整体架构,主要模块划分,关键技术实现,核心领域模型,使他们能够做好自己的工作,从而使整个软件开发过程,处于一个可控的范围之内,并在软件开发之初,就对软件未来的蓝图有个清晰的认识?

  以上这些诉求可以说是软件开发管理与技术的核心诉求,这些问题搞定了,软件的开发过程和结果也就得到了保障。

核心关键点 两个客观存在

  我们再来看看,解决这些问题你需要理解的核心关键点,也就是说究竟如何做软件设计,解决方法就是软件建模,就是软件的抽象模型,这些模型之上配上文字说明,就形成了软件的设计文档。

  模型是对客观存在的抽象,在软件开发中有两个客观存在:

  一个是我们要解决的领域问题,比如我们要开发一个电子商务网站,那么客观的领域问题就是如何做生意,卖家如何管理商品,管理订单服务用户,买家如何挑选商品,如何下单,如何支付等等,对于这些客观领域问题的抽象就是各种功能及其关系,各种模型对象及其关系,各种业务处理流程。

  另一个客观存在就是最终开发出来的软件系统,这个软件系统也是客观存在的。

软件有哪些主要组成?

这些类如何组织成一个一个的组件?

这些内核组件之间的依赖关系是如何的?

运行期如何调用,需要部署多少台服务器?

服务器之间如何通信?

  所以这两方面的客观存在的抽象就是我们的软件模型。

  一方面,我们要对领域问题和软件系统进行分析,设计抽象,另一方面,我们根据抽象出来的模型,进行软件开发,这就是软件开发的主要过程。

  

假如你是架构师,你要做些什么

  而对领域问题和软件系统进行分析,设计抽象,这个过程我们称它为软件建模与设计

UML工具

  软件建模工具很多,目前主要是统一建模语言UML。

  所谓的建模,就是对领域问题和软件系统进行抽象设计,一个工具完成前述软件开发过程中的两个客观存在的建模。

  而所谓的语言,一则用于沟通,满足设计阶段和各个相关方沟通的目的,一则用于思考,即使软件开发过程中不需要跟其他人沟通,或者还没有到了沟通的时候,依然可以使用UML建模,帮助自己进行设计思考。

  此外,语言还有个特点,就是有方言,就我观察不同公司,不同团队,都有自己的特点,并不需要拘泥于以往那样规范和语法,只要不引起歧义,在使用过程中对语法元素适当变通,这是UML的最佳时间。

  软件建模与设计过程又可以拆分成需求分析,概要设计,详细设计三个阶段,而软件建模的主要工具是UML,下面我们看一下使用方法包含了哪些软件模型,常用的有7种。

7种软件模型

  下面我们讨论这7种模型图,如何在三个阶段使用。

类图

  

假如你是架构师,你要做些什么

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyypsd.html