zoukankan      html  css  js  c++  java
  • 软件需求分析——阅读笔记2

      读《需求工程——软件建模分析》第一部分绪论 有感

      软件的发展经历了以“机器”为中心、以应用为中心、以“应用”为中心、以“企业”为中心3个阶段。随着以“应用”为中心软件的发展,原有的个体化“软件作坊式”的软件开发方法带来了诸多问题,新的形势带来了新的挑战,面对转折,人们在思考体系结构、构件、中间件等新技术方法的同时,也在审视着新时期的软件生产情况,时刻关注着可能出现的新型软件危机。为此,20世纪90年代出现了大量对软件生产状况的调研和评估,发现了一些非诚严峻的事实。

      应用型软件在模拟现实的基础上,接受用户的请求,协助用户完成任务,它正确工作的基础是具有模拟性。模拟性具体指:目的性、正确性、现实可理解性。软件生产中产生需求问题的最大原因在于对应用型软件的模拟特性理解不透彻或应用不坚决,他会导致软件开发者产生轻视需求的态度问题,但除此之外,还有一些技术原因也会导致需求问题的产生:非技术性和社会性因素的重视不足、传统需求分析方法的缺陷、软件规模的日益扩大、需求问题的高代价性。

      需求工程是所有需求处理活动的总和,它收集信息、分析问题、整合观点、记录需求并验证其正确性,最终反映软件被应用后与其环境互动形成的期望效应。需求工程的主要任务有以下三点,需求工程必须说明软件系统将被应用的环境及其目标,说明用来达成这些目标的软件功能,还要说明在设计和实现这些功能时上下文环境对软件完成任务所用方式、方法所施加的限制和约束,也既要同时说明软件需要做什么和为什么需要做。需求工程的复杂性体现在以下的几个方面:处理范围广、涉及诸多参与方、处理内容多样、处理活动内容多样、处理活动互相交织、处理结果要求苛刻。需求工程师需要掌握的技能包括专业技能、分析技能、交流技能、观察技能、建模技能、写作技能、创新技能、协调技能。

      提起需求,不同背景的人(用户、开发者)会有不同的看法,因此需求是需求工程中一个非常难以准确定义和解释的概念。最常见的分类将需求分成五种类别:功能需求、性能需求、质量属性、对外接口、约束。功能需求通常分为三个层次:业务需求、用户需求、系统需求。抽象层次最高的需求成为业务需求,而用户需求表达了用户对系统的期望,但是要透彻和全面的了解用户的真正意图,仅仅拥有期望是不够的,还需要知道期望的背景知识。用户需求是从用户的角度出发点,主要使用的是自然语言,因此它具有以下几个计算机系统无法接受的特性:模糊不清晰、多特性混杂、多逻辑混杂。因为以上问题,所以在定义解系统的规格说明书之前,需求工程师需要将用户需求进一步明确和细化,将之转化为系统需求。

      优秀的需求应该具备完整性、正确性、精确性、可行性、必要性、无歧义、可验证。需求获取是从人、文档或者环境中获取需求的过程,在需求获取中,需求工程师通常需要执行的任务包括:1)收集背景资料2)定义项目前景和范围3)选择信息的来源4)选择获取方法,执行获取5)记录获取结果

      在需求分析阶段,需求工程师主要的任务包括:背景分析、确定系统边界、需求建模、需求细化、确定优先级、需求协商。在编写需求规格说明书阶段,需求工程师的主要的任务包括:定制文档模板、编写文档。在需求验证阶段的主要任务包括:执行验证、问题修正。需求管理阶段的主要任务包括:建立和维护需求基线集、建立需求跟踪信息、进行变更控制。

      在需求获取中有很多困难时普遍存在的,了解这些困难对更好地了解需求获取活动的复杂性有重要意义。需求工程需要获取的内容主要有三种:需求、问题或描述、环境与约束。获取信息方法分为六个类别:传统方法、集体获取方法、原型、模型驱动方法、认知方法、基于上下文的方法。

  • 相关阅读:
    递归初级——第39级台阶
    排序——快速排序(尾递归优化)
    排序——快速排序(优化小数组时的排序方案 )
    排序——快速排序(三数取中法和优化不必要交换)
    排序——归并排序(递归实现+迭代实现 )
    超详细Hexo+Github博客搭建小白教程
    每日算法系列【LeetCode 1031】两个非重叠子数组的最大和
    每日算法系列【LeetCode 330】按要求补齐数组
    5W2H | 关于写博客的七点反思
    每日算法系列【LeetCode 124】二叉树中的最大路径和
  • 原文地址:https://www.cnblogs.com/xulei11-/p/7669099.html
Copyright © 2011-2022 走看看