这一章讨论了在项目开始之前要面临的一些问题和挑战,以及如何应对和解决它们。作者提出了以下几个主题:
不要搜集需求,而要挖掘需求。需求是用户想要解决的问题,而不是用户目前做事情的方式。要站在用户的角度,了解他们的真正需求和动机,而不是只听他们说的话。要使用原型、用例、词汇表等工具来沟通和记录需求,但要保持抽象和灵活,避免过度细化和规范化。
确定真正的约束。在面对看似不可能解决的问题时,要找出加给你的所有约束,并区分哪些是绝对的,哪些是相对的。有时候,你会发现一些约束其实是可以放松或改变的,从而为你提供更多的解决方案。要从多个角度分析问题,不要被固有的思维方式或技术限制。
等你准备好再开始。有时候,你会觉得你还没有准备好开始一个项目,因为你还缺少一些信息、资源、技术或许可。这时候,你不应该拖延或等待,而应该先做一些小步骤来启动项目,比如做一个原型、写一个测试、画一个图等。这样可以让你获得更多的反馈和支持,也可以激发你的创造力和动力。
规范陷阱。有些人会觉得在开始编码之前,必须把所有的细节都规范化和确定下来,这样才能保证项目的质量和进度。但这其实是一个错误的想法,因为规范化会消耗大量的时间和精力,也会忽略项目中可能出现的变化和不确定性。规范不应该是一个静态的文档,而应该是一个动态的过程,随着项目的进行而不断调整和完善。
形式方法。形式方法是指使用一些严格的数学或逻辑方法来描述和验证软件系统的行为和属性。形式方法可以提高软件系统的正确性和可靠性,也可以作为沟通和文档的工具。但形式方法也有一些缺点,比如难以理解、难以应用、难以适应变化等。因此,在使用形式方法时,要根据项目的实际情况和需求来选择合适的方法,并不要做形式方法的奴隶。