架构漫谈读后感
软件架构是指软件系统的整体结构或组织方式,它决定了系统中各个组件之间的关系、功能划分和交互方式。一个良好的软件架构能够提高软件系统的可维护性、可扩展性、可靠性和安全性,对于软件开发过程至关重要。
在软件开发过程中,软件架构起着至关重要的作用。一个优秀的软件架构应该具备以下几个特点:
-
模块化:通过将系统分解为多个独立的模块,每个模块负责不同的功能,可以降低系统的复杂度,提高代码的可读性和可维护性。
-
松耦合:模块之间的依赖应该尽量减少,模块之间的通信应该通过明确定义的接口进行,以降低模块之间的耦合度,提高系统的灵活性和可扩展性。
-
高内聚:每个模块应该只包含与其功能密切相关的代码,避免功能相互交织在一起,提高模块的独立性和重用性。
-
易于测试:良好的软件架构应该能够方便进行单元测试、集成测试和系统测试,以保证软件系统的质量和稳定性。
-
可伸缩性:软件架构应该具备良好的扩展性和性能,能够支持系统在用户量增加或业务需求变化时的快速扩展和调整。
-
安全性:软件架构应该考虑到系统的安全性需求,采取适当的安全措施来保护系统的数据和功能不受恶意攻击。
软件架构的选择和设计需要根据具体的项目需求和情况来进行,常见的软件架构包括三层架构、MVC 架构、微服务架构等。不同的架构适用于不同规模和复杂度的项目,开发团队需要根据实际情况选择合适的架构,并在项目开发过程中不断优化和调整架构设计。
如何做好架构识别的问题:
所有的概念基本都有一个很大的问题,就是缺乏主语。而我们大家都心照不宣的忽略这个主语,沟通的时候也都以为大家都懂得对方说的主语是谁,结果大家都一起犯错误。识别问题的一个最大的前提就是要搞清楚:是谁的问题。这个搞清楚了,问题的边界也就跟着确定了,再去讨论问题才有意义。
以上面切土豆的例子来分析:
- 女主人提出一个问题,要切土豆下锅煮。
- 男主人有一个问题,女主人交代了自己必须要完成的一个任务。
每个人都是优先处理自己的问题,自然就选择了 2,完成了这个任务。这也是大部分软件工程师处理的方式,以自己认为对的方式完成自己的问题,没什么不对啊,也难怪能得到我们的共鸣。这个里面犯的错误是什么呢?
- 女主人公提出的实际上是解决方案,而不是烧土豆这个问题本身。女主人当时执行这个解决方案可能有困难,就把执行解决方案作为一个任务,委托给了男主人。
- 男主人得到了一个任务,尽心尽职地把这个任务完成了。
最后的结果是什么呢,每个人都做了很多工作,每个人都认为自己做的是对的,因此没有一个人对结果满意。因为真正的问题没有被发现,自然也就没有被解决,那么后续还得收拾残局,还要继续解决问题。事实上自己的工作并没有完成,反而更多了。把原因归结为沟通问题也是可以的,但对于解决问题似乎并没有太多的帮助。因为要改进沟通,这也是一个大问题。搞明白目标问题“是谁的问题,是什么问题”,当然也是需要沟通的。为了帮助自己更快的搞明白,首先要做的事是问正确的问题。架构师应该问的第一个正确的问题就是:目标问题是谁的问题。
当我们处理问题的时候,如果发现自己正在致力于把自己的工作完成,要马上警惕起来,因为这样下去会演变成没有 ownership 的工作态度。在面对概念的时候,也会不求甚解,最终会导致没有真正的理解概念。
作为软件工程师或者架构师,我们大部分时候是要去解决别人的问题,“别人”是谁,是值得好好思考的。在这个故事里面,男主人要解决的,实际上是这个家庭晚餐需要吃土豆的问题,目标问题的主体实际上是这个家庭的成员。
软件架构是软件系统的基石,承载着系统的整体设计理念和结构,关乎系统的可维护性、可扩展性和性能表现。一个良好的软件架构能够为项目的成功奠定坚实的基础,提高开发效率,降低维护成本,确保系统长期稳定运行。因此,在软件开发过程中,始终注重和优化软件架构设计至关重要。
标签:男主人,架构,系统,笔记,问题,软件架构,模块,构架,软件 From: https://www.cnblogs.com/sxwgzx23/p/18041342