软件本质
《程》:Fred Brooks说过,软件中的关键问题导致“没有银弹”。但是,难道每种软件的关键问题都是一样的吗?比如说操作系统和ERP系统。
TDM:Brooks说,软件的关键问题就是“找出需要做什么”,而“怎么做”则是次要问题——所有的技术、工具和过程解决的都是这个次要问题。我完全同意他的观点。在“怎么做”的问题上,我们取得了极大的进展;但是,在“做什么”的问题上,几十年来情况似乎并没有太大的改善。我想,这是由于软件的本质造成的。
《程》:那么,什么是软件的本质呢?
TDM:我们的世界是模糊的、连续的、不精确的,但软件是精确的、离散的、形式化的,这就注定了软件不能完全描述现实世界。因此,我们需要知道描述哪些部分、忽略哪些部分,这就是软件的本质问题。显然,这是一件机器无法完成的工作,软件的本质意味着开发人员的存在意义。
《程》:Fred Brooks说过,软件中的关键问题导致“没有银弹”。但是,难道每种软件的关键问题都是一样的吗?比如说操作系统和ERP系统。
TDM:Brooks说,软件的关键问题就是“找出需要做什么”,而“怎么做”则是次要问题——所有的技术、工具和过程解决的都是这个次要问题。我完全同意他的观点。在“怎么做”的问题上,我们取得了极大的进展;但是,在“做什么”的问题上,几十年来情况似乎并没有太大的改善。我想,这是由于软件的本质造成的。
《程》:那么,什么是软件的本质呢?
TDM:我们的世界是模糊的、连续的、不精确的,但软件是精确的、离散的、形式化的,这就注定了软件不能完全描述现实世界。因此,我们需要知道描述哪些部分、忽略哪些部分,这就是软件的本质问题。显然,这是一件机器无法完成的工作,软件的本质意味着开发人员的存在意义。