zoukankan      html  css  js  c++  java
  • 《需求工程-软件建模与分析》阅读笔记01

    在老师推荐的几本书里面,我选择了阅读《需求工程——软件建模与分析》一书,感觉受益颇多,刚开始接触软件觉得最难得是代码,关键是代码,其他都没必要,随着学习的渐渐深入,越来越理解老师说的,在一个项目中最轻松地才是代码。

      软件生产中产生需求问题的最大原因在于对应用型软件的模拟特性理解不透彻或应用不坚决,它会导致软件开发者产生轻视需求的态度问题,但除此之外,还有一些技术原因也会导致需求问题的产生。一般有非技术性和社会性因素重视不足;传统需求分析方法的缺陷;软件规模的日益扩大;需求问题的高代价性等。IEEE对需求定义为:①用户为了解决问题或达到某些目标所需要的条件或能力。②系统或系统部件为了满足合同、标准、规范或其他正式文档所规定的要求而需要具备的条件或能力。③对①或②中的一个条件或一种能力的一种文档化表述。通过这个定义了解了需求并不是用户想要的,想实现的,了解了需求本质的内涵。

    需求又分为:

          功能需求:是软件系统需求中最常见、最主要和最重要的需求,同时也是最为复杂的需求。功能需求通常体现为三个层次:业务需求、用户需求、系统需求。

          业务需求:描述了组织为什么要开发系统,满足用户的业务需求。业务需求是用户需要在业务上使自己更加方便的开展工作的需求。

          用户需求:表达了用户对系统的期望,但是要透彻和全面地了解用户的真正意图,仅仅拥有期望是不够的,还需要期望的背景知识。因此,对所有的用户需求,都应该有充分的问题域知识作为背景支持。而在实际工作中,用户表达自己的期望时,通常不会提及需求所涉及问题域知识,所以需求工程需要根据用户的需求整理完整的问题域知识

      那么什么是需求工程?需求工程是所有需求处理活动的综合,它收集信息、分析问题、整合挂点、记录需求并验证其正确性,最终反应软件被应用后与其环境互动形成的期望效应。需求工程是为了在软件开发前需要软件工程师们去了解并去设计出一套解决方案。因为软件工程师并不是了解所有领域。所以更加需要更用户沟通。需求工程十分重要。虽然人们很早就认识到这一点,但是在时间、人力、物力、财力的投入上却并没有那么重要。事后必然会导致需求分析水平低,软件开发质量低,用户抱怨多的问题出现。

          系统需求是用户对系统行为的期望,一系列的需求联系在一起可以帮助用户完成任务,达到用户需求,进而满足业务需求。需求工程可以直接映射为系统行为,定义了系统中需要实现的功能,描述了开发人员需要实现什么。

          将用户需求转化为系统需求的过程,在该过程中,首先需要分析问题领域的特性,从中发现问题域和计算机系统的共享知识,建立系统的知识模型。然后将用户需求部署到系统模型中,即定义系列的系统行为,让它们联合起来实现用户需求,每一个系统行为即为一个系统需求。

      提起需求,不同背景的人会有不同的看法,IEEE对需求的定义为:用户为了解决问题或达到某些目标所需要的条件;系统或系统部件为了满足合同、标准、规范或其他正式文档所规定的要求而需要具备的条件或能力;对前两条中的一个条件或一种能力的一种文档化表述。

      需求中总是遇到一些困难,因为用户和开发人员的背景不同,立场不同,所以知识理解困难,心中所想的东西也不一样。普通用户缺乏概况性和综合性的表述能力,  所以很难理解对方心中所想。用户还总是提出各种需求,固执的坚持某些特性和功能。用户并不了解软件的设计情况,所以需要这些困难需要需求工程师们一一解决。

         书中对需求工程的执行的路线有着详细的描述:问题分析:明确问题;定义业务需求;制定解决方案及系统特性。需求获取 需求分析  文档化和验证。需求工程的执行路线简明地展示了一个需求工程如何运行的流程,也了解了需求工程的整个过程。

         书中也列举了常见的需求定义错误,更好地解释了之前需求的定义,也更加让我们了解了需求的定义,以及产生需求定义错误的原因,通过分析原因可以让我们在实际过程中注意到并且避免。也可以有更好的方法来避免这些错误。

      需求是获取的主要对象,是系统期望达到的目标。它主要来源于用户、客户、领域专家等相关涉众,在湖区中体现为射中的问题、期望、观点、看法和态度等。常见的获取信息的方法有问卷调查、面谈、文档分析、文档检查、需求剥离等。也有头脑风暴、专题讨论、JAD、JRP等。需求获取是从人、文档或者环境中获取需求的过程。在需求获取中,需求工程师需要执行的任务包括:收集背景资料;定义项目前景和范围;选择信息的来源;选择获取方法,执行获取;记录获取结果。需求分析的主要工作室通过建模来整合各种信息,从而使人们更好地理解问题。在需求分析阶段,需求工程师主要的任务包括:背景分析;确定系统边界;需求建模;需求细化;确定优先级;需求协商。

       需求规格说明:获取的需求需要被编写成文档,其中项目前景和范围文档记录记录业务需求、用户需求分析记录用户需求、系统需求被写入需求规格说明记录系统需求。需求工程师在这个阶段的主要工作包括:1.定制文档模板;2.编写文档

       需求验证:为了保证以上标准的,满足,需求规格说明文档,尤其是最终定稿的需求规格说明文档,在传递给相关人员之前要进行严格的验证。需求验证阶段的主要任务包括:1.执行验证;2.问题修正

       需求管理:需求管理会进行变更控制,纳入和实现合理的变更请求,拒绝不合理的变更请求,控制变更的成本和影响范围。需求管理阶段的主要任务包括:1.建立和维护需求基线集;2.建立需求跟踪信息;3.进行变更控制

         这次阅读大概阅读了三分之一,这一部分详细介绍了需求的定义及分类,需求过程的活动,使我们了解了需求工程的作用和意义,明确了软件需求的来源和去向。还针对需求工程中理论与实践并重的现状,对理论、技术和实践方法进行了融合。让我对剩下的内容充满了期待。

  • 相关阅读:
    N95当手柄玩游戏,甩起来还可以用手势控制电脑,分享一下我们的设计经验
    这个回答真逗
    基于事件通信的轻量级MVP框架实现,附源码
    敏捷开发读书笔记
    开发Access数据库提示的"标准表达式中数据类型不匹配",DateTime类型解决办法
    解决mysql表已满的错误
    我的OO实践由GPS消息处理抽象出一通用命令处理类
    收到开Windows 7 party的资源了【无图无真相】
    一)我要做什么,Petshop 源码分析
    天津大学免费上网,IPV4及IPV6同时共享的解决方案
  • 原文地址:https://www.cnblogs.com/xiangyu721/p/14201477.html
Copyright © 2011-2022 走看看