实验二结构化设计实验
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); }