《软件需求十步走》阅读笔记第一篇
通过序言我可以了解到:软件需求是软件项目和产品开发的起点,更是用户和开发团队之间沟通的基础。理论上说,获取的需求足够完整、正确,特别是形式化可验证的情况下,采用程序变换、模型变换等技术可以开发出高质量的软件,但是那么确定的需求在实际上很难获得。
“什么是软件需求?”、“怎么进行软件需求分析?”等两个问题是从事软件开发工作人员必须直面的问题。软件需求是面向客户方和软件开发方,将双方的诉求进行有机结合,这就是需求分析人员要做的事,被称为软件需求分析。分析的对象有两个:客户的需求和软件构成的要素,分析的目的是能够使客户的需求和软件的要素建立匹配关系。新一代软件需求工程由需求规划、需求开发、需求分析三个分项工程构成,简单说,新一代软件需求工程的软件需求工作特点是“两阶段、十步走”。
通过对第一篇原理篇的阅读,我了解到“软件危机”的解决之道是软件工程,“需求危机”的解决之道是需求工程。需求工程是确保软件需求质量的,软件工程是确保软件开发质量的,一个软件项目想成功,必须拥有需求工程和软件工程这两把利剑在手。需求工程应该在继承原有需求工程成果的基础上将客户业务研究纳入到需求工程才是需求工程的全部。软件需求的核心是业务需求,而软件需求规格说明书是软件需求工作的目标。形式逻辑的演绎方法可以用来解决需求的完整新问题,形式逻辑的论证方法可以用来解决需求的准确性问题。需求变化一是需求增加和减少的变化,二是需求由原先的变成现在的,找到需求变化的根源,才能很好的控制需求的变化,才能称为需求变化预留充足的余量。需求变化的根源是在于错把客户作为变化根源,岂知客户服务的对象才是变化的根源。形式逻辑中的假设方法某种程度上是应对变化的一种方法。软件需求的描述方式:自然语言的语义二义性一直被认为是使得需求分析和软件开发人员造成认识不一样的根本原因。软件需求的完整性=业务需求的完整性+用户需求的完整性+系统需求的完整性。软件需求的验证工作的目的是保证需求分析成果的完整性和正确性,保证软件开发后的软件产品是用户所需要的。软件需求的验证的工作重要性是在于发现修复需求分析中存在的问题。从“轻业务、重系统”正是新一代软件需求工程的重要理念。
重新解读软件需求:软件工程和需求工程是既相对独立又相互关联的两个工程,其关系为软件工程是以需求工程为核心,需求工程的产物是软件需求,软件需求是连接需求工程和软件工程的纽带,对软件开发全过程有指导作用也有约束作用。新一代软件需求工程强调软件需求分析工作是在一个全息的业务背景和一个信息系统的宏观设计的基础上展开的用户需求和系统需求分析。软件需求由业务及信息化规划、用户需求分析和系统需求分析3个阶段的工作成果构成。软件需求的特性是说明软件需求内容和形式上应具有的属性。软件需求在内容上应具有完整性、正确性、可行性、第一性、前置性、必要性、无二义性、可验证性等。软件需求在形式上应具有规则性、一致性、可修改性、可跟踪性等。业务分析是软件需求工作的基础。面向系统顶层的设计是为了保障后期开发的多个软件系统在总体上保持一致。内容上的特性是需求规格工作中努力的目标。
需求工程的新思路:需求工程是圆心,软件工程是圆点。需求工程的研究对象是软件工程的各环节,需求工程的研究内容是包括对软件工程的各环节的指导信息。需求工程应由需求规划、需求开发和需求管理三个域构成,需求规划是需求工程的核心,需求开发和需求管理是需求规划在开发和管理上的映射。需求规划是由问题分析、目标分析、业务需求分析、系统分析几个部分构成,其中问题分析、目标分析是需求规划的核心。新一代软件需求工程是由需求规划、需求开发、需求管理3个部分构成,其中需求规划是传统软件需求工程所没有的。业务分析是自顶向下,到每一个细节;系统规划上要给出未来所有信息系统必须遵循的总体原则。需求主导开发、业务主导需求。