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

近日读《需求工程-软件建模与分析》第一部分 绪论 总结如下:

         首先了解到软件生产中的需求问题,根据软件的发展经历了以“机器”为中心、以“应用”为中心、以“企业”为中心3个阶段,但是随着软件产业的发展,带来了诸多问题。如:1、对软件开发成本和进度的估计常常不准确。开发成本超出预算、实际进度比预定计划一再拖延的现象并不罕见;2、用户对“已完成”系统不满意的情况经常发生;3、软件产品的质量不可靠;4、软件的可维护程度非常低;5、软件通常没有适当的文档资料;6、软件的成本不断提高;7、软件开发生产效率无法满足人们对软件的生产要求,软件开发生产效率的提高落后于硬件的发展。并出现了“软件危机”,在通过大量软件生产状况调查中,发现需求因素对项目的成败具有至关重要的影响。其中的用户参与(用户输入)、高层管理支持、清晰的需求说明、切合实际的期望、清晰目标和前景、需求变化、额外的无用功能等都是需求发生问题的表现。

       在这些导致需求问题的原因中,一个最为重要的原因是:未能很好地理解和掌握应用型软件的模拟特性以及由此而产生的一系列影响和要求。软件的模拟特性来源于其知识载体的特性:软件在运行中表现出来的特性、行为应该和应用的现实情况保持一致。这样,人们通过观察软件的表现就可以得出相应现实问题的答案,即软件模拟现实。软件的冗余功能也从另一个侧面很好地反映了它的模拟特性。模拟性具体是指:1、目的性:软件的目标是为了直接或间接地满足用户的某些目的或者解决用户的某些问题,软件的功能是据此设立的;2、正确性:软件设立的功能可以保证目标的正确实现;3、现实可理解性:软件实现 其功能的基础、手段和过程是在用户领域内现实可理解的,即软件系统是在理解其现实环境的基础上,通过影响现实的某些环节,或者改变现实各部分的通信方式,最终达成某些目的或者解决某些问题的。应用型软件一般以普通用户为应用对象,因此也要求具有使用的方便性。实现功能的模拟性和使用的方便性也仅要求所用技术具有可行性。和工具型软件不同的是,应用型软件通常是不通用的,它们是为特定的应用环境定制的,对环境的模拟性是其主要的关注点。

      需求问题具体原因分析:1、非技术性和社会性因素重视不足;2、传统需求分析方法的缺陷;3、软件规模的日益扩大;4、需求问题的高代价性。

      “需求工程”是所有需求处理活动的总和,它收集信息、分析问题、整合观点、记录需求并验证其正确性,最终反映软件被应用后与其环境互动形成的期望效应。需求工程有三个主要任务:第一,需求工程必须说明软件系统将被应用的环境极其目标,说明用来达成这些目标的软件功能,还要说明在设计和实现这些功能时上下文环境对软件完成任务所用方式,方法所施加的限制和约束,也即要同时说明软件需要做什么和为什么需要做。第二,需求工程必须将目标,功能和约束反映到软件系统中,映射为可行的软件行为,并对软件行为进行准确的规格说明。需求规格说明是最为重要的成果,是项目规划,设计,测试。用户手册编写等很多后继软件开发阶段的工作基础。第三,现实世界是不断变化的世界,因此,需求工程还需要妥善处理目标、功能和约束随着时间的演化情况。同时,为了节省开支和进行需求规格说明的重用,需求工程还需要对目标,功能和约束在软件产品族中的演化和分布情况进行综合考虑与处理。

      需求工程活动包括需求开发和需求管理两个方面。需求开发是因为需求工程的需求特性而存在的,他们是专门用来处理需求的软件技术,包括需求获取,需求分析,需求规格说明和需求验证4个具体的活动。需求管理是因为需求工程的工程特性而存在的,它的目的是在需求开发活动之后,保证所确定的需求能够在后继的项目活动中有效地发挥作用,保证各种活动的开展都符合需求要求。

      需求获取的目的是从项目的战略规划开始建立最初的原始需求。为此,他需要研究系统将来的的应用环境,确定系统的涉众,了解现有的问题,建立新系统的目标,获取为支持新系统目标而需要的业务过程细节和具体的用户需求。

      需求分析的目的是保证需求的完整性和一致性。它一需求获取阶段输出的原始需求和业务过程细节出发,将目标,功能和约束映射为软件行为,建立系统模型,然后在抽象后的系统模型中进行分析,标示并修复其中的不一致缺陷,发现并弥补遗漏的需求。

      需求规格说明的目的是将完整的,一致的需求与能够满足需求的软件行为以文档的方式明确地固定下来,在文档中,可以使用非形式化的文本进行描述,还可以使用形式化的语言进行描述,描述的结果文档是将被提交进行需求验证的软件需求规格说明。

      需求验证是需求开发中的最后一个活动。它首要目的是保证需求及其文档的准确性,即需求正确地反映了用户的真实意图;它的另一个目标是通过检查和验证,保证需求及其文档的完整性和一致性。

      需求管理是对需求开发所建立的的需求基线的管理,它在需求基线完成之后正式开始,并在需求工程阶段结束之后继续存在。在设计,测试,实现等后继的软件系统开发在保证需求作用的持续,稳定发挥。它的主要工作是跟踪后继阶段中的需求分析与需求变更情况,确定需求得到了正确的理解并被正确地实现到了软件产品中。

     从软件的需求来看,需求还有不同的类别,如:功能需求,性能需求,质量属性,对外接口,约束五种类别;而功能需求又包含了业务需求,用户需求,系统需求三方面。

 

你可能感兴趣的:(《需求工程-软件建模与分析》读书笔记一)