一口气读完5-7篇,被作者对软件开发的透彻理解折服了,拿建筑设计类比软件设计,尤其是三视图来引出如何明确定义一个软件,这种思考角度给我很大的启发,从公众号跟过来极客时间果然是值得的。
但是也有一个疑问,以我所在的游戏行业为例,游戏开发主要是开发具体的功能需求,整个游戏服务的架构(数据库、网络、分布式架构)都是基本固定的模式,由运维人员负责管理维护,在游戏开发时往往都是采用敏捷开发的方式,直接从策划需求开始实现功能代码。看了这3篇文章,对软件设计在思考层面似乎有了一些领悟,但又不知道该如何应用到日常的游戏开发中,不知道老师是否有什么建议?
另外,建议极客时间加个用户查看自己留言的功能,否则留言完都不知道去哪找。
继续补学习笔记:
1.机械设计的三视图
准确描述出一个机械零部件
2.如何准确描述一个软件
维度更多,更抽象
UML(unified modeling language),统一建模语言,尝试做一个用来描述软件三视图的工具,但没能流行起来
3.组成视图:描述系统由哪些子系统、服务、组件部分构成
按功能划分,用于了解系统结构与分工
功能单一化:每个模块负责且只负责一个功能
功能正交化:每个功能由且仅有一个模块提供
4.交互视图
表达系统或服务之间的依赖与协作关系,在设计时用来确定模块划分是否合理,开发时以此来确定接口和交互细节
5.部署视图
确定服务、中间件,网络等。可以用来确定IO瓶颈等,并定义吞吐量和延迟要求。
6.流程视图:类似UML的序列图
7.状态视图:
状态是业务的核心,状态转移过程就是业务逻辑。
无状态业务,有状态业务,对代码的要求是不一样的。
展开
作者回复: 游戏开发我几乎没有经验,不敢妄言。简单说下感想,游戏开发的这种模式可能是有其业务特性决定的,一般来说大部分的游戏很难上到一定规模,对技术架构形成挑战。而上规模的游戏,有些是通过分服,分区在运维层面就解决了。游戏模式不太可能产生千万上亿的人群在一个场景下去集体行为,比如电商的促销秒杀,社交应用的热点事件