代码改变世界

《需求工程 ——软件建模与分析》读书笔记02

2018-02-11 21:24  默默不语  阅读(354)  评论(0编辑  收藏  举报

      这本书第二章主要讲解有关于需求基础的知识,人们开发软件系统的目的就是希望用它作为解决方案来解决问题,使得现实改善到期望的状况。需求源于问题,要准确理解需求,就必须明确他与问题的关系。解决问题、改善现实、满足用户期望的条件与能力就是需求。

       问题解决的两个方面为问题域与解系统。问题域是需求的背景,要理解问题就必须先理解问题域。解系统是问题的解决手段,并不是问题的发生地,所以解系统并不是问题域的一部分。解系统与问题域之间存在可以互相影响的接口,以实现交互活动。

        需求工程师要注意区分用户与软件开发人员在关注点上的不同:用户关注于问题域,软件开发人员更关注解系统。解系统的核心是软件解决方案和解决方案在通用计算机上的实现。处于问题域之外的解系统之所以能解决问题域中的问题,是因为问题域与解系统之间存在有效的互动,并在互动中互相影响。问题域与解系统能够形成互动的基础的解系统部分模拟了问题域,这种模拟性称为共享现象。解系统与问题域之间的模拟性带有交互性:一方面,解系统会在自身中保持一份与问题域现象一致的信息,并随着问题域现象的变化而变化;另一方面,问题域会期待在解系统中看到一致的信息,并据比展开自己的行为。

        问题和期望粒度不同的现象被称为需求的不同抽象层次。需求最为常见的抽象层次有3层:①业务需求,针对整个业务的期望。②用户需求,针对具体任务的期望。③系统级需求,针对用户与系统一次交互的期望。业务需求是抽象层次最高的需求,是系统建立的战略出发点,表现为最高层次的目标,它描述了组织为什么要开发系统。

        在3个层次中,只有用户需求在表述时在不可验证性上较为宽松。因为用户需求具有下面几个特点:①模糊、不清晰②多特性混杂。③多逻辑混杂。

        需求可分为以下几类:功能需求、性能需求、质量属性、对外接口、约束等。除功能需求外的其他四类需求又被统称为非功能需求。优秀的需求应该具备的特性有几点:完备性、正确性、可行性、必要性、无歧义、可验性。