SRS文档

负责人:韩朝燕

1什么是用例?

      在介始用例方法之前,我们首先来看一下传统的需求表述方式-"软件需求规约"(Software Requirement Specification)。传统的软件需求规约基本上采用的是功能分解的方式来描述系统功能,在这种表述方式中,系统功能被分解到各个系统功能模块中,我们通过描述细分的系统模块的功能来达到描述整个系统功能的目的。一个典型的软件需求规约可能具有以下形式:

 

     采用这种方法来描述系统需求,非常容易混淆需求和设计的界限,这样的表述实际上已经包含了部分的设计在内。由此常常导致这样的迷惑:系统需求应该详细到何种程度?一个极端就是需求可以详细到概要设计,因为这样的需求表述既包含了外部需求也包含了内部设计。在有些公司的开发流程中,这种需求被称为"内部需求",而对应于用户的原始要求则被称之为"外部需求"。

      功能分解方法的另一个缺点是这种方法分割了各项系统功能的应用环境,从各项功能项入手,你很难了解到这些功能项是如何相互关联来实现一个完成的系统服务的。所以在传统的SRS文档中,我们往往需要另外一些章节来描述系统的整体结构及各部分之间的相互关联,这些内容使得SRS需求更象是一个设计文档。

 

1.1 参与者和用例

      从用户的角度来看,他们并不想了解系统的内部结构和设计,他们所关心的是系统所能提供的服务,也就是被开发出来的系统将是如何被使用的,这就用例方法的基本思想。用例模型主要由以下模型元素构成:

参与者(Actor) 
参与者是指存在于被定义系统外部并与该系统发生交互的人或其他系统,他们代表的是系统的使用者或使用环境。

针对我们的此次项目分析:

管理者:

          输入数据

          管理者输入相应的登录名和密码进入相应用户界面。

          输出数据

          根据用户所要查询的内容输出相应信息。

          更改数据

          可以对教室有关信息进行查询,修改,增加,删除。

用户:

         注册

         可以通过界面进行信息注册。

         登入

         通过界面登入并进行查看。

用例(Use Case) 
用例用于表示系统所提供的服务,它定义了系统是如何被参与者所使用的,它描述的是参与者为了使用系统所提供的某一完整功能而与系统之间发生的一段对话。

针对我们的此次项目分析:

       管理者对教室的管理,根据教室的课程表的情况对数据库中的信息进行插入、删除、更新操作。

       用户可以在注册界面进行注册或登入界面查找某天某个时间段空闲教室的情况。

通讯关联(Communication Association) 
通讯关联用于表示参与者和用例之间的对应关系,它表示参与者使用了系统中的哪些服务(用例),或者说系统所提供的服务(用例)是被哪些参与者所使用的。

针对我们的此次项目分析:

       此项目为参与者提供查找空教室的相关信息,用户登入输入查找的信息管理者会通过用户所输入的信息把相关的数据输出到界面

 

1.2用例方法的优点

      用例方法完全是站在用户的角度上(从系统的外部)来描述系统的功能的。在用例方法中,我们把被定义系统看作是一个黑箱,我们并不关心系统内部是如何完成它所提供的功能的。用例方法首先描述了被定义系统有哪些外部使用者(抽象成为Actor),这些使用者与被定义系统发生交互;针对每一参与者,用例方法又描述了系统为这些参与者提供了什么样的服务(抽象成为Use Case),或者说系统是如何被这些参与者使用的。所以从用例图中,我们可以得到对于被定义系统的一个总体印象。

      与传统的功能分解方式相比,用例方法完全是从外部来定义系统的功能,它把需求与设计完全分离开来。在面向对象的分析设计方法中,用例模型主要用于表述系统的功能性需求,系统的设计主要由对象模型来记录表述。另外,用例定义了系统功能的使用环境与上下文,每一个用例描述的是一个完整的系统服务。用例方法比传统的SRS更易于被用户所理解,它可以作为开发人员和用户之间针对系统需求进行沟通的一个有效手段。

      在RUP中,用例被作为整个软件开发流程的基础,很多类型的开发活动都把用例作为一个主要的输入工件(Artifact),如项目管理、分析设计、测试等。根据用例来对目标系统进行测试,可以根据用例中所描述的环境和上下文来完整地测试一个系统服务,可以根据用例的各个场景(Scenario)来设计测试用例,完全地测试用例的各种场景可以保证测试的完备性。

2. 建立用例模型

使用用例的方法来描述系统的功能需求的过程就是用例建模,用例模型主要包括以下两部分内容:

用例图(Use Case Diagram) 
确定系统中所包含的参与者、用例和两者之间的对应关系,用例图描述的是关于系统功能的一个概述。

 

 

2.1 寻找参与者

所谓的参与者是指所有存在于系统外部并与系统进行交互的人或其他系统。通俗地讲,参与者就是我们所要定义系统的使用者。寻找参与者可以从以下问题入手:

       参与者可以是教师、学生,也可以是管理员,通过界面可以可以查看教室的情况,管理者可以增删改查的教室管理,更好的为用户服务。

2.2 确定用例

找到参与者之后,我们就可以根据参与者来确定系统的用例,主要是看各参与者需要系统提供什么样的服务,或者说参与者是如何使用系统的。寻找用例可以从以下问题入手(针对每一个参与者):

         教室的管理系统可以方便用户对它的使用,可以找到空教室进行自习也可以对感兴趣的课程进行蹭课,更好的利用时间。

         管理者在系统中创建、修改、删除、存储数据,可以在数据库中对各个教室的情况进行这些操作。

         系统对用户的输入信息进行分析查找返回用户所需要的信息。

     在用例的抽取过程中,必须注意:用例必须是由某一个主角触发而产生的活动,即每个用例至少应该涉及一个主角。如果存在与主角不进行交互的用例,就可以考虑将其并入其他用例;或者是检查该用例相对应的参与者是否被遗漏,如果是,则补上该参与者。反之,每个参与者也必须至少涉及到一个用例,如果发现有不与任何用例相关联的参与者存在,就应该考虑该参与者是如何与系统发生对话的,或者由参与者确定一个新的用例,或者该参与者是一个多余的模型元素,应该将其删除。

     可视化建模的主要目的之一就是要增强团队的沟通,用例模型必须是易于理解的。用例建模往往是一个团队开发的过程,系统分析员在建模过程中必须注意参与者和用例的名称应该符合一定的命名约定,这样整个用例模型才能够符合一定的风格。如参与者的名称一般都是名词,用例名称一般都是动宾词组等。

     对于同一个系统,不同的人对于参与者和用例都可能有不同的抽象结果,因而得到不同的用例模型。我们需要在多个用例模型方案中选择一种"最佳"(或"较佳")的结果,一个好的用例模型应该能够容易被不同的涉众所理解,并且不同的涉众对于同一用例模型的理解应该是一致的

转载于:https://www.cnblogs.com/lvcaixia/p/4541584.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

automapper的简单用法

AutoMapper对象转换方面(Object-Object Mapping)对象映射工具,实现对象和对象之间的转化。主要应用在项目的dto,model,entity或viewmodel之间转换,其实AutoMapper涵盖所有对象(Object&#xff0…

linux重启网卡的命令行,linux系统重启网卡命令

关于win10系统开机总是要禁用重启网卡才能联网如何解决就为大家介绍到这边了,有遇到同样情况的用户们可以采取上面的方法步骤来解决。问题2已知win7下不需要删除qos协议,在跑无盘模式下以前最好不要安装厂商网卡驱动或修改win7网络协议种类,某…

TMemo的ScrollBars属性和大文本

给TMemo.Text : 几M大的文本; 如果 ScrollBars 不是 sbBoth的话,程序很可能 无响应。 今天郁闷了半天才发现的。 转载于:https://www.cnblogs.com/CodeGear/p/4542587.html

JS判断客户端是否是iOS或者Android

<script type"text/javascript"> var u navigator.userAgent, app navigator.appVersion; var isAndroid u.indexOf(Android) > -1 || u.indexOf(Linux) > -1; //android终端或者uc浏览器 var isiOS !!u.match(/\(i[^;];( U;)? CPU.Mac OS X/); //i…

linux nginx 缓存服务器,如何开启Nginx缓存

众所周知&#xff0c;Nginx是一个高性能的web服务器&#xff0c;尤其在高并发和处理静态页面的时候有先天的优势&#xff1b;很大一部分得益于缓存的开启&#xff0c;那么如何开启nginx的缓存呢。简单来说可以分两步&#xff1a;1.定义缓存存储目录并指定共享内存空间2.在locat…

在im4java中使用GraphicsMagick

1.定义操作和命令GMOperation op new GMOperation();GraphicsMagickCmd cmd new GraphicsMagickCmd("convert"); //convert说明你要做的是convert里面的操作或ConvertCmd cmd new ConvertCmd(true); //true说明你要用的是gm工具 2.缩放的参数说明op.resize(int wi…

linux 分步编译命令,GCC分步编译C++程序(汇总版)

通过前面几节的讲解&#xff0c;已经就 gcc(g)指令可用的 -E、-S、-c 以及 -o 选项的功能和用法做了详细的讲解。在此基础上&#xff0c;本节将对“如何分步编译C/C程序”这个问题做一个完整的解答。接下来&#xff0c;我将以 g 指令分别对 C 源程序做预处理、编译、汇编和链接…

linux 安装u盘软件,Universal USB Installer:帮你用U盘装Linux

近期&#xff0c;Linux系统U盘制作安装工具&#xff1a;Universal USB Installer迎来了v1.9.5.1版本&#xff0c;新版支持了OpenSuse 32/64bit系统平台&#xff0c;欢迎Linux桌面爱好者下载使用。Universal USB Installer工具&#xff0c;类似一款U盘制作工具&#xff0c;允许用…

lucene 高亮显示

原文地址&#xff1a; http://blog.csdn.net/javaman_chen/article/details/8224407 Lucene针对高亮显示功能提供了两种实现方式,分别是Highlighter和FastVectorHighlighter。 顾名思义&#xff0c;FastVectorHighlighter较Highlighter速度更快&#xff0c;功能也更强大&…

linux rsync 安装教程,linux下的rsync配置和使用教程

本试验的测试环境使用的系统是Redhat AS4(2台&#xff0c;一个服务端&#xff0c;一个客户端)rsync服务端的ip&#xff1a;192.168.23.102rsync客户端的ip&#xff1a;192.168.23.100&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&am…

u盘 轻量linux,3种方法来创建轻量、持久化的Xubuntu Linux USB系统盘

使用Universal USB Install创建持久化USB XUbuntu系统盘这个教程为你介绍如何使用Xubuntu Linux创建一个轻量并且持久化的Linux USB系统盘。译者注&#xff1a;持久化Linux USB系统盘(Persistent Linux USB drive)&#xff0c;安装在优盘的Linux系统&#xff0c;允许用户保存数…

linux u盘加载阵列卡驱动步骤,Linux U盘加载阵列卡驱动步骤

如果没有Linux的机器,可以使用安装光盘的Linux环境&#xff1a;将 U 盘完全慢速格式化&#xff0c;将驱动拷贝到U盘&#xff0c;将U盘插在服务器上&#xff0c;用Linux安装光盘第一张启动到图形安装界面&#xff0c;按Ctrl&#xff0b;Alt&#xff0b;F2切换到控制台。按F11调用…

linux 笔记本键盘灯驱动程序,安装和使用CKB Next在Linux上更改Corsair键盘背光设置...

本文介绍在Ubuntu、Debian、Arch Linux、Fedora、OpenSUSE系统下安装和使用CKB Next的方法&#xff0c;以在Linux系统上更改Corsair键盘背光设置。Corsair键盘非常适合在PC上进行游戏&#xff0c;特别是在夜间&#xff0c;因为它们具有出色的RGB背光功能&#xff0c;用户可以轻…

15.6.6-sql字符串组装技巧

组装sql字符串&#xff0c;丢给exec sp_executesql执行 exec sp_executesql Nexec sp_executesql Nselect * from TESTTEST.dbo.Employees where Titletitle, Ntitle varchar(30), titleEmployee 注意&#xff1a;这里是执行一个带有输入参数的sql语句&#xff0c;用两层exec s…

c++ linux 环境,C++ 环境设置

C 环境设置本地环境设置如果您想要设置 C 语言环境&#xff0c;您需要确保电脑上有以下两款可用的软件&#xff0c;文本编辑器和 C 编译器。文本编辑器这将用于输入您的程序。文本编辑器包括 Windows Notepad、OS Edit command、Brief、Epsilon、EMACS 和 vim/vi。文本编辑器的…

linux内核udp校验和计算函数,Linux 内核IP和UDP检验和计算

IP checksuma.接收报文struct iphdr *iph ip_hdr(skb);if (unlikely(ip_fast_csum((u8 *)iph, iph->ihl)))goto checksum_error;b.发送报文ip_send_check(iph);{iph->check 0&#xff1b;iph->check ip_fast_csum((unsigned char *)iph, iph->ihl);}UDP checksu…

各种类型的转换

int.parse() float.parase() double.parse()这些都可以把字符串类型转换为数值类型 **.ToString();把各种类型转换为字符串类型 &#xff08;int&#xff09;**代表类型之间的转换有显示转换&#xff0c;也有隐形转换&#xff0c;这种只限于数值之间的转换&#xff0c;即想转换…

stol函数在linux下使用,Linux下ATT汇编语法简介一

这显得很古怪&#xff0c;不过在gcc知道程序员拿这些寄存器做些什么后&#xff0c;这确实能够对gcc的优化操作有所帮助。表5-3中是一些可能会用到的寄存器加载代码及其具体的含义。表5-3 常用寄存器加载代码说明代 码说 明代 码说 明a使用寄存器eaxm使用内存地址b使用寄存器ebx…

linux安装pgsql源码包解压,在Linux(centos)中使用源码安装pgRouting

目录一、解压pgRouting二、配置PostgreSQL的环境变量三、编译源代码四、测试由于pgRouting依赖于PostGIS和PostgreSQL&#xff0c;所以阅读本文之前&#xff0c;务必请先阅读&#xff1a;Linux(centos)中使用源码安装PostgreSQLLinux(centos)中使用源码安装PostGIS按照以上文章…

clientX和clientY属性需要注意的地方

clientX和clientY为可视区鼠标的位置。 1. 随鼠标移动的div块[runjs] 当document有多个页面时&#xff0c;会出现问题。[runjs] 2. 解决方案&#xff1a;scrollTop, scrollLeft 需要注意scrollTop/scrollLeft的兼容性获取&#xff1b; scrollTop document.documentElement.scr…