软件的设计阶段是相当重要的。一般来说,都不建议接到项目后第一时间就去考虑什么编码,怎么实现细节,而是有一个规划设计的过程。
设计过程本身又有很多个过程,比如类设计,就是后期的,什么UML之类的,都是关注设计的后期,而不是前期准备。
作为设计的最初状态,各位有什么好用的设计工具?我自己就是用txt来写思路而已,不知道这样是不是有点太落后了?
就算是txt写思路,也有一些框架,可以用来衡量设计的进度到达哪一步了。我自己没有一个很好的想法,就是随便乱写,谁有更好的建议?
-------------------------------
第一步是需求的分析。需求分析是从宏观上去认识产品。不管你这个产品具体怎么做,人们希望他具有哪些功能,好处。大概就是这样子。
这一步并不是软件开发的专业技术,而是产品营销的内容,因为一个卖得出去的产品,必须要具备竞争力,竞争力分析一般都是产品营销的一项最基本的内容。
第二步是制定达到需求的产品策略。这个需要检查技术上是否能够实现既定的目标。
第三步需要规划软件的构成。一个软件系统,必然需要各种各样的组件,将系统化为各个小组件,就能把问题细化,更利于编码实现。
第四步是建立开发环境。这个环境并不是说IDE而已,而是包含了测试,度量等指标的一套检验体系。
第五步是建立多级原型。因为开发有一个漫长的过程,这个过程如果一步到位是相当容易出现问题的。建立多个中间阶段的原型,会有助缓解开发的压力,建立更加有秩序的开发流程。
然后就进去正常的编码阶段。
第一,二步是建立宏观概念。
第三步,是分解。
如何把一个宏观认识转化为具体的组件?
一。面向对象法。
二。功能模块法。
面向对象的设计是听起来容易,却没有严格的一套策略。
因此我认为建立一套行之有效的设计策略是有意义的。
策略一:实体对应。比如图书管理员,对应一个编程对象。
策略二:实体部分对应,比如车子由车轮,方向盘等组合而成。
策略三:界面模型。比如操作员需要进货,出账这两个操作,把操作作为一个虚拟的物体来对应。
略。
小议对象和算法 的鸿沟:
对象是外部性质,和内部操作的有机构成。
算法是单纯的操作。
需不需要对象,在于是否需要对象提供的封装。从对象的角度,算法只是一种对象间的通信行为。
而在算法的角度,对象只是局部步骤的封装行为。
如何建立高效的算法,首先要从算法的固有特性考虑。如果局部的封装导致整体算法被迫采用一种低效率的实现模式,这么建立相关对象就是很没必要的。
如果有一个高效算法,不需要一群过度封装的对象,那么必然会需要一个简单而直接的对象。