《敏捷软件开发》读书笔记(4)

柔情痞子 提交于 2020-01-10 13:21:47

《敏捷软件开发》读书笔记(4)

气象站系统的实践

  1. 开始,先分析需求、用例,确定计划。根据具体的需求和非功能性的需求,选取开发语言,准备开始软件设计。

  2. 软件设计,考虑优先解除对界面的依赖,用OBSERVER模式,创建一个ADAPTER作为观察者,收到数据后去刷新界面。

  3. 再考虑如何解除对传感器修改的依赖,因为Schedule主要是要耦合不同传感器的触发周期,那就单独把触发周期抽象一个触发器,由传感器实现,告诉Schedule在某个时间唤醒自己即可,这样Schdule就只完成了一件工作,符合SRP原则。

  4. 考虑如何创建一套独立的API,和现有系统隔离,利用BRIDGE模式把硬件API从现有系统提取出来,把实现和抽象分离。

  5. 分离这些对象的实现后,创建对象的代码非常繁杂,再利用FACTORY模式把创建过程封装起来,进一步隔离实现类,把相关的实现类放在一起处理。

  6. 进一步把平台实现类的创建过程封装到工厂类中,只需要替换一行代码,就可以切换到另一个平台。

  7. 接下来拆分包,对软件的几个部分分别进行发布和分发,把UI从Station解耦出来,由主程序分别初始化。

  8. 进一步解除UI和具体实现的依赖,把添加监听的部分,抽象出接口类,让UI依赖接口,系统实现接口,进一步解除耦合。

  9. 在监控之余实现数据持久化和相关策略计算逻辑,还是利用OBSERVER,监听变化和时钟,并且将通用算法分离出去。

  10. 进一步解除策略和具体持久化实现的耦合,利用PROXY模式,在PROXY里调用持久化,把具体策略封装到另外的类中去调用,使其满足SRP。

  11. 再利用FACTORY把具体的创建对象封装起来,而如何解决持久化层需要依赖策略层的问题?这里用了一个静态引用来存储工厂类的实现实例。(疑问,由app层,把机制的抽象传进去,不就可以了?)

  12. 考虑要不要再次利用工厂解除算法策略和代理类之间的依赖?需求认为到这里就足够了。

ETS框架实践

项目过程回顾

在开始就单独创建框架是失败的,试图抛弃真实需求创建一个可重用的框架,是无法满足需求的。作者舍弃了原有的方案,改为了在开发框架的同时,并行开发4个需求,如果在过程中发现相似的部分,只有应用于超过4个需求的代码,才允许出现在框架中。(平台化也是这个思路,只有超过几个业务同时使用的代码,才可作为平台层来构建)最终框架的复用能力,在后期提供了强大的开发效率,并且设计没有被打破,经受住了需求的剧烈变化。

框架设计

  1. 利用TEMPLETE METHOD模式,把评分的遍历逻辑放到了基类,评分核心差异交给子类处理。

  2. 利用STATE模式,设计画图界面的命令区和绘图区的交互,接收鼠标和命令区按钮点击事件,转换为事件和设置状态的动作。

  3. 最后创建了一个TASKMASTER框架,用来管理诸多的任务实现,每个任务都是一个小的FSM完成一组操作。

整个ETS是很大的一个系统,其中用到的策略,做的取舍,都值得在日常工作中学习。

全本总结

  1. 架构是由需求驱动,在设计的过程中的一切权衡,都是因为需求导致。
  2. 依赖抽象总是好的,分离逻辑和调用、分离算法和控制,就形成了各种各样的模式。
  3. 敏捷再敏捷,结尾的小故事和小品,真实的呈现了敏捷开发和交付的实践方式,频繁和需求交流,并且大家都关注与最核心的部分。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!