给你百万年薪,让你担任公司的架构师,你知道该做哪些事吗?

很多做软件开发同学的梦想都是成为一名架构师,而架构师的核心工作就是做好软件设计 。软件设计是软件开发过程中的一个重要环节,那么如何进行软件设计,其输出标准又是什么呢?软件设计过程中,如何和各个相关方沟通,使软件设计能同时满足用户的功能需求和非功能需求,并降低公司的开发成本?
推荐阅读:我凭借这份pdf拿下了蚂蚁金服、字节跳动、小米等大厂的offer
前期思考很多软件开发同学的职业规划都是架构师,试想这样一个场景,如果公司安排你做架构师,让你在项目开发前期进行了一些架构设计 。
  • 你该如何开展你的工作?
  • 应该如何说出你的工作成果?
  • 你如何确定你的设计是否满足用户需求的?
  • 你是否有把握最后交付的软件是满足要求的?
  • 是否有把握让软件团队每个工程师清晰了解自己的职责范围,并有效的完成开发工作?
架构师的核心工作就是做好软件架构设计,软件设计是软件开发过程中一个重要的环节 。
  • 如何进行软件设计?
  • 软件设计的输出是什么?
  • 软件升级过程中如何和各个相关方沟通?
  • 软件设计如何既能满足用户的功能需求,又能满足用户的非功能需求,也能满足用户的成本要求?
  • 如何能够使开发工程师,测试工程师,运维工程师,理解软件的整体架构,主要模块划分,关键技术实现,核心领域模型,使他们能够做好自己的工作,从而使整个软件开发过程,处于一个可控的范围之内,并在软件开发之初,就对软件未来的蓝图有个清晰的认识?
以上这些诉求可以说是软件开发管理与技术的核心诉求,这些问题搞定了,软件的开发过程和结果也就得到了保障 。
核心关键点两个客观存在我们再来看看,解决这些问题你需要理解的核心关键点,也就是说究竟如何做软件设计,解决方法就是软件建模,就是软件的抽象模型,这些模型之上配上文字说明,就形成了软件的设计文档 。
模型是对客观存在的抽象,在软件开发中有两个客观存在:
一个是我们要解决的领域问题,比如我们要开发一个电子商务网站,那么客观的领域问题就是如何做生意,卖家如何管理商品,管理订单服务用户,买家如何挑选商品,如何下单,如何支付等等,对于这些客观领域问题的抽象就是各种功能及其关系,各种模型对象及其关系,各种业务处理流程 。
另一个客观存在就是最终开发出来的软件系统,这个软件系统也是客观存在的 。
  • 软件有哪些主要组成?
  • 这些类如何组织成一个一个的组件?
  • 这些内核组件之间的依赖关系是如何的?
  • 运行期如何调用,需要部署多少台服务器?
  • 服务器之间如何通信?
所以这两方面的客观存在的抽象就是我们的软件模型 。
一方面,我们要对领域问题和软件系统进行分析,设计抽象,另一方面,我们根据抽象出来的模型,进行软件开发,这就是软件开发的主要过程 。
给你百万年薪,让你担任公司的架构师,你知道该做哪些事吗?

文章插图
 
而对领域问题和软件系统进行分析,设计抽象,这个过程我们称它为软件建模与设计 。
UML工具软件建模工具很多,目前主要是统一建模语言UML 。
所谓的建模,就是对领域问题和软件系统进行抽象设计,一个工具完成前述软件开发过程中的两个客观存在的建模 。
而所谓的语言,一则用于沟通,满足设计阶段和各个相关方沟通的目的,一则用于思考,即使软件开发过程中不需要跟其他人沟通,或者还没有到了沟通的时候,依然可以使用UML建模,帮助自己进行设计思考 。
此外,语言还有个特点,就是有方言,就我观察不同公司,不同团队,都有自己的特点,并不需要拘泥于以往那样规范和语法,只要不引起歧义,在使用过程中对语法元素适当变通,这是UML的最佳时间 。
软件建模与设计过程又可以拆分成需求分析,概要设计,详细设计三个阶段,而软件建模的主要工具是UML,下面我们看一下使用方法包含了哪些软件模型,常用的有7种 。
7种软件模型下面我们讨论这7种模型图,如何在三个阶段使用 。
类图
给你百万年薪,让你担任公司的架构师,你知道该做哪些事吗?

文章插图
 
类图是最常见的UML图形,用来描述类的特性和类之间的静态关系,一个类包含三个部分,类的名称,类的属性列表,类的方法列表之间有6种静态关系关联,关联,依赖,聚合,组合,继承,泛化,而相关的一组类及其关系,用一张图画出来就是类图,类图主要是在详细设计阶段化,如果内图已经设计出来了,那么开发工程师只需要按照内图实现代码就可以了,只要类的方法逻辑不是太复杂,不同的工程是实现出来的代码几乎是一样的,从而保证软件的规范统一 。


推荐阅读