软件需求规格说明书的编写一、实验要求与任务1、要求:完成软件需求规格说明书编写:(1)基于获取的需求信息以及相关的参考文档,采用基于OMT的需求建模方法构建软件系统的需求模型;(2)基于给定的软件需求规格说明模板编写软件需求规格说明书。
其中,软件系统的需求模型应包括类图表示的对象模型,序列图和状态转换图表示的动态模型,以及分层的数据流图表示的功能模型。
每一种图形化需求模型应采用工具描述,类图、序列图和状态转换图采用Rational Rose或starUML软件描述,数据流图可采用visio软件描述。
2、具体任务:为“自动取款机(ATM)系统”开发编写需求规格说明书。
关于ATM系统的需求陈述如下:1)某银行拟开发一个自动取款机系统,它是一个由自动取款机、中央计算机、分行计算机及柜员终端组成的网络系统。
ATM和中央计算机由总行投资购买。
总行拥有多台ATM,分别设在全市主要街道上。
分行负责提供分行计算机和柜员终端,柜员终端设在分行营业厅及分行下属的各个储蓄所内。
该系统的软件开发成本由各个分行分摊。
2)银行柜员使用柜员终端处理储户提交的储蓄事务。
柜员负责把储户提交的存款或取款事务输进柜员终端,接收储户交来的现金或支票,或付给储户现金。
柜员终端与相应的分行计算机通信,分行计算机具体处理针对某个账户的事务并且维护账户。
3)储户可以用现金或支票开设新账户。
储户也可以从自己的账户存款或取款。
通常,一个储户可能拥有多个账户。
拥有银行账户的储户有权申请领取银行卡。
使用银行卡可以通过ATM访问自己的账户、提取现金,存储现金或查询有关自己账户的信息。
4)银行卡是一张特制的磁卡,上面有分行代码和卡号。
分行代码唯一标识总行下属的一个分行,卡号确定可以访问哪些账户。
每张银行卡仅属于一个储户,但同一张卡可能由多个副本。
因此,必须考虑同时在若干台ATM上使用同样的银行卡的可能性。
也就是说,系统应该能够处理并发的访问。
5)当用户把银行卡插入ATM之后,ATM就与用户交互,获取有关这次事务的信息,并与中央计算机交换有关事务的信息。
首先,ATM要求用户输入密码,接下来ATM把读到的信息以及用户输入的密码传给中央计算机,请求中央计算机核对这些信息并处理这次事务。
中央计算机根据卡上的分行代码确定这次事务与分行的对应关系,委托相应的分行计算机验证用户密码。
如果用户输入的密码是正确的,ATM就要求用户选择用户选择事务类型(取款、存款、查询等)。
当用户选择取款时,ATM请求用户输入取款项。
最后,ATM从现金出口吐出现金,打印出账单交给用户。
参考上述应用场景,通过调查完善用户需求,按照需求的内容进行分析,按照模板要求撰写完整的软件需求规格说明书。
3、需提交的材料:(1)基于模板定义的需求规格说明书的电子版及纸质版,正文前须有封面(见附录1)和目录;(2)基于软件绘制的各模型的电子版;(3) 各组成员的贡献以百分比的形式呈现.其中电子版发送至邮箱:*****************.cn,纸质版由班长收齐交至勤学楼4121。
截止时间:1月13日16:00。
过期视为“不及格”。
禁止从别处抄袭或相互抄袭,否则0分。
二、软件需求规格说明模板1.引言引言提出了对软件需求规格说明的概况,有助于读者理解该需求规格说明是如何编写的,应如何阅读和理解。
1.1 目的目的是说明软件需求规格说明的主要目标,描述软件规格说明所定义的产品或某些产品部分。
1.2 文档约定描述编写文档时所采用的标准或排版约定,包括正文风格、提示区或中药符号。
例如,说明高层需求的优先级是否可以被所有细化的需求所继承,或者每个需求陈述是否都有自身的优先级。
1.3 预期的读者和阅读建议列举软件需求规格说明所针对的不同读者,例如开发人员、项目经理、营销人员、用户、测试人员或文档的编写人员。
描述文档中剩余部分的内容及其组织结构。
提出最适合于每一类型读者阅读文档的建议。
1.4 产品的范围提供对指定的软件及其目的的简短描述,包括利益和目标。
把软件与企业目标或业务策略相联系。
1.5 参考文献列举编写软件需求规格说明时所参考的资料或其他资源。
这可能包括用户界面风格指导、合同、标准、系统需求规格说明、使用实例文档,或相关产品的软件需求规格说明。
在这里应该给出详细的信息,包括标题名称、作者、版本号、日期、出版单位或资料来源,以方便读者查阅这些文献。
2.综合描述这一部分概述正在定义的产品和所运行的环境、使用产品的用户以及已知的限制、假设和依赖。
2.1 产品的前景描述软件需求规格说明中所定义的产品的背景和起源,说明该产品是否是产品系列中的下一成员、是否是成熟产品改进的下一代产品、是否是现有应用程序的替代品,或者是否是一个新型的、扩充型产品。
如果软件需求规格说明定义了大系统的一个组成部分,那么就要说明这部分软件是怎样与整个系统相关联的,并且要定义两者之间的接口。
2.2 产品的功能概述产品所具有的主要功能,其详细内容将在4中描述,在此只需要概括地总结,例如用列表的方法给出。
很好地组织产品的功能,可使每个读者都易于理解。
2.3 用户类和特征确定可能使用产品的不同用户类并描述相关的特征。
有一些需求可能只与特定的用户类相关。
将该产品的重要用户与不太重要的用户类区分开。
2.4 运行环境描述软件的运行环境,包括硬件平台、操作系统和版本,还有其他的软件组成或与其共存的应用程序。
2.5 设计和实现的限制确定影响开发人员自由选择的问题,并说明这些问题为什么成为一种限制。
可能的限制包括如下内容:●必须使用或者避免的特定技术、工具、编程语言和数据库。
●所要求的开发规范或标准(例如,如果由客户的公司负责软件维护,就必须定义开发者所使用的设计符号表示和编码标准)。
●企业策略、政府法规或工业标准。
●硬件限制,例如定时需求或存储器限制。
●数据转换格式标准。
2.6 假设和依赖列举出软件需求规格说明中影响需求陈述的假设因素(与已知因素相对立)。
这可能包括你打算用的商业组件、有关开发或运行环境的问题。
你可能认为产品将符合一个特殊的用户界面设计约定,但是另一个读者可能不这样认为。
如果这些假设不正确、不一致或被更改,就会使项目受到影响。
此外,确定项目对外部因素存在的依赖。
例如,如果打算把其他项目开发的组件集成到系统中,那么就要依赖那个项目按时提供正确的操作组件。
如果这些依赖已经记录到其他文挡(例如项目计划)中了,那么在此就可以参考其他文档。
3.外部接口需求确定可以保证新产品与外部组件正确连接的需求。
关联图表示了高层抽象的外部接口。
需要把对接口数据和控制组件的详细描述写入数据词典中。
如果产品的不同部分有不同的外部接口,那么应把这些外部接口的详细需求并入到这一部分的实例中。
3.1 用户界面陈述所需要的用户界面的软件组件。
描述每个用户界面的逻辑特征。
以下是可能包括的一些特征:●将要采用的图形用户界面(GUI)标准或产品系列的风格。
●屏幕布局或解决方案的限制。
●将出现在每个屏幕的标准按钮、功能或导航连接(例如一个帮助按钮)。
●快捷键。
●错误信息显示标准。
对于用户界面的细节,例如特定对话框的布局,应该写入一个独立的用户界面规格说明中,而不能写入软件需求规格说明中。
3.2 硬件接口描述系统中软件和硬件每一个接口的特征。
这种描述可以包括支持的硬件类型、软硬件之间交流的数据和控制信息的性质以及所使用的通信协议。
3.3 软件接口描述该产品与其他外部组件(由名字和版本识别)的连接,包括数据库、操作系统、工具、库和集成的商业组件。
明确并描述在软件组件之间交换数据或消息的目的。
描述所需要的服务以及内部组件通信的性质。
确定将在组件之间共享的数据。
如果必须用一种特殊的方法来实现数据共享机制,例如在多任务操作系统中的一个全局数据区,那么就必须把它定义为一种实现的限制。
3.4 通信接口描述与产品所使用的通信功能相关的需求,包括电子邮件、Web浏览器、网络通信标准或协议及电子表格等。
定义相关的消息格式,以及规定通信安全或加密问题、数据传输速率和同步通信机制等。
4.系统特性在该模板中,功能需求是根据系统特性即产品所提供的主要服务来组织的。
你可能更喜欢通过使用实例、运行模式、用户类、对象类或功能等级来组织这部分内容(IEEE1998)。
你还可以使用这些元素的组合。
总而言之,你必须选择一种使读者易于理解预期产品的组织方案。
4.1 说明和优先级提出了对该系统特性的简短说明并指出该特性的优先级是高、中还是低。
还可以包括对特定优先级部分的评价,例如利益、损失、费用和风险,其相对优先级可以从1(低)到9(高)。
4.2 激励/响应序列列出输入激励(用户动作、来自外部设备的信号或其他触发器)和定义特性行为的系统响应序列。
这些序列将与用例中的序列相关。
4.3 功能需求列出与特性相关的详细功能需求。
这些是必须提交给用户的软件功能,使用户可以使用所提供的特性执行服务或者使用所指定的用例执行任务。
描述产品如何响应可预知的出错条件或者非法输入或动作。
必须唯一地标识每个需求。
5.其他非功能需求这部分列举了所有非功能需求,而不是外部接口需求和限制。
5.1 性能需求阐述不同的应用领域对产品性能的需求,并解释它们的原理以帮助开发人员作出合理的设计选择。
确定相互合作的用户数或者所支持的操作、响应时间以及与实时系统的时间关系。
此外,还可以在这里定义容量需求,例如存储器和磁盘空间的需求或者存储在数据库中表的最大行数。
应尽可能详细地确定性能需求,需要针对每个功能需求或特性分别陈述,而不是集中在一起陈述。
例如,“在运行微软Window 2000的450MHz Pentium II的计算机上,当系统至少有50%的空闲资源时,95%的目录数据库查询必须在两秒内完成。
”5.2 安全设施需求详细陈述与产品使用过程中可能发生的损失、破坏或危害相关的需求。
定义必须采取的安全保护或动作,以及需预防的、潜在的危险动作。
明确产品必须遵从的安全标准、策略或规则。
例如,一个安全设施需求的范例为:“如果邮箱的压力超过了规定的最大压力的95%,那么必须在1秒钟内终止操作。
”5.3 安全性需求详细陈述与系统安全性、完整性或私人问题相关的需求。
这些问题将会影响产品的使用和产品所创建或使用的数据的保护。
定义用户身份认证或授权需求。
明确产品必须满足的安全性或保密性策略。
例如,一个软件系统的安全需求的范例为:“每个用户在第一次登录后,必须更改最初登录密码。
最初的登录密码不能重用。
”5.4 软件质量属性详细陈述与客户或开发人员至关重用的产品质量属性。
这些属性必须是确定、定量的,有时是可验证的。
至少应指明不同属性的相对侧重点,例如易用程度优于易学程度,或者可移植性优于有效性。
5.5 业务规则列举出有关产品的所有操作规则,例如什么人在特定环境下可以进行何种操作。