《软件需求》读书笔记一
本书讲述了软件开发中一个至关重要的问题——软件需求问题。软件开发人员及用户往往容易忽略信息沟通,导致软件开发出来后,不能很好地满足用户的需要。而返工则不仅在技术上给开发人员带来巨大的麻烦,而且软件性能深受影响且造成人力、物力的浪费。所以在开发周期早期提高项目需求分析的质量,减少重复劳动,通这控制项目范围的扩展及需求变更来达到按计划完成预定目标是当前我国软件业急需解决的问题——这也是本书讨论的主要内容。
威格斯(Karl E.Wiegers)是需求工程和软件过程改进领域内的顾问专家。作为Process lmpact公司的首席顾问,他曾举办过许多培训讲习班,并多次在行业大会上发表演讲。Karl曾两次荣获Software Development Productivity Award,这一奖项是专门为奖励有助于提高生产率的产品和著作而设立的。
开篇首先先介绍了一个关于Phil和Maria的关于客户姓名更改这个功能没有实现而造成的问题,这个问题包括很多内容:信息收集不正规、功能隐晦、对假设功能有理解上的分歧、需求制定不明确以及需求变更不正规等。
关于用户需求,文中肯定了Ian Sommerville and Peter Sawyer提出的观点:“需求是对我们应当执行的任务的规范说明,它描述系统的行为特性或属性,可以是一种对系统开发进程的约束”,我也是认同这个观点的,软件需求有三个不同的层次:业务需求、用户需求和功能需求。此外,每个系统都包含某中类别的非功能需求。书中还列出了需求领域一些常用术语的解释,常用术语包括业务需求、业务规格、约束、外部界面需求、特性、功能需求、非功能需求、质量需求、系统需求和用户需求等。到目前为止,我们讨论的需求主要描述软件系统的属性,我们将其称之为产品需求。当然项目还包含有其他的诉求和产出,不再团队执行的软件范围之内,但对项目整体的成败尤为关键。而在项目中可能出现的需求风险,书中也一一介绍,包括用户参与度不够、规划不当、用户需求蔓延、需求模棱两可、镀金和忽略干系人等情况。因此,只有高质量的需求才会带来最大的好处。
用户需求应该来自于直接或者间接使用产品的人,这些用户是客户的子集。提供业务需求的客户有时会试图替实际用户说话。然而这些内容常常和真实用户的需求相去甚远,这就需要我们去辨别核对,减少过失和失误。