软件工程实验(四个实验)

更新时间:2023-10-12 09:59:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

武汉轻工大学

软件工程实验报告

院系:数学和计算机学院 班级:软件工程1504 姓名:赵佳璐 学号:1508100065

实验一结构化分析实验

1实验目的:

通过此实验了解结构化分析的特点和步骤,以及结构化分析所采用的基本图形工具。

2.实验内容:

假设你在一所职业高中工作,负责该校信息系统的建设和维护。财务科长请你研究用学校拥有的pc机生成工资明细表和各种财务报表的可能性。

3.实验要求:

1. 问题定义:请在这个阶段描述你需要解决的问题。包括用户面临的问题和预期的项目规模。最后生成一份问题定义报告书。 2. 可行性研究:在这个阶段产生处理工资事务的大致过程,画出高层逻辑模型,并且画出相应的数据流图,建立数据字典。 3. 对此系统进行成本效益分析。

4.实验步骤: 4.1问题定义报告书

1.项目名称:工资支付 2.问题描述:

该校一直由会计人工计算工资并编制财务报表,随着学校规模扩大工作量也越来越大。目前每个月都需要两名会计紧张工作半个月才能完成,不仅效率低而且成本高。今后学校规模将进一步扩大,人工计算工资的成本还会进一步提高。 3.项目目标:

1) 研究开发费用较低的新工资支付系统的可能性。 4项目规模:

1) 开发成本应该不超过7.2万元 5.初步设想:

1) 用学校自己的计算机系统生成工资明细表和财务报表 6.可行性研究:

为了更全面地研究工资支付项目的可能性,建议进行大约历时两周的可行性研究。这个研究的成本不超过4000元。

4.2可行性研究:

1.处理工资事务的大致过程 :

1) 每月月末教师把他们当月实际授课时数登记在课时表上,由各系汇总后交给

财务科,职工把他们当月完成承包任务的情况登记在任务表上,汇总后交给财务科。

2) 两名会计根据这些原始数据计算每名教职工的工资,编制工资表、工资明细

表和财务报表。然后,把记有每名教职工工资总额的工资表报送银行。 3) 由银行把钱打到每名教职工的工资存折上,同时把工资明细表发给每名教职

工。

2高层逻辑模型:

D1:课时表和任务表事务数据会计1.1审核数据D1.2加工事务数据事务数据2汇总数据事务数据银行D2:工资明细表D2:财务报表

3.数据流图:

3分发工资明细表D1:课时表授课时数职工教师D3:工资表3发工资D4:工资明细表职工教师1.1登记1.2汇总课时表任务表2.12.2编制表格计算工资银行承包任务完成情况D2:任务表 D5:财务报表

4.数据字典: 1)

名字:授课情况登记表 别名:

描述:记录每个教师的当月完成的课时及任务。

定义:授课情况登记表=教职工编号+姓名+职务+职称+基本工资+生活补贴+

书报费+交通费+洗理费

位置:输出到打印机 2)

名字:教职工编号 别名:

描述:唯一的标识一个教职工 定义:教职工编号=8{字符}8 位置:授课情况登记表 3)

名字:每个人当月的实发工资数 别名:

描述:记录每个教师当月应发的工资数 定义:每个人当月的实发工资数=课时费+岗位津贴-个人所得税-住房公积金-保险费 位置:工资明细表 4)

名字:工资明细表 别名:

描述:记录每个教职工每个月应得的和应扣除的费用

定义:工资明细表=每个人当月的实发工资数+课时费+岗位津贴+个人所得税+住

房公积金+保险费

位置:输出到打印机

4.3成本效益分析:

1.低成本系统:

解决方案:

把每月发一次工资改为每两个月发一次工资,则人工计算工资的成本大约可减少一半,即每年可节省1.2万元。除了已经进行的可行性研究的费用外,不再需要新的投资。

优缺点:

1) 违反常规; 2) 教职工反对;

3) 不能解决根本问题,随着学校规模扩大,人工处理工资事务的费用也将成比例地增加。 2.中等成本系统: 解决方案:

1) 建议基本上复制现有系统的功能:课时表和任务表交到处理工资事务的专用

机房,操作员把这些数据通过终端送入计算机

2) 数据收集程序接收并校核这些事务数据,把它们存储在磁盘上。

3) 然后运行工资支付程序,这个程序从磁盘中读取事务数据,计算工资,打印

出工资表、工资明细表和财务报表。

优缺点:

1) 效率介于高成本系统与低成本系统之间,开发成本也是如此。

2) 仍然需要专门人员来操作管理系统,每年仍要在这方面耗费人力,资力。从长久利益来

看,效益不佳。 3.高成本系统:

1) 建立一个中央数据库,为开发完整的管理信息系统做好准备,并且把工资支

付系统作为该系统的第一个子系统。

2) 这样做开发成本大约将增加到12万元,然而从工资支付这项应用中获得的

经济效益并不变。

最佳方案:

综合以上三个系统的优缺点,中成本系统是最适合的。草拟开发计划如下: 阶段 可行性研究 需求分析 概要设计 详细设计 实现 总计 需要用的时间(月) 0.5 1.0 0.5 1.0 2.0 5.0

实验二结构化设计实验

1.实验目的:

能够通过结构化分析的结构进行设计,了解设计过程中的模块化原理。

2.实验内容:

在上一次实验已经用结构化分析方法详细地分析了这个工资支付系统,请从结构化分析所得到的结果(完整数据流图),判断为事务流或是变换流,采用模块化的方法,设计工资支付系统的结构。最终生成一个工资支付软件结构。

3.实验要求:

写出设计过程、画出工资支付软件结构,用层次图表现

4.实验步骤: 4.1设计过程:

1. 供选择的方案

1) 低成本系统:把每月发一次工资改为每两个月发一次工资,则人工计算

工资的成本大约可减少一半,即每年可节省1.2万元。除了已经进行的可行性研究的费用外,不再需要新的投资。 2) 中成本系统:

i. 建议基本上复制现有系统的功能:课时表和任务表交到处理工资事

务的专用机房,操作员把这些数据通过终端送入计算机

ii. 数据收集程序接收并校核这些事务数据,把它们存储在磁盘上。 iii. 然后运行工资支付程序,这个程序从磁盘中读取事务数据,计算工

资,打印出工资表、工资明细表和财务报表。

3) 高成本系统:建立一个中央数据库,为开发完整的管理信息系统做好准

备,并且把工资支付系统作为该系统的第一个子系统。

2. 最佳方案

低成本系统存在的问题: 4) 违反常规; 5) 教职工反对;

6) 不能解决根本问题,随着学校规模扩大,人工处理工资事务的费用也将

成比例地增加。 高成本系统:

开发成本大约将增加到12万元,然而从工资支付这项应用中获得的经济效益并不变。

所以,中等成本系统是最佳方案,成本居于高成本与低成本之间,而效益不次于高成本系统。 3. 功能分解

1) 取数据

a) 收集事务数据 b) 审核事务数据 2) 计算工资

a) 计算正常工资 b) 计算超额工资 c) 更新年度报表 3) 打印表格

4.2工资支付软件结构:

计算教职工工资 取数据 计算工资 印表格 收集事务数据 审核事务数据 计算正常工资 计算超额课时费 更新年度数据

实验三软件测试实验(2学时)

一、 实验目的:

了解软件测试的基本概念,以及黑盒、白盒测试的基本过程。

二、 实验内容:

1. 设计测试下列函数的测试方案:

函数Search(somearray,size,value)的功能是,在一个整数数组somearray中搜索一个值为value的整数,如果数组中有这个数,则函数值等于该数的下标,否则函数值等于-1。数组的长度由参数size指定。假定数组第一个元素的下标为1。

三、 实验要求

1. 采用黑盒测试的方法,写出相应的测试用例

2. 用c语言实现此函数,并且由此设计白盒测试方案(选做)。

四、 实验步骤:

1. 采用黑盒测试的方法,写出相应的测试用例(假定数组中的值为:5,

8,-56,235,-65,449)

1)

等价划分:

a) 有效输入的等价类:

?一个正整数 输入:10

预期的输出:-1 ?一个负整数 输入:-56

预期的输出:3

b) 无效输入的等价类:

?一个非数字符号 输入:S

输出:错误——无效输入 ?一个浮点型数字 输入:23.1

预期的输入:错误——无效的输入 ?若干个空格 输入:‘’

预期的输出:错误——无效的输入 ?空输入 输入:

预期的输出:错误——没有输入 ?数字和非数字符号的组合 输入:5#

预期的输出:错误——无效的输入 ?负号与最高位数字之间有空格 输入:- 56

预期的输出:错误——无效的输入

c) 合法输入的等价类:

?在计算机能表示的最小负整数和零之间的负整数。 输入:-10000 预期的输出:-1 ?零

输入:0

预期的输出:-1

?在零和计算机能表示的最大整数之间的正整数 输入:10000 预期的输出:-1

d) 非法输入的等价类:

?比计算机能表示的最大正整数还大的正整数。 输入:132767

预期的输出:错误——无效的输入

?比计算机能表示的最小负整数还小的负整数。 输入:-47561

预期的输出:错误——无效的输入

2) 边界值分析:

?使输出刚好等于最小的下标 输入:5

预期的输出:1

?使输出刚好等于最大的下标 输入:449 预期的输出:6

?使输出不是数组的下标(这里为-1) 输入:500

预期的输出:-1

2. 用c语言实现此函数,并且由此设计白盒测试方案(选做)。

#include

intSearch(intsomearray[],intsize,int value) {

for(inti=1;i<=size;i++) {

if(sonearray[i]==value) return i; }

return -1; }

void main() {

int size=6; int value; int array[size]={5,8,-56,235,-65,449}; do{

printf(“请输入一个整数:”); scanf(“%d”,&value);

}while(int(value)!=value); if(int(value)==value)

Search(array,size+1,value); }

本文来源:https://www.bwwdw.com/article/1cqf.html

Top