需求工程-软件建模与分析读书笔记1
《需求工程-软件建模与分析》这是我读的第一本书,这本书是我们的教材,主要讲了软件需求对于整个软件开发过程的重要性。因为软件需求的获取和分析是软件系统开发中的一项重要任务,正确获取软件需求是软件技术人员必须掌握的基本技能。本书从软件需求工程的角度出发,以需求开发过程为主线,完整描述了需求获取、需求分析、需求验证、需求规格说明和需求管理等需求工程活动。本书站在开发者的立场,侧重于实践者的技术与方法,系统全面地介绍了软件需求工程的各项进展,努力促进需求工程领域理论、方法和技术的全面融合应用,以指导需求工程各阶段的系统化实践。
我现在读了第一章到第六章,这本书刚开始讲了需求工程的来源,基础及其重要性。软件的发展经历了以“机器”为中心,以“应用”为中心,以企业为中心这三个阶段。软件的生产也随之出现严峻的状况,称之为软件危机。为解决该问题,软件需求分析也应运而生。需求问题产生主要有4个原因:1 非技术性和社会性因素重视不足 2 传统分析方法的缺陷 3 软件规模的日益扩大 4 需求问题的高代价性 。软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。通过对应问题及其环境的理解与分析,为问题涉及的信息、功能及系统行为建立模型,将用户需求精确化、完全化,最终形成需求规格说明,这一系列的活动即构成软件开发生命周期的需求分析阶段。 需求分析是介于系统分析和软件设计阶段之间的桥梁。一方面,需求分析以系统规格说明和项目规划作为分析活动的基本出发点,并从软件角度对它们进行检查与调整;另一方面,需求规格说明又是软件设计、实现、测试直至维护的主要基础。良好的分析活动有助于避免或尽早剔除早期错误,从而提高软件生产,降低开发成本,改进软件质量。应用型软件一般以普通用户为应用对象,因此也要求具有使用的方便性。实现功能的模拟性和使用的方便性也仅要求所用技术具有可行性。和工具型软件不同的是,应用型软件通常不是通用的,它们是为特定的应用环境定制的,对环境的模拟性是其主要的关注点。在书中给需求工程这样定义:需求工程是所有需求处理活动的总和,它收集信息、分析问题、整合观点、记录需求并验证其正确性,最终发硬软件被应用后与其环境互动形成的期望效应。它从软件需求的根源着手,在软件工程体系中讨论软件需求,让我了解需求工程的作用和意义,明确软件需求的来源和去向,说明了软件需求怎样基于现实世界中的问题得以产生。书中强调面向普通用户的纯工具型软件以功能的有用性为首要成功标准,一些过于复杂的功能反而会因其灵活性而丧失一定的实用性,进而受到用户的抵制。普通用户技术能力有限,所以对操作的要求以使用方便为主,在使用方便的前提下追求使用的高效性。实现功能的有用性和使用的方便性,利用常见的可行技术即可,先进技术并非必要条件。
需求可以分为不同的类别,不同的类别有不同的特性和不同的处理要求,根据不同的分类标准,可以将需求分为不同的种类,如功能需求,性能需求,质量属性,对外接口,约束。而功能需求主要体现为三个层次: 1 业务需求既抽象层次最高的需求成为业务需求 2 用户需求就是执行实际工作的用户对系统所能完成的具体任务的期望。 3 系统需求是从用户的角度进行描述的,主要内容使用系统语言,因此它具有这几个特性 模糊,不清晰,多特性混杂,多逻辑混杂等不可接受的特性。优秀需求需要有以下几个特性:1 完整性 2 正确性 3 精确性 4 可行性 5 必要性 6 无歧义性 7 可验证性 。需求获取就是进行需求收集的一个活动,它从人员,资料和环境中的到系统开发所需要的相关信息。主要原因是1开发人员和用户来自不同环境,背景立场不同 2 普通用户缺乏概况性,综合性的表达能力 3用户存在认知困难 4 用户越俎代庖 5 缺乏用户参与。我们必须对需求信息获取了解清楚才能进行接下来的工作。