软件开发过程与需求获取

article/2025/9/21 7:01:33
  • 为学堂在线清华大学《软件工程》部分视频笔记

  • 8.1需求工程师

    • 需求分析是软件工程中的重要步骤,是决定软件醒目成败的关键影响因素之一。因此,需求工程成为软件工程和系统工程重要的分支领域之一。在需求工程中,我们主要关注的事软件和系统需求的获取、建模、分析、验证和管理。
    • 应具备的能力
      l.分析问题和解决问题的能力
      2.人际沟通及交流能力
      3.软件工程知识和技能
      4.应用领域有关知识
      5.书面语言组织和表达能力
    • 优秀需求工程师的目标
      1.识别错误假设
      2.确保一致性
      ​3.提升依从性
      ​4.减少彼此误解
      5.提高支持速度和效率
      6.提升客户满意度
      ​7.撰写优质需求文档
  • 8.2需求定义

    • 定义
      • 定义1
        “需求”是对外可见的系统特征。
        ​“需求管理”有三项任务:
        | 学习——需求获取
        | 剪枝——需求优选
        | 文档化——撰写需求规格说明书
      • 定义2
        需求,是人们要解决的某个问题或达到某种目的的需要。是系统或其组成部分为满足某种书面规定(合同,标准,规范等)所要具备的能力。需求将作为系统开发,测试,验收,提交的正式文档依据。—IEEE 6l0.l2.1990
      • 定义3
        每一个“人造物”都是一个内部环境与外部环境的“接口”。这里内部环境指人造物本身的设计组成。外部环境指人造物的周遭及其作用环境。对这个接口的描述既是需求。
        —— Herbert Simon. 1969
    • 需求应涵盖的内容
       为什么要设计该系统
      ·​系统由谁使用
      ·系统要做什么
      ​·系统涉及哪些信息
      ·对解决方案有何额外限制
      ​·如何使用该系统
      ·质量需要达到何种程度 
    • 需求规约
      好的需求是可以度量的,能给出项目成功的必要条件
      单个需求项的质量
      ​1.准确
      ​2.正确
      3.明确
      ​4.可行
      5.可证
      ​整个需求集合的质量
      ​1.现实
      ​2.精确
      ​3.全面
  • 8.7撰写需求文档

    • 需求规格说明用户
      客户和终端用户——提供需求,并保证其满足用户需要
      市场人员和销售——根据客户要求定义有竞争力的产品特征管理产品发布
      产品开发人员——通过需求了解系统要做什么并且开发系统
      测试人员——参照需求进行系统验证,通过测试和用户征询的方式
      项目管理人员——需要参照需球规格说那分,补充本地运行所需的特性
    • 高质量需求规格说明
      一个高质量的需求规格说明是
      1.​所有需求的集合
      2.描述产品要提供的所有功能
      3.是软件系统解决方案的商业合同的基础
      ​4.是测试计划的基础
      5.定义产品需求的度量标准
      ​6.是产品需求跟踪的先决条件
      7.​影响开发产品的项目计划
    • 高质量需求规格说明的评价标准
      1.正确性=经过验证的
      2.​无歧义
      3.完整的
      4.可测试=可以证明的可修改的
      5.可跟踪的
      6.易理解
      7.一致的
      ​8.有序的
      9.项目或产品特定的其他特征
    • 需求文档的组织形式
      文档需要有逻辑组织结构
      ​· 例如:参照IEEE的模板
      ​典型的组织形式包括
      · 按系统能够响应的各种外部环境情况组织
      ​· 按系统特征来组织
      · 按系统的响应方式来组织
      · 按所管理的外部数据对象来组织
      ​ ·按用户类型来组织
      · 按软件的工作模式来组织
      ​ ·按子系统的划分来组织
    • IEEE-80 SRS模板大纲(软件需求文档的框架)
      ·介绍
      ​·术语表
      ·用户需求规格说明
      ​·系统结构
      ·系统需求规格说明
      ​·系统模型
      ·系统的演化·附录
      ·索引
    • SRS模板的优缺点
      优点
      1.模板提高效率
      2.在有模板的情况下,面对一个完整的大纲,不容易遗漏重要的信息
      缺点
      1.并非对于所有的系统,模板的章节设计都是类似的
      2.如果仅仅为了满足标准,而填写模板的所有章节,在不相关的章节,会加入一些没有意义的内容
      3.读者很难将这些无意义的文字和真正的需求分开
    • 软件需求规格说明SRS的风格(获取需求的主要途径)


      须根据实际选择合适的需求规格说明方式
      • 描述性的自然语言文本
        用户故事
      • 从用例模型产生
        用例模型与需求转化可看成可逆的过程·如果需求模型以用例的形式表示,我们可以逆向生成需求的完整集合
      • 从需求数据库中生成
        ·商业需求数据库有内置的功能来生成经过筛选的需求规格说明
        ·从产品线需求规格数据库中生成特定产品的需求规格说明
      • 从混合模型中生成
        ·特征模型和用例模型
  • 4.1软件过程

    • 过程的含义


      过程是一组将输入转化为输出的相互关联或相互作用的活动。
    • 过程方法


      过程方法是系统地识别和管理组织内所使用的过程,保证更有效地获得期望的结果。
    • 软件过程


      软件维护:
      系统投入使用后对其进行改进,以适应不断变化的需求。完全从头开发的系统很少,将软件系统的开发和维护看成是一个连续过程更有意义。
      ​软件开发过程是为了获得高质量软件,而实施的一系列活动。
      • 需求开发
        需求开发 : 在可行性研究之后,分析、整理和提炼所收集到的用户需求,建立完整的需求分析模型,编写软件需求规格说明。
      • 软件设计
        软件设计 ∶ 根据需求规格说明,确定软件体系结构,进一步设计每个系统部件的实现算法、数据结构及其接口等。
      • 软件构造
        软件构造︰概括地说是将软件设计转换成程序代码,这是一个复杂而迭代的过程,要求根据设计模型进行程序设计以及正确而高效地编写和测试代码。
      • 软件维护
        软件维护 : 系统投入使用后对其进行改进,以适应不断变化的需求。完全从头开发的系统很少,将软件系统的开发和维护看成是一个连续过程更有意义。
    • 软件项目管理


      软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本.人员、进度、质量和风险进行控制和管理的活动。
    • 软件配置管理


      软件配置管理是通过执行版本控制、变更控制的规程,并且使用合适的配置管理软件,来保证所有产品配置项的完整性和可跟踪性。
  • 4.2软件过程模型

    • 软件过程模型
      • 瀑布模型
        将基本的开发活动看成是一系列界限分明的独立阶段,这是—种计划驱动的软件过程,有利于规范软件开发活动。活动线性方式顺序执行
        • 特点
          活动自上而下次序固定,当前活动接受上一项活动的完成结果
          用户只有在整个过程结束时才能看到开发结果(导致开发过程中间难以相应用户的变更需求)
        • 适用场合
          建适用于软件需求在开发初期就可以被完整确定的软件项目,而且用户使用的环境也很稳定
      • 原型化模型
        原型是一个部分开发的产品,用于加强对系统的理解,有助于明确需求和选择可行的设计策略。
        • 特点
          初步实现产品的一部分,可以帮助开发人员评价和分析不同方案的实现效果
          原型化开发可以是可操作的软件界面,也可以是纸上原型
        • 适用场合
          需求不确定时
      • 迭代式开发
        将描述、开发和验证等不同活动交织在一起,在开发过程中建立一系列版本,将系统一部分一部分地逐步交付。
        • 特点
          逐步交付,缩短开发周期,更好地获得用户对产品的反馈,
          ​可以更快速的发布产品,可以快速响应客户的需求变化
        • 迭代式开发的两种形式
          • 增量模型
            增量模型: 在每一个新的发布中逐步增加功能直到构造全部功能。
          • 迭代模型
            迭代模型: 一开始提交一个完整系统,在后续发布中补充完善各子系统功能。
          • 适用场合
            开发周期短,需求不确定性高,需求变化可能性大
      • 可转换模型
        利用自动化的手段,通过一系列转换将需求规格说明转化为一个可交付使用的系统。
        • 特点
          由于数学方法具有严密性和准确性,形式化方法所交付的系统具有较少的缺陷和较高的安全性。
        • 适用场合
          特别适合于那些对安全性、可靠性和保密性要求极高的软件系统,这些系统需要在投入运行前进行验证。 

http://chatgpt.dhexx.cn/article/0Ks6kASU.shtml

相关文章

软件需求分析-需求开发-需求分析与建模和需求描述

需求开发 C6需求分析与建模一、要点二、周期一:理清框架和脉络三、周期二:确定需求细节四、其他需求 C7需求描述需求描述的风格与格式 C8需求验证 C6需求分析与建模 一、要点 需求分析实际上是业务分析,也就是选择一种业务导向的线索将零散…

需求开发与需求管理

需求开发与需求管理概述 在我看来, 项目管理的日常活动包括了: 需求管理、故障管理、版本管理、任务管理。 需求管理贯穿了项目的大部分生命周期,故障管理则从第一个迭代版本出现直到产品维护阶段(包括内部故障与外部故障&#xf…

软件开发与过程管理——需求获取

目录 一. 需求获取概述 1.1 为什么要进行需求分析 1.2 需求获取的非平凡性 1.3 需求获取的主要活动 二. 需求获取的策略 2.1 需求获取的主动性策略 2.2 需求协商 三. 需求获取的主要方法 3.1 用户调查 3.2 文档分析 3.3 原型法 3.4 模型驱动 四. 软件开发及过程…

浅谈软件项目需求分析

这里不是写标准化的理论知识,而是想写写对软件需求工作的感受。 理论上的需求管理是要解决系统需求做什么的问题,以此界定系统功能和非功能性的内容。需求指的是由项目接受的或项目产生的产品和产品构件需要,包括由组织征集的对项目的…

软件工程之需求分析

现在人们越来越认识到软件工程在软件开发中的重要作用。目前国内软件在开发中还没有对软件开发的过程进行明确规定,文档不完整,也不规范,软件项目的成功往往归功于软件开发组的一些杰出个人或小组的努力。这种依赖于个别人员上的成功并不能为全组织的软件生产率和质量的提高…

如何写一份好的软件开发的需求分析

什么是需求分析? 通俗的讲,对用户的意图不断揭示和验叛的过程,要对经过系统可行性分析所确定的系统目标做更为详细的描述。 假如你是个建筑工程师,有个客户找你建一个鸡窝,这个时候要需要与客户沟通,来确定…

软件需求的三个层次——业务需求、用户需求和功能需求的区别

我们的软件产品或者项目,其需求都有三个层次,业务需求、用户需求和功能需求,除此之外,每个系统还有各种非功能需求。不是很了解的朋友,今天就和我和我们一起来了解一下吧!   下图是需求层次关系图&#…

运算符重载规则

1) 并不是所有的运算符都可以重载。能够重载的运算符包括&#xff1a; - * / % ^ & | ~ ! < > - * / % ^ & | << >> << >> ! < > && || -- , ->* -> () [] new new[] …

C++ 重载运算符

一、运算符重载 运算符重载是一种形式的C多态。 在C中&#xff0c;编译器有能力把一个由数据、对象和操作符共同组成的表达式&#xff0c;解释为对一个全局或成员函数的调用。该全局或成员函数被称为操作符函数&#xff0c;通过重定义操作符函数&#xff0c;可以实现针对自定…

C++重载决议

目录 前言一些与overload易混淆的概念override运算符重载 为什么需要重载决议&#xff1f;声明函数重载 什么是重载决议&#xff1f;什么不是函数重载&#xff1f; 重载决议之过程函数重载 && 函数模板before 重载决议more detailstype conversion(类型转换)rank&#…

重载

实质&#xff1a;重载的实质就是写一个重载函数语法&#xff1a;函数类型 operator 运算符名称 {对运算符的重载处理}说明&#xff1a;如果要对加号进行重载&#xff0c;则 “operator ” 就是函数名。方法&#xff1a; &#xff08;1&#xff09;成员函数法 定义&#xff1a…

重载运算符

输入带有空格的字符串 cin.getline(a[i]) 运算符重载的语法 定义一个重载的运算符与定义一个函数类似&#xff0c;只是这个函数的名称必须以operator开头。 运算符重载函数的一般形式为&#xff1a;类型 类名::operator 重载的运算符(参数表) {函数体 }参数的个数由以下两个…

Python——运算符重载

Python——运算符重载 1.加法运算符重载和减法运算符重载2.__str__()方法重载和__ge__()方法重载3.索引的切片重载 运算符重载指的是将运算符与类方法关联起来&#xff0c;每个运算符对应一个指定的内置方法。 Python通过重写一些内置方法&#xff0c;实现了运算符的重载功能。…

C++ 运算符重载

前言 本文引用于“C语言中文网”&#xff0c;我整理出来放在博客&#xff0c;方便大家共同学习。所有知识点和代码均已亲测可用&#xff0c;如有疑问&#xff0c;可提出&#xff0c;一起讨论学习。 本章内容&#xff1a; 1. C运算符重载的概念和原理 2. C重载&#xff08;C重…

配置使用Navicat或PLSQL可视化工具远程连接Oracle

写在前面 本文讲解的是在没有 Oracle 环境&#xff0c;如何使用可视化工具配置远程连接服务器 Oracle 数据库。 目录 写在前面一、概述二、下载 Oracle Instant Client三、配置环境变量四、配置监听五、可视化工具环境配置5.1、Navicat5.2、PLSQL 一、概述 很多时候&#xff0c…

Windows系统远程连接Linux系统操作

远程连接服务器管理时&#xff0c;系统不同可分为两种&#xff1a;一是Linux系统和Mac系统或者Linux系统之间连接&#xff1b;二是Windows系统连接到Linux系统 第一种情况下&#xff1a;在Linux系统和Mac系统下可以相互用命令"ssh [-p] 22 连接主机名主机IP地址"连…

怎么删除远程桌面连接计算机,win10系统强制删除远程桌面连接软件的方法

大家都知道win10系统中&#xff0c;自带有远程桌面连接软件&#xff0c;能够帮助我们实现远程控制其他计算机进行一系列操作&#xff0c;但是有些用户可能用不到这个软件&#xff0c;就想要强制删除远程桌面连接软件&#xff0c;那该怎么操作呢&#xff0c;小编这就给大家带来w…

被远程连接的windows一定要设置账号的密码吗

背景 我们有个windows系统&#xff08;方便表述叫P)&#xff0c;比如win10的&#xff0c;平时使用的用户名是a&#xff0c;没有登录密码&#xff0c;平时使用P的过程是允许没有密码登录操作系统的。 但是&#xff0c;如果使用另外一台windows远程连接它&#xff0c;就得为a设…

SecureCRT--远程连接工具

SecureCRT简介 Linux一般作为服务器使用&#xff0c;而服务器一般放在机房&#xff0c;你不可能在机房操作你的Linux服务器。这时我们就需要远程登录到Linux服务器来管理维护系统。 Linux系统中是通过SSH服务实现的远程登录功能&#xff0c;默认ssh服务端口号为 22。Window系…

【rdesktop】超实用的ubuntu远程连接windows软件

个人定制命令行 rdesktop 192.168.50.118 -u zhankun -p LPjj1234 -z -a 16 -x lan -r clipboard -g 1920x105000 -r sound:local -r disk:share/home/lyp/zk_share1、ubuntu端 sudo apt install rdesktop2、Windows端 1.计算机—属性—远程设置—远程&#xff0c;勾选&…