软件工程-软件需求分析基础

devtools/2025/2/10 17:36:42/

基本任务

准确地回答“系统必须做什么?”,也就是对目标系统提出完整、准确、清晰、具体的要求

目标是,在分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面形式准确地描述软件需求。

准则

  • 1)必须理解并描述问题的信息域,根据这条准则应该建立数据模型(工具:实体关系图ERD)
  • 2)必须定义软件应完成的功能,这条准则应该建立功能模型(工具:数据流图DFD)
  • 3)必须描述作为外部事件结果的软件行为,这条准则应该建立行为模型(工具:状态转换图STD)
  • 4)必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节

步骤

  • 问题分析:一般指文字描述
  • 需求分析:建立分析模型
  • 需求验证 :评审

 

需求获取的常用方法

联合分析小组 

用户代表、领域专家和系统分析员

客户访谈

充分准备(可以准备调查表),寻找共同语言

循序渐进、逐步逼近

实际观察用户工作流程

问题分析与确认

多个来回

需求分析方法

结构化分析方法

自定向下、功能分解(分层DFD)

由后向前,定义数据和加工(DD,PSPEC)

根据需要,分析复杂数据和动态模型(E-R图,CFD,CSPEC,STD)

编写SRS

面向对象分析方法

定义系统的用例

领域分析,建立类对象模型

建立对象-关系模型

建立对象-行为模型

编写SRS

验证软件需求

1)一致性。所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾

2)完整性。需求必须是完整的,规格说明书(SRS)应该包括用户需要的每一个功能、性能

3)现实性。指定的需求应该是用现有的软硬件技术基本上可以实现

4)有效性。必须证明需求是正确有效的,确实能解决用户面对的问题


http://www.ppmy.cn/devtools/157692.html

相关文章

基于机器学习的DDoS检测系统实战

基于机器学习的DDoS检测系统实战(PythonScikit-learn)|毕业设计必备 摘要:本文手把手教你从0到1实现一个轻量级DDoS攻击检测系统,涵盖数据预处理、特征工程、模型训练与可视化分析。 一、项目背景与意义 DDoS&#x…

RK3568上使用C++结合V4L2拉流,并RKMPP硬件编解码,并保存为MP4文件

在RK3568平台上使用C结合V4L2捕获视频流,并通过RKMPP进行硬件编码后保存为MP4文件,可以按照以下步骤实现: 1. 环境准备 硬件:RK3568开发板、摄像头模块。软件依赖: Linux内核支持V4L2。Rockchip MPP库(RKM…

接入 deepseek 实现AI智能问诊

1. 准备工作 注册 DeepSeek 账号 前往 DeepSeek 官网 注册账号并获取 API Key。 创建 UniApp 项目 使用 HBuilderX 创建一个新的 UniApp 项目(选择 Vue3 或 Vue2 模板)。 安装依赖 如果需要在 UniApp 中使用 HTTP 请求,推荐使用 uni.requ…

Linux系统 环境变量

环境变量 写在前面概念查看环境变量main函数的参数argc & argvenv bash环境变量 写在前面 对于环境变量,本篇主要介绍基本概念及三四个环境变量 —— PATH、HOME、PWD。其中 PATH 作为 “ 敲门砖 ”,我们会更详细讲解;理解环境变量的全局…

MybatisPlus较全常用复杂查询引例(limit、orderby、groupby、having、like...)

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。以下是 MyBatis-Plus 中常用复杂查询(如 LIMIT、ORDER BY、GROUP BY、HAVING、LIKE 等)的引例: 1. 环境准备…

【Java基础篇】——第2篇:Java语法基础

第2篇:Java语法基础 2.1 引言 在上一篇中,我们介绍了Java的基本概念、应用场景以及如何搭建开发环境。本篇将深入探讨Java的语法基础,涵盖变量与数据类型、运算符、控制结构、数组、方法、面向对象编程的进一步内容、异常处理以及常用的编程…

2025年前端面试,性能相关的面试题汇总

以下是一些与前端性能相关的面试题汇总,适合准备 2025 年的前端面试: 1. 性能优化基础 什么是页面加载性能? 解释页面加载性能的概念,包括首屏加载时间、内容交互时间等。 如何评估网页性能? 介绍使用 Chrome DevTools、Lighthouse、WebPageTest 等工具进行性能评估的方法…

[笔记] 汇编杂记(持续更新)

文章目录 前言举例解释函数的序言函数的调用栈数据的传递 总结 前言 举例解释 // Type your code here, or load an example. int square(int num) {return num * num; }int sub(int num1, int num2) {return num1 - num2; }int add(int num1, int num2) {return num1 num2;…