软件开发方法的理解
1)XP,SCRUM是软件开发过程的管理方法:其中包括时间安排,人力和物质资源按时间阶段的划分利用,主要体现“统筹管理安排”。瀑布式开发也是一种开发过程管理方法。同样XP,SCRUM也可以放在面向过程的开发中,但XP是为面向对象量体定制的衣服,给面向过程穿上,效率、效益就大打折扣。
2)领域驱动设计,风险驱动,测试驱动,用例驱动或者等等:解决开发过程中具体问题的方法,优化某一时间阶段过程(相对整个软件开发过程而言 )的方法。这些方法能相互结合使用。如在领域设计(业务逻辑设计)我们可以同时使用风险驱动,先开发最重要,风险系数小的业务用例,同时在开发这个业务用例时使用测试驱动的方法。这些方法的使用最重重要的是”场合“,能够增加效能(效率,效益)
3)架构、框架、模式
架构:什么是架构?个人理解架构是和被开发的软件的被使用的环境相关的软件,硬件,人,我们需要看到的就是三者相互作用的结构图。任何软件不管你显示的考虑过架构没有,架构都存在。框架:框架是特定领域(类似行业的概念)软件提取共性而形成的,是个架构的半成本。框架觉得还可以理解为:资源的相互作用结构图。那样的话这个概念可大可小。可以放在软件,硬件,人之间,也可以单独放在软件,硬件或其他概念之间,如公司管理架构,确实现实中有这个概念。
模式:解决特定问题的特定方法。单字面理解就知道这个词的意义很泛,因此这个词可以放在其他概念中,例如放在架构中,形成词语: 架构模式,不就是和框架的概念类似么?又譬如放在代码设计中:代码设计模式,不就是我们通常意义中的设计模式么?如果我们再细细思索一下敏捷建模,瀑布式开发,他们不是针对“过程管理”的特定方法么,是不是也可以理解为模式?
4)最后打个比喻,还是用建筑:Xp是项目管理:见房子过程中工期,资金,材料,人的管理。架构:房子设计图纸和建出来房子的最终样子。领域驱动设计,风险驱动等等:设计门,或者厨房采用的方法。
5)区分这些概念的关键:角度;理解这些概念的关键:相对论!
6)初学的菜鸟,有谬误之处请指正,谢谢!