软件需求的定义

软件开发的首要任务是确定软件需求,软件需求指一个软件系统必须遵循的条件或具备的能力。这里的条件和能力可从两方面理解:一是用户解决问题或达到目标所需的条件或能力,即系统的外部行为;二是系统为满足合同、规范或其他规定文档所需具有的条件和能力,即系统的内部特效

软件需求一般包括三个不同的层次:业务需求、用户需求和功能需求

第一个层次是业务需求,这是客户或市场对软件的高层次目标要求,就是从业务的角度分析项目成功的预期效果。它好比需求过程中的基石,其他需求(如用户需求和功能需求)都必须与之相符

第二个层次是用户需求,即从用户使用角度来描述软件产品必须完成的任务。通常在用例模型文档中描述这个层次的需求,从用户需求还可引申出软件的质量属性。用户需求的重心是如何收集用户的需求,即确定软件系统为用户提供的功能以及软件与环境的交互

第三个层次是功能需求,定义软件开发人员必须实现的软件功能,以及为了有效实现这些功能而必须达到的非功能要求、约束条件等,从而使用户能完成他们的任务,满足业务需求。功能需求依赖于用户需求,是用户需求在系统上的具体反映

软件需求的特性

软件需求包括以下六个特性:功能性、可用性、可靠性、性能、可支持性和设计约束

  1. 功能性

    功能性需求是软件最重要的需求,可分普通功能和全局功能。普通功能泛指软件完成的一个功能或提供的一个服务。全局功能是适用于软件所有应用场景的功能

  2. 可用性

    泛指能使最终用户方便使用软件的相关需求

  3. 可靠性

    包括与系统可靠性相关的各种指标,主要有正常运行率、平均无故障时间、平均修复时间、精确度、最高错误或缺陷率等

  4. 性能

    记录与系统性能相关的各种指标,其中包括对事务的响应时间、吞吐量、容量、降级模式、资源可利用情况

  5. 可支持性

    定义所有与系统的可支持性或可维护性相关的需求,其中包括编码标准、命名约定、类库以及如何对系统进行维护操作和维护实用工具等

  6. 设计约束

    设计约束代表以及批准并必须遵循的设计约定,其中包括软件开发流程、开发工具、系统构架、编程语言、第三方构件库、运行平台和数据库系统

需求工程的由来

在引入生存周期的概念后,定义需求成为软件开发的第一项活动。随着软件规模不断扩大,需求定义与分析在整个软件开发与维护过程中越来越重要。人们逐渐认识到需求活动不仅限于软件开发的最初阶段,而是贯穿于系统开发的整个生存周期。所谓软件需求工程是一门分析、记录并维护软件需求的学科,它是软件工程的一个子领域,贯穿于软件整个生存周期的始终


需求分析与建模

需求分析通常指软件开发的第一项活动,而该活动目的主要是为待开发的软件系统进行需求与定义,并建立一个需求模型。需求分析是迭代过程,直到所编写的 SRS 真正符合用户需求为止

需求分析的步骤

软件需求分析一般包括如下的四个步骤:需求获取、需求建模、需求描述(即编写 SRS)和需求验证

  1. 需求获取

    顾名思义,需求获取就是得到正确的需求信息,常规的需求获取方法有建立联合分析小组、用户访谈与问题分析与确认等。快速原型法也可以用作一种有效的需求分析方法。在分析阶段,开发人员利用快速开发工具先建立一个系统原型,然后让用户参加评估并提出修改意见,进而逐步、准确地确定软件系统的外部行为和特征

  2. 需求建模

    建立分析模型是需求分析的首要任务,是可视化的说明软件需求的最好手段。其中占主导地位的需求建模方法有结构化分析建模和面向对象分析建模两种,这里主要介绍面向对象需求模型

    面向对象需求模型由三部分组成:用例模型、补充规约和术语表,其中用例模型又包括用例图和用例规约。用例图主要用于显示软件系统的功能,它包括用例和参与者两方面内容,而用例图下方的用例规约则是对软件系统中每个功能的具体描述。补充规约用于对全局性功能和可靠性、性能等非功能性需求进行文字性描述;后者则用于描述与系统需求相关的术语的定义。基于用例的面向对象需求建模方法,包括画用例图、写用例规约、描述补充规约和编写术语表等四步

  3. 软件需求描述

    编写软件需求规格说明书(SRS),必须用统一格式的文档进行描述,是开发人员在分析阶段需要完成的用于描述需求的文档,包括引言信息描述、功能描述、行为描述、质量保证、接口描述、其他描述

  4. 需求验证

    确保需求规格说明书可作为软件设计和最终系统验收的依据


需求管理

无论是贯穿于整个软件生存周期的需求工程,还是随需求分析建模而产生的用例模型,在定义需求的时候总伴有许多可变因素。因此,需求应该具有弹性结构,使之能适应可能的变更。一旦其中有某些需求发生变化,就能确定它可能带来的影响,进而制定出相应的策略

五个特定实践

获得对需求的理解
获取需求承诺
管理需求变更
维护对需求的双向可追溯性
标识项目工作与需求的不一致性

管理流程

上述的五个特定实践可归结为以下的三项活动,即需求确认、需求跟踪和需求变更

  1. 需求确认

    包括上述第一、第二两个特定实践。由开发方和客户共同对主要需求文档 “软件规格说明书” 进行评审,双方达成共识后作出书面承诺,使需求文档具有商业合同效力

  2. 需求跟踪

    包括上述第四、第五两个特定实践。为了有效地检验软件产品能否满足所有需求,对项目的需求进行跟踪管理,确保所有工作成果都符合用户需求

需求变更控制

需求变更的流程通常按变更申请、变更审批、变更修改、变更关闭

软件工程(四)需求工程与需求分析相关推荐

  1. 第2章 软件工程与需求工程

    第2章 软件工程与需求工程 标签: 软件需求工程 <软件需求工程> 毋国庆 第二版 个人笔记 第2章 软件工程与需求工程 软件工程 软件开发过程模型 需求工程在软件开发中的地位 软件需求的 ...

  2. 详谈软件工程之需求工程(一)

    题外话:需求工程是系统架构设计师中最为重要的一个知识环节,无论是综合知识考试还是案例分析和论文,都会考到这一点.这次我从以下四点整理了关于这个章节的知识内容,若有遗漏请多多指教. 需求工程主要从以下五 ...

  3. 软件工程餐馆点菜之需求分析

    点菜系统需求分析 一.目标 1.实现顾客根据价格不同点菜:通过前台可视化界面实现顾客多方面选择. 2.点菜完毕后,实现对顾客所点菜品价格的统计,以免使顾客花费超出预算.本系统还可以实现顾客的退选或补选 ...

  4. 软件工程点菜系统的需求分析

    点菜系统需求分析 一.目标 1.实现顾客根据价格不同点菜:通过前台可视化界面实现顾客多方面选择. 2.点菜完毕后,实现对顾客所点菜品价格的统计,以免使顾客花费超出预算.本系统还可以实现顾客的退选或补选 ...

  5. 201571030321 马玉婷 实验四 小学四则运算需求分析结对报告

    小伙伴博客园链接:http://www.cnblogs.com/mameiling/p/8876532.html 任务一: 实践软件需求获取方式 (1)在线咨询 老师层面:特意找到了母校的老师,由于双 ...

  6. 软件工程--第三章--需求分析

    文章目录 文档 研究内容 方法:结构化分析法 任务 系统的综合需求 系统的数据需求 导出逻辑模型 修正系统开发计划 获得需求的方法 分析建模 需求分析的其他图形工具 层次方框图 Warnier图 IP ...

  7. 软件工程---4.需求工程

    需求工程定义 找出.分析.文档化并且检查需求的过程被称为需求工程 需求的两个描述层次 用户需求,指高层的抽象需求.使用自然语言.图形描述需求. 系统需求,指底层的详细需求.使用系统需求文档(有时被称为 ...

  8. 现代软件工程 第八章 【需求分析】练习与讨论

    1  扩展阅读 下面两篇文章也说明了软件估计的难度:     Steve McConnell 软件估计的 10 种罪:http://www.ewh.ieee.org/r5/central_texas/ ...

  9. 【需求工程】需求分析的5W1H8C1D方法

    需求分析的5W1H8C1D方法: 5W:属于功能属性 When:时间相关的环境信息 季节信息:春.夏.秋.冬 日期信息:节日.假日.-- 作息信息:白天.晚上.凌晨.早晨.上午.中午.下午.晚上.深夜 ...

最新文章

  1. 还在发愁写API文档?推荐一款阿里腾讯都在用的API管理神器!
  2. 如何才能做好绩效管理?
  3. SharePoint 2010/SharePoint 2013 Custom Action: 基于Site Collection 滚动文字的通知.
  4. 洛谷 P1851 好朋友
  5. POJ 2337 输出欧拉路径
  6. 运用多种设计模式的综合案例_SpreadJS 纯前端表格控件应用案例:表格数据管理平台...
  7. C++笔记-DLL的编写与调用
  8. 层内容被FLASH遮挡解决办法
  9. android110 jni01
  10. vue + element ui 阻止表单输入框回车刷新页面
  11. 以下可以作为C语言标识符的是( ),天津市计算机二级C语言选择题
  12. 30款前端特效源码分享
  13. linux iometer安装教程,IOmeter 2010在Linux x64下安装
  14. photoshop实用技巧
  15. QA | R做生存分析如何取最佳cutoff(截断)
  16. BTC多空互相蓄力 短期迎来激变
  17. 一定是最便宜的5G套餐,北京用户福利畅享5G体验
  18. 1分钟搞定两个电脑之间谷歌收藏夹的迁移,不用账号!不用下载!
  19. Kafka消息偏移量的演变
  20. facebook分享 whatsapp分享 点击按钮复制链接 常用js分享内容

热门文章

  1. 做一个AR识别IP人物形象的微信小程序
  2. C++学习笔记——类模板
  3. SAP MDM主数据管理
  4. LightOJ 1404 Sending Secret Messages 费用流
  5. 计算机没有本地网络,电脑的本地连接不见了怎么办
  6. VS2010 C# ReportViewer控件新手上路心得
  7. [bzoj2534]Uva10829L-gap字符串
  8. 关于手机屏幕分辨率与手机浏览器分辨率的差别
  9. 大数据开发---数据仓库技术
  10. XenDesktop vDisk更新Error Field Format错误