首页 > 其他分享 >软件构架之阅读笔记

软件构架之阅读笔记

时间:2024-02-28 18:11:42浏览次数:12  
标签:男主人 架构 系统 笔记 问题 软件架构 模块 构架 软件

 架构漫谈读后感

软件架构是指软件系统的整体结构或组织方式,它决定了系统中各个组件之间的关系、功能划分和交互方式。一个良好的软件架构能够提高软件系统的可维护性、可扩展性、可靠性和安全性,对于软件开发过程至关重要。

在软件开发过程中,软件架构起着至关重要的作用。一个优秀的软件架构应该具备以下几个特点:

  1. 模块化:通过将系统分解为多个独立的模块,每个模块负责不同的功能,可以降低系统的复杂度,提高代码的可读性和可维护性。

  2. 松耦合:模块之间的依赖应该尽量减少,模块之间的通信应该通过明确定义的接口进行,以降低模块之间的耦合度,提高系统的灵活性和可扩展性。

  3. 高内聚:每个模块应该只包含与其功能密切相关的代码,避免功能相互交织在一起,提高模块的独立性和重用性。

  4. 易于测试:良好的软件架构应该能够方便进行单元测试、集成测试和系统测试,以保证软件系统的质量和稳定性。

  5. 可伸缩性:软件架构应该具备良好的扩展性和性能,能够支持系统在用户量增加或业务需求变化时的快速扩展和调整。

  6. 安全性:软件架构应该考虑到系统的安全性需求,采取适当的安全措施来保护系统的数据和功能不受恶意攻击。

软件架构的选择和设计需要根据具体的项目需求和情况来进行,常见的软件架构包括三层架构、MVC 架构、微服务架构等。不同的架构适用于不同规模和复杂度的项目,开发团队需要根据实际情况选择合适的架构,并在项目开发过程中不断优化和调整架构设计。

如何做好架构识别的问题:

所有的概念基本都有一个很大的问题,就是缺乏主语。而我们大家都心照不宣的忽略这个主语,沟通的时候也都以为大家都懂得对方说的主语是谁,结果大家都一起犯错误。识别问题的一个最大的前提就是要搞清楚:是谁的问题。这个搞清楚了,问题的边界也就跟着确定了,再去讨论问题才有意义。

以上面切土豆的例子来分析:

  1. 女主人提出一个问题,要切土豆下锅煮。
  2. 男主人有一个问题,女主人交代了自己必须要完成的一个任务。

每个人都是优先处理自己的问题,自然就选择了 2,完成了这个任务。这也是大部分软件工程师处理的方式,以自己认为对的方式完成自己的问题,没什么不对啊,也难怪能得到我们的共鸣。这个里面犯的错误是什么呢?

  1. 女主人公提出的实际上是解决方案,而不是烧土豆这个问题本身。女主人当时执行这个解决方案可能有困难,就把执行解决方案作为一个任务,委托给了男主人。
  2. 男主人得到了一个任务,尽心尽职地把这个任务完成了。

最后的结果是什么呢,每个人都做了很多工作,每个人都认为自己做的是对的,因此没有一个人对结果满意。因为真正的问题没有被发现,自然也就没有被解决,那么后续还得收拾残局,还要继续解决问题。事实上自己的工作并没有完成,反而更多了。把原因归结为沟通问题也是可以的,但对于解决问题似乎并没有太多的帮助。因为要改进沟通,这也是一个大问题。搞明白目标问题“是谁的问题,是什么问题”,当然也是需要沟通的。为了帮助自己更快的搞明白,首先要做的事是问正确的问题。架构师应该问的第一个正确的问题就是:目标问题是谁的问题。

当我们处理问题的时候,如果发现自己正在致力于把自己的工作完成,要马上警惕起来,因为这样下去会演变成没有 ownership 的工作态度。在面对概念的时候,也会不求甚解,最终会导致没有真正的理解概念。

作为软件工程师或者架构师,我们大部分时候是要去解决别人的问题,“别人”是谁,是值得好好思考的。在这个故事里面,男主人要解决的,实际上是这个家庭晚餐需要吃土豆的问题,目标问题的主体实际上是这个家庭的成员。

软件架构是软件系统的基石,承载着系统的整体设计理念和结构,关乎系统的可维护性、可扩展性和性能表现。一个良好的软件架构能够为项目的成功奠定坚实的基础,提高开发效率,降低维护成本,确保系统长期稳定运行。因此,在软件开发过程中,始终注重和优化软件架构设计至关重要。

 

标签:男主人,架构,系统,笔记,问题,软件架构,模块,构架,软件
From: https://www.cnblogs.com/sxwgzx23/p/18041342

相关文章

  • 假期vue学习笔记13 插槽
     <template>  <divclass="category">    <h3>{{title}}分类</h3>    <slot></slot>  </div></template><script>  exportdefault{    name:'Category',    pr......
  • 假期vue学习笔记14 求和案例vue版本
     <template>  <div>    <h1>当前求和为:{{sum}}</h1>    <selectv-model.number="n">      <optionvalue="1">1</option>      <optionvalue="2">2</option>......
  • 假期vue学习笔记15 求和mapstate_mapgetter
     importVuefrom'vue'importAppfrom'./App.vue'importstorefrom'./store'Vue.config.productionTip=falsenewVue({  el:'#root',  render:h=>h(App),  store,  beforeCreate(){    Vue.......
  • 假期vue学习笔记16 vuex多组数据共享
     <template>  <div>    <h1>当前求和为:{{sum}}</h1>    <h1>十倍的和为:{{bigSum}}</h1>    <h1>{{xuexiao}}</h1>    <h1>{{xueke}}</h1>    <h3>下方总人数为:{{$store.state.personList......
  • 假期vue学习笔记07 todo事件的本地存储
     用本地存储改写前面的todo案例 <template>    <li>      <label>        <inputtype="checkbox":checked="todo.done"@change="handleCheck(todo.id)"/>        <spanv-show="!tod......
  • 假期vue学习笔记08 绑定和解绑
     <template>  <divclass="app">    <h1>{{msg}}</h1>    <!--props子给父传递事件-->    <School:getSchoolName="getSchoolName"/>    <!--通过父组件给子组件绑定一个自定义事件实现:子给父传递数据(第一种写法,使用@过v-......
  • 假期vue学习笔记09 全局事件总栈
     <template>  <div class="school">    <h2>学校名称:{{name}}</h2>     <h2>学校地址:{{address}}</h2>  </div></template><script>  exportdefault{    name:'School'......
  • 假期vue学习笔记10 pubsub
     <template>  <divclass="app">    <h1>{{msg}}</h1>    <School/>    <Student/>  </div></template><script>importStudentfrom'./components/Student.vue'imp......
  • 假期vue学习笔记11 动画
    <template>  <divid="root">    <Test/>    <Test2/>    <Test3/>  </div></template><script>importTestfrom'./components/Test.vue'importTest2from'./comp......
  • 假期vue学习笔记01 ref
    <template>  <div>    <h1v-text="msg"ref="title"></h1>    <button@click="showDOM">点我输出上方的DOM元素</button>    <School/>  </div></template><script......