需求工程-软件建模与分析读书笔记2
在写完第一篇读书笔记后,我又读了一个星期的《需求工程-软件建模与分析》,感觉有些东西要写下来,才有可能变为自己的。
需求工程有三个主要任务:第一,需求工程必须说明软件系统将被应用的环境极其目标,说明用来达成这些目标的软件功能,还要说明在设计和实现这些功能时上下文环境对软件完成任务所用方式,方法所施加的限制和约束,也即要同时说明软件需要做什么和为什么需要做。第二,需求工程必须将目标,功能和约束反映到软件系统中,映射为可行的软件行为,并对软件行为进行准确的规格说明。需求规格说明是最为重要的成果,是项目规划,设计,测试。用户手册编写等很多后继软件开发阶段的工作基础。第三,现实世界是不断变化的世界,因此,需求工程还需要妥善处理目标、功能和约束随着时间的演化情况。同时,为了节省开支和进行需求规格说明的重用,需求工程还需要对目标,功能和约束在软件产品族中的演化和分布情况进行综合考虑与处理。
上次读到了第七章需求的获取方法之面谈。面谈使我们软件工程师获取用户需求中十分有效的方法,也是应用最广泛的方法之一。它是一种问答形式,具有特定目的的直接对话。、利用面谈的方法:我们可以获取 1 事实和问题 2被会见者的观点 3 被会见者的感受 4 组织和个人的目标。一般面谈中会碰到两种问题: 1 开放式问题 2 封闭式问题。 面谈结构:1 金字塔结构 2 漏斗结构 3 菱形结构
面谈对象:与系统相关的涉众,并具有代表性,保证涵盖到每个角色。如何获取涉众:谁为系统付费,购买系统?谁使用系统:谁会受到系统结果的影响,谁来监管该系统?谁来维护系统?
面谈问题:需保证与背景无关,保证获取信息的公正性。调查问卷无法取代面谈在需求获取阶段的作用,问卷调查的问题和答案具有一定的引导性,在某种程度上会影响结果。
需求的获取方法之原型:原型是在软件开发中被广泛使用的一种工具,在软件系统的很多开发阶段都起着非常重要的作用。原型法就是尽可能快地建造一个祖糙的系统,这系统实现了目标系统的某些或全部功能,但是这个系统可能在可靠性、界面的友好性或其他方向上存在缺陷。建造这样一个系统的目的是为了看,考察某一方面的可行性。如算法的可行性,技术的可行性,或考察是否满足用户的需求等。原型是在最终系统产生之前的一个局部真实表现,可以让人们能够对一些具体问题进行基于文物的有效沟通,从而帮助人们尽早解决软件开发个存在的各种不确定性。其中主要有两种类别:1 水平原型也叫做“行为原型” ,这是我们和业务人员经常谈到的原型 。探索预期系统的一些特定行为,并达到细化需求的目的。当用户在考虑原型中所提出的功能可否使他们完成各自的业务任务时,原型使用户所探讨的问题更加具体化。它更多从业务需求着手,应用在需求阶段。2 垂直原型 也叫做结构化原型或概念的证明,实现了一部分应用功能。当预期实现阶段可能存在技术风险时,可以开发一个垂直原型。比起在软件的需求开发阶段,垂直原型更常用于软件的设计阶段以减少风险。从原型存在生命时机考虑分为抛弃型原型和进行型原型,抛弃型原型不作为最终产品的一部分,只是作为探索性的回答一些需求问题,细化需求并提高需求质量。由于在开发阶段最终将抛弃这些原型,因此不需要花太大力气去建立该原型。进化型原型是在已经清楚地定义了需求的情况下,为开发渐进式产品提供了坚实的开发基础,作为产品的部分实现。与抛弃型原型的快速、粗略的特点相比,进化式模型一开始就必须具有健壮性和产品质量级的代码。因此,对于描述相同的功能,建立进化型原型比建立抛弃型原型所花的时间要多。一个进化型原型必须设计为易于升级和优化的,因此,你必须重视软件系统性和完整性的设计原则。要达到进化型原型的质量要求并没有捷径。进化型原型一般在处理架构时会采用。
总之需求获取是从人、文档或者环境中获取需求的过程。 需求分析需求分析主要工作是通过建模来整合各种信息,从而是人们更好地理解问题。