软件工程作业
姓名:李泽伟班级:11信科(1)班学号:28
1.题目:采用结构化分析方法写出书店管理系统的需求文档,包括数据流图及数据字典,书店JS是一家从事图书销售的传统公司,对系统要求如下:
(1)记录每本图书的库存。
(2)实现图书的零售(包括打折),实现开架售书。
(3)可以每日统计销售情况。
(4)实现图书的采购、退货及结算,实现与供货商的销售及结算关系。
(5)遵守出版行业的行规:在书店到书后,若在3个月内未实现销售,可全部或部分退货,在发书后3个月内给予发票,书店在3个月后可部分或全部付款,该项规则对采购货批发均有效。
(6)该书店还可将该产品批发给其他书店。
(7)在供应商、书店、其他书店、零售客户之间的结算采用码洋折扣方式进行,也就是说如果图书的实价为X,则图书码洋为X,而以7折给书店,则图书的实洋就为0.7X,供应商、书店等以相对固定的折扣进行交易。
(8)管理人员可以随时查看库存、采购、销售、付款、到款情况,并能提供日/月销售报表、应付/付款情况分析表、应收/到款情况分析表。
由于销售商品是图书,图书除有书名、作者、出版社外,还有版次、印次、出版日期以及ISBN号、条码、定价;由于出版领域的特殊性,一种图书(如软件工程)只有一个ISBN 号以及一个条码,而该图书一句不同的版次、印次,可有不同的定价,折给条码的扫描确定一本图书带来一定的困难。
答案:
数据流图:
顶层图
0层图
数据字典:
1、数据流条目:
订货单={书号+书名+作者+出版社+数量}+日期+订货人
付款单=应付金额+实付金额+付款人+收款人+日期
发货单={书号+书名+作者+出版社+数量}+发货人+收货人+日期
发票={书号+书名+作者+出版社+数量+单价+金额}+总金额+日期+(营业员) 收据={书号+书名+作者+出版社+数量+单价+金额}+总金额+日期+单位
收款单={书号+书名+作者+出版社+数量}+订货日期+付款人+收款人+收款日期采购单={书号+书名+作者+出版社+数量}
采购订单={书号+书名+作者+出版社+数量} +采购人+采购单位+日期
到货通知单={书号+书名+作者+出版社+数量}+订货日期+订货人+到货日期退货书单={书号+书名+作者+出版社+数量}+退货人+退货单位+日期
退货单={书号+书名+作者+出版社+数量+单价+金额}+总金额+退货人+退货日期
应付款分析表=应付款单位+{书号+书名+作者+出版社+数量+单价+金额}+总金额+应付款日期
应收款分析表=应收款单位(个人)+{书号+书名+作者+出版社+数量+单价+金额}+总金额+应收款日期
2、文件条目:
图书库存={书号+书名+作者+出版社+数量}+日期
销售文件={书号+书名+作者+出版社+数量+单价+金额}+总金额+销售日期图书采购文件={书号+书名+作者+出版社+数量+单价+金额}+总金额+采购日期书店结算账本=销售文件+图书采购文件+应付款分析表+应收款分析表
3、数据项条目
书号=00000000…日期=XXXX.XX.XX 数量*单价=金额
E-R图:
2.书店管理系统用况建模
2.1.书店管理系统用例图
2.2.用例的详细描述
用例名称:书店管理系统参与的执行者:客户、系统业务员
前置条件:一个客户或系统业务员进入系统
事件流:
基本路径:
1、当用户户进入系统,用例开始
2、用户验证(客户/系统管理员)
3、进入系统主界面
4、如果客户进入系统则选购图书
5、客户到前台结账时形成订书单
6、客户退出系统
7、当系统管理员进入系统时,管理员根据界面信息拟制订书单
8、系统管理员录入图书信息
9、录入图书信息完毕后退出
可选路径:
系统管理员与客户进入系统没有顺序规定,用户在任何时候都可以退出系统,而且用户之前的活动将被保存,用例结束。
3.书店管理系统的静态模型
3.1 标识候选对象
●外部实体有客户、系统管理员、出版社、供货商、图书、订单、库存、订单管理系统。
这些外部实体都可以作为候选对象。
●需要处理的信息有名称、单价、供货信息、订单的订单项、图书的编号、订单日期、客
户信息等。
3.2 筛选候选对象
图书管理系统实际上代表了整个系统,所有信息的显示、操作界面等都由图书管理系统来展示,因此可以将其确定为最终的所需的对象。
客户、、系统管理员、出版社、供货商、图书、订单、库存等候选对象都有明确的属性和操作,显然应该成为最终的对象。
考虑到一份订单可以由多个订单项组成,因此增加订单项这个对象。
综上所述,最终得到图书管理系统包含以下类:客户、、系统管理员、出版社、供货商、图书、订单、库存、订单项。
3.3 标识属性和操作
表3.3 图书管理系统的类及其属性
3.4 确定类之间的关系
图书管理系统的类图
4.某模块的流程图如图13.18所示。
根据判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖等覆盖标准分别设计最少的测试用例。
4.1判定覆盖
判定覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的所有可能结果都至少出现一次(即判定的每个分支都至少经过一次)。
表4.1满足判定覆盖标准的测试用例
4.2条件覆盖
条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定中的每个条件的所有可能结果都至少出现一次。
表4.2 满足条件覆盖标准的测试用例
4.3判定/条件覆盖
判定/条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定的所有可能结果都至少执行一次,并且,每个判定中的每个条件的所有可能结果都至少出现一次。
表4.2 满足判定/条件覆盖标准的测试用例
4.4条件组合覆盖
条件组合覆盖是指选择足够的测试用例,使得运行这些用例时,被测程序的每个判定的条件结果的所有可能组合都至少出现一次。
判定1中的条件结果的所有可能组合是:
①X>=80,Y>=80
②X>=80,Y<80
③X<80,Y>=80
④X<80,Y<80
判定2中的条件结果的所有可能组合是:
⑤X+Y>=140,X>=90,Y<80
⑥X+Y>=140,X<80,Y>=90
⑦X+Y>=140,X<90, Y<90
⑧X+Y<140,X>=90,Y<90
⑨X+Y<140,X<90,Y>=90
⑩X+Y<140,X<90, Y<90
表4.3 满足条件组合覆盖标准的测试用例
4.5路径覆盖
路径覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每条可能执行的路径都至少经过一次。
表4.5 满足路径覆盖标准的测试用例
11 / 11。