软件开发为什么很难从HelloWorl

1

问题的分类

最初在年被DaveSnowden开发出来的Cynefin框架尝试把世界上的问题划分到了5个域中(大类):

简单(Simple)问题:该域中的因果关系非常明显,解决这些问题的方法是

感知-分类-响应(Sense-Categorise-Respond),有对应的最佳实践

复合(Complicated)问题:该域中的因果关系需要分析,或者需要一些其他形式的调查和/或专业知识的应用,解决这些问题的方法是感知-分析-响应(Sense-Analyze-Respond),有对应的好的实践

复杂(Complex)问题,该域中的因果关系仅能够从回顾中发现

复杂(Complex)问题:该域中的因果关系仅能够从回顾中发现,解决这些问题的方法是探索-感知-响应(Probe-Sense-Respond),我们能够感知涌现实践(emergentpractice)

混乱(Chaotic)问题:该域中没有系统级别的因果关系,方法是行动-感知-响应(Act-Sense-Respond),我们能够发现新颖实践(novelpractice)

失序(Disorder)问题:该域中没有因果关系,不可感知,其中的问题也无法被解决

显然,软件开发过程更多地是一个复杂(Complex)问题。

在一个产品被开发出来之前,不确定性非常高,团队(包括业务人员和技术人员)对产品的知识也是最少的,而且需要大量的学习和尝试才可以明确下一步可能的方向。

不幸的是,很多时候我们需要在一开始(不确定性最高的时候)就为项目做计划。

这种从传统行业中非常适合的方法在软件开发领域不再适用,这也是敏捷开发、精益等方法论在软件开发中更加适合的原因。

正因为软件开发事实上是一个学习的过程,我们学习到的新知识反过来会帮助我们对问题的定义,从而带来变化。这里的变化可能来自两个方向:

功能性

非功能性

功能性的变化指随着对业务的深入理解、或者已有业务规则为了匹配市场而产生的变化。比如支付方式由传统的货到付款变成了网银付款,又变成了







































白癜风治疗方案
北京中科医院正规吗



转载请注明地址:http://www.henanledxianshiping.com/rjkfjh/16151.html
  • 上一篇文章:
  • 下一篇文章: