1、武汉轻工大学软件工程实验报告题 目: 实验 1、2、3、4 专 业: 软件工程 班 级: 软件工程 1201 学 号: 1205110312 姓 名: 甘加升 指导老师: 董正言 2014 年 12 月 25 日实验一 结构化分析实验1 实验目的通过此实验了解结构化分析的特点和步骤,以及结构化分析所采用的基本图形工具。2.实验内容假设你在一所职业高中工作,负责该校信息系统的建设和维护。财务科长请你研究用学校拥有的 pc 机生成工资明细表和各种财务报表的可能性。3.实验要求1 问题定义:请在这个阶段描述你需要解决的问题。包括用户面临的问题和预期的项目规模。最后生成一份问题定义报告书。2 可行性研
2、究:在这个阶段产生处理工资事务的大致过程,画出高层逻辑模型,并且画出相应的数据流图,建立数据字典。3 对此系统进行成本效益分析。4.实验步骤4.1 问题定义报告书1.项目名称:工资支付2.问题描述:该校一直由会计人工计算工资并编制财务报表,随着学校规模扩大工作量也越来越大。目前每个月都需要两名会计紧张工作半个月才能完成,不仅效率低而且成本高。今后学校规模将进一步扩大,人工计算工资的成本还会进一步提高。 3.项目目标:1) 研究开发费用较低的新工资支付系统的可能性。4 项目规模:1) 开发成本应该不超过 7.2 万元5.初步设想: 1) 用学校自己的计算机系统生成工资明细表和财务报表6.可行性研
3、究:为了更全面地研究工资支付项目的可能性,建议进行大约历时两周的可行性研究。这个研究的成本不超过 4000 元。4.2 可行性研究:1. 处理工资事务的大致过程 :1) 每月月末教师把他们当月实际授课时数登记在课时表上,由各系汇总后交给财务科,职工把他们当月完成承包任务的情况登记在任务表上,汇总后交给财务科。2) 两名会计根据这些原始数据计算每名教职工的工资,编制工资表、工资明细表和财务报表。然后,把记有每名教职工工资总额的工资表报送银行。3) 由银行把钱打到每名教职工的工资存折上,同时把工资明细表发给每名教职工。2. 高层逻辑模型:会 计D 1 : 课 时 表 和任 务 表1 . 1审 核
4、数 据1 . 2加 工 事 务 数 据事 务 数 据D 2 : 工 资 明 细 表D事 务 数 据2汇 总 数 据事 务 数 据D 2 : 财 务 报 表银 行3. 数据流图:教 师1 . 1登 记D 1 : 课 时 表授 课 时 数1 . 2汇 总D 2 : 任 务 表承 包 任 务 完 成 情 况2 . 1计 算 工 资2 . 2编 制 表 格课 时 表任 务 表D 3 : 工 资 表D 4 : 工 资 明 细 表D 5 : 财 务 报 表银 行3发 工 资职 工3分 发 工 资 明 细 表职 工教 师4. 数据字典:1)名字:授课情况登记表别名:描述:记录每个教师的当月完成的课时及任务。
5、定义:授课情况登记表=教职工编号 +姓名+职务+职称 +基本工资+生活补贴+书报费+ 交通费 +洗理费位置:输出到打印机2)名字:教职工编号别名:描述:唯一的标识一个教职工定义:教职工编号=8字符8位置:授课情况登记表3)名字:每个人当月的实发工资数别名:描述:记录每个教师当月应发的工资数定义:每个人当月的实发工资数=课时费+ 岗位津贴- 个人所得税 -住房公积金- 保险费位置:工资明细表4)名字:工资明细表别名:描述:记录每个教职工每个月应得的和应扣除的费用定义:工资明细表=每个人当月的实发工资数 +课时费 +岗位津贴+ 个人所得税+住房公积金+ 保险费位置:输出到打印机4.3 成本效益分析
6、:1.低成本系统:解决方案:把每月发一次工资改为每两个月发一次工资,则人工计算工资的成本大约可减少一半,即每年可节省 1.2 万元。除了已经进行的可行性研究的费用外,不再需要新的投资。优缺点:1) 违反常规;2) 教职工反对;3) 不能解决根本问题,随着学校规模扩大,人工处理工资事务的费用也将成比例地增加。2.中等成本系统:解决方案:1) 建议基本上复制现有系统的功能:课时表和任务表交到处理工资事务的专用机房,操作员把这些数据通过终端送入计算机2) 数据收集程序接收并校核这些事务数据,把它们存储在磁盘上。3) 然后运行工资支付程序,这个程序从磁盘中读取事务数据,计算工资,打印出工资表、工资明细
7、表和财务报表。 优缺点:1) 效率介于高成本系统与低成本系统之间,开发成本也是如此。2) 仍然需要专门人员来操作管理系统,每年仍要在这方面耗费人力,资力。从长久利益来看,效益不佳。3.高成本系统:1) 建立一个中央数据库,为开发完整的管理信息系统做好准备,并且把工资支付系统作为该系统的第一个子系统。2) 这样做开发成本大约将增加到 12 万元,然而从工资支付这项应用中获得的经济效益并不变。最佳方案:综合以上三个系统的优缺点,中成本系统是最适合的。草拟开发计划如下:阶段 需要用的时间(月)可行性研究 0.5需求分析 1.0概要设计 0.5详细设计 1.0实现 2.0总计 5.05.实验总结通过此
8、实验,我了解到了结构化分析的特点和步骤,也对以结构化分析所采用的基本图形工具,比如高层逻辑模型、数据流图数据字典等工具有了一定的了解。实验二 结构化设计实验1.实验目的能够通过结构化分析的结构进行设计,了解设计过程中的模块化原理。2.实验内容在上一次实验已经用结构化分析方法详细地分析了这个工资支付系统,请从结构化分析所得到的结果(完整数据流图) ,判断为事务流或是变换流,采用模块化的方法,设计工资支付系统的结构。最终生成一个工资支付软件结构。3.实验要求写出设计过程、画出工资支付软件结构,用层次图表现4.实验步骤4.1 设计过程1. 供选择的方案1) 低成本系统:把每月发一次工资改为每两个月发
9、一次工资,则人工 计算工资的成本大约可减少一半,即每年可节省 1.2 万元。除了已经进行的可行性研究的费用外,不再需要新的投资。2) 中成本系统:i. 建议基本上复制现有系统的功能:课时表和任务表交到处理工资事务的专用机房,操作员把这些数据通过终端送入计算机ii. 数据收集程序接收并校核这些事务数据,把它们存储在磁盘上。iii. 然后运行工资支付程序,这个程序从磁盘中读取事务数据,计算工资,打印出工资表、工资明细表和财务报表。 3) 高成本系统:建立一个中央数据库,为开发完整的管理信息系统做好准备,并且把工资支付系统作为该系统的第一个子系统。2. 最佳方案低成本系统存在的问题:1)违反常规;2
10、)教职工反对;3)不能解决根本问题,随着学校规模扩大,人工处理工资事务的费用也将成比例地增加。高成本系统:开发成本大约将增加到 12 万元,然而从工资支付这项应用中获得的经济效益并不变。所以,中等成本系统是最佳方案,成本居于高成本与低成本之间,而效益不次于高成本系统。3. 功能分解1) 取数据a) 收集事务数据b) 审核事务数据2) 计算工资a) 计算正常工资b) 计算超额工资c) 更新年度报表3) 打印表格4.2 工资支付软件结构计 算 教 职 工 工 资取 数 据计 算 工 资印 表 格收 集 事 务 数 据审核事务数据计 算 正 常 工 资计 算 超 额 课 时 费更 新 年 度 数 据
11、5.实验总结本次实验室结构化的设计,通过上次的结构化的分析,对结构化设计有了一定的了解,再通过本次结构化的设计,更加深了对结构化设计的理解。实验三 软件测试实验(2 学时)1. 实验目的了解软件测试的基本概念,以及黑盒、白盒测试的基本过程。2. 实验内容a) 设计测试下列函数的测试方案:函数 Search(somearray,size,value)的功能是,在一个整数数组 somearray中搜索一个值为 value 的整数,如果数组中有这个数,则函数值等于该数的下标,否则函数值等于-1。数组的长度由参数 size 指定。假定数组第一个元素的下标为 1。3. 实验要求1 采用黑盒测试的方法,写
12、出相应的测试用例2 用 c 语言实现此函数,并且由此设计白盒测试方案(选做) 。4. 实验步骤1.采用黑盒测试的方法,写出相应的测试用例(假定数组中的值为:5,8,-56,235,-65,449)1)等价划分:a) 有效输入的等价类:一个正整数输入:10预期的输出:-1一个负整数输入:-56预期的输出:3b) 无效输入的等价类:一个非数字符号输入:S输出:错误无效输入一个浮点型数字输入:23.1预期的输入:错误无效的输入若干个空格输入: 预期的输出:错误无效的输入空输入输入:预期的输出:错误没有输入数字和非数字符号的组合输入:5#预期的输出:错误无效的输入负号与最高位数字之间有空格输入:- 5
13、6预期的输出:错误无效的输入c) 合法输入的等价类:在计算机能表示的最小负整数和零之间的负整数。输入:-10000预期的输出:-1零输入:0预期的输出:-1在零和计算机能表示的最大整数之间的正整数输入:10000预期的输出:-1d) 非法输入的等价类: 比计算机能表示的最大正整数还大的正整数。输入:132767预期的输出:错误无效的输入 比计算机能表示的最小负整数还小的负整数。输入:-47561预期的输出:错误无效的输入2)边界值分析: 使输出刚好等于最小的下标输入:5预期的输出:1 使输出刚好等于最大的下标输入:449预期的输出:6 使输出不是数组的下标(这里为-1)输入:500预期的输出:
14、-12.用 c 语言实现此函数,并且由此设计白盒测试方案(选做) 。#includeint Search(int somearray,int size,int value)for(int i=1;i=size;i+)if(sonearrayi=value)return i;return -1; void main()int size=6;int value;int arraysize=5,8,-56,235,-65,449;doprintf(“请输入一个整数:”);scanf(“%d”,while(int(value)!=value);if(int(value)=value)Search(ar
15、ray,size+1,value);开 始输 入 一 个 整 数 v a l u ev a l u e 是 整 数吗 ?S e a r c h ( s o n e A r r a y , s i z e + 1 , v a l u e )是否i n t i = 1i = s i z e 吗 ?是s o n e a r r a y i = = va l u e 吗 ?r e t u r n i是i + +否结 束否1) 语句覆盖:value=8,覆盖路径:abcdefgifghj2) 判定覆盖:Value=8.,覆盖路径: abcdefgifghjValue=8.5,覆盖路径:abckbValu
16、e=10,覆盖路径: abcdefgifk5. 实验总结通过本次实验,对软件测试的一些基本概念有所熟悉,黑盒测试是黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试;白盒测试全面了解程序内部逻辑结构、对所有逻辑路径进行测试。实验四 面向对象分析(2 学时)1.实验目的通过采用面向对象的方法对问题进行分析,建立系统的对象模型和功能模型。动态模型为选作内容。2.实验内容某医生开了一家牙科诊所。他有一个牙科助手、一个牙科保健员和一个接待员。医生需要一个软件系统来管理预约。当病人打电话预约时,接待员将查阅预约登记表,如果病人申请的就诊时间与已定下的预约时间冲突,则接待员
17、建议一个就诊时间以安排病人尽早得到诊治。如果病人同意建议的就诊时间,接待员将输入约定时间和病人的名字。系统将核实病人的名字并提供纪录的病人数据,数据包括病人的病历号等。在每次治疗或清洗后,助手或保健员将标记相应的预约诊治已经完成,如果有必要,安排病人下一次再来。系统能够按病人姓名和日期进行查询,能够显示记录的病人数据和预约信息。接待员可以取消预约,可以打印出前两天预约尚未接诊的病人清单。系统可以从病人记录中获知病人的电话号码。接待员还可以打印出关于所有病人的每天和每周的工作安排。3.实验要求1 建立牙科诊所管理系统的对象模型2 用数据流图建立牙科诊所管理系统的功能模型。3 写出牙科诊所管理系统
18、的脚本(选作) 。4 画出牙科诊所管理系统状态图(选作) 。4.实验步骤1. 建立牙科诊所管理系统的对象模型+ 打 电 话 预 约 ( ) : v o i d+ 是 否 接 受 建 议 ( ) : b o o l- 姓 名 : s t r i n g病 人+ 接 听 电 话 ( ) : v o i d+ 查 阅 预 约 登 记 表 ( ) : b o o l+ 建 议 就 诊 时 间 ( ) : o b j e c t+ 预 约 登 记 ( ) : v o i d+ 取 消 预 约 ( ) : b o o l+ 打 印 预 约 尚 未 接 诊 的 病 人 清 单 ( ) : v o i d+
19、打 印 工 作 安 排 ( ) : v o i d- 姓 名 : s t r i n g接 待 员- 姓 名 : s t r i n g- 预 约 时 间 : o b j e c t- 病 历 号 : i n t预 约 登 记 表11*1+ 核 实 病 人 名 字 ( ) : b o o l+ 提 供 病 人 数 据 ( ) : i n t+ 查 询 预 约 信 息 ( ) : v o i d+ 显 示 信 息 ( ) : v o i d- 病 历 号 : i n t- 病 人 姓 名 : s t r i n g- 预 约 日 期 : o b j e c t- 病 人 联 系 方 式 : s
20、t r i n g诊 所 管 理 系 统*1+ 标 记 预 约 诊 治 已 完 成 ( ) : b o o l+ 安 排 病 人 下 次 会 诊 ( ) : v o i d- 姓 名 : s t r i n g牙 科 助 手+ 标 记 预 约 诊 治 已 完 成 ( ) : b o o l+ 安 排 病 人 下 次 会 诊 ( ) : v o i d- 姓 名 : s t r i n g牙 科 保 健 员 O R 1*1*2. 用数据流图建立牙科诊所管理系统的功能模型。病 人1预 约2 . 1接 收 预约 信 息接 待 员预 约 信 息2 . 2建 议 就诊 时 间D 1 : 预 约 登 记
21、表预 约 信 息就 诊 时 间3同 意 就诊 时 间就 诊 时 间4输 入 约 定 时 间和 病 人 姓 名预 约 系 统5 . 1核 实 病人 姓 名5 . 2提 供 病人 数 据D 1 : 预 约 登 记 表牙 科 助 手牙 科 保 健 员预 约 系 统D 1 : 预 约 登 记 表6 . 1标 记 预 约 诊治 已 完 成6 . 2安 排 病 人下 次 会 诊3. 写出牙科诊所管理系统的脚本(选作) 。4. 画出牙科诊所管理系统状态图(选作) 。预约管理系统的正常情况脚本 系统请接待员输入病人预约信息 系统查询该病人是否已预约过 如果预约过,且时间冲突,提示接待员建议一个合适的时间 病人
22、接受建议的时间or 如果没有预约过,系统提示会诊时间 病人会诊中,系统记录相关病人数据 会诊完毕,系统更改预约信息中预约诊治是否完成信息 系统增加新的预约登记表预约管理系统的异常情况脚本 系统请接待员输入病人预约信息 系统查询该病人是否已预约过 如果预约过,且时间冲突,提示接待员建议一个合适的时间 如果病人接受建议的时间,系统审核输入信息正确与否 输入病人信息有误,提示重新输入 系统审核输入信息正确与否 输入信息正确or 如果没有预约过,系统提示会诊时间 病人会诊中,系统记录相关病人数据 会诊完毕,系统更改预约信息中预约诊治是否完成信息 系统增加新的预约登记表5.实验总结通过采用面向对象的方法对问题进行分析,建立系统的对象模型,通过数据流图建立系统的功能模型。