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