读漫谈架构

来源:互联网 发布:枪炮与玫瑰乐队 知乎 编辑:程序博客网 时间:2024/06/09 14:23

六 软件架构到底要解决什么问题?

要解决谁的问题?

软件实际上就是把现实生活模拟到计算机中,并且软件是需要在计算机的硬件中运行起来的。

需要解决的问题

一、业务问题

具体的现实生活状态中,没有软件的时候,所解决的问题的主题是谁,解决的是什么问题,是如何解决,如何运作的?

二、计算机问题

1.如何模拟?

2.硬件支持,拓展,性能线性拓展?

3.硬件失效,如何保证不中断服务?

4.收集数据,为下一阶段的工作提供依据?

分别是谁的问题呢?

1.业务的owner提升效率,降低成本。

2.软件工程师解决业务的owner把业务虚拟化的问题,并且要解决软件开发和运营的生命周期的问题。

分别什么问题?

1业务问题的本质:业务所服务的对象的利益问题(效率,成本)。

2.为了能够让软件很好的跑起来,软件工程师必须理解业务所服务的对象,他们的利益所在,即业务问题。业务面对这些问题是如何分拆解决的?涉及到了哪些概念?这些概念分别解决了哪些问题?工程师不能按照自己的理解,用自己的一套概念体系表达,这样做会导致两个问题:

1)业务无法和我们交流,无法理解我们创建的概念,无法确认我们的理解是否正确。

2)我们所表达的东西,并没有实际生活中实践过,我们也不知道这些概念是否能够解决业务问题。

3.软件工程师还必须要考虑,用什么样的硬件把软件跑起来,跑得快,并且可以随着业务的流量逐渐的长大?

有限的时间下,软件工程师无法一个人去完成这么多事情,那么我们需要把所做的事情列出来。

一、虚拟化服务需要完成的这些事情:

1.学习业务,认识业务所涉及的核心利益述求。如何拆分,如何组织架构完成核心利益,涉及到的概念,有哪些权利和责任等。

2.对业务进行建模,并且把建模用编程语言实现。这是业务的模型,通常是现实生活中利益斗争的结果,是非常稳定的。

3.学习业务所参与的stakeholder是如何和业务打交道,并完成每个人的权利和义务的,通过编程语言,结合业务模型实现这些打交道的沟通渠道。

4.如何把业务运行的结果持久化,并通过合适的手段持久化后的数据,在合适的地点加载出来。这部分和基础的设施有关,变化可能也会比较频繁。

二、代码如何运营,需要完成这些事情:

三、如果分成不同的角色来完成这些事情,就需要一个组织架构来组织代码的编写和运营,需要做的哪些事情:

0 0
原创粉丝点击