软件工程导论实验报告
2011-2012 ( 2 ) 《软件工程导论》实 验报告
学院: 计算机学院
班级: 软件工程班
姓名:
学号:
实验一:项目计划、分析和设计 [ 实验日期 ] [ 实验目的 ] 初步了解结构化分析、设计方法的原理、步骤以及 各阶段的文档, 练习撰写简要的需求文档、 设计文档。 [ 实验内容 ]通讯录管理程序 [ 实验原理和步骤 ] 层数据流图 [ 实验结果 ] 说明:main()函数打开通讯录 Menu()函数选择要操作的功能 Load()函数读取文件内容到通讯录 List()函数显示通讯录中的内容 App 函数添加记录到通讯录 Search 函数按姓名查找 Dele 函数删除记录 Save 函数保存记录 结构化分析(SA) 分 面向数据流分析(DFA)的设计方法 2013 年 5 月 8 日
Sort 函数按姓名排序 各函数流程图如下
主函数
Switch 功能
打 开 函 数
显 示 通 讯 录 内 容
添 加 记 录
查 找 函 数
删 除 函 数
排 序 函 数
保 存 到 通 讯 录
显 示 函 数
保 存 函 数
添加记录:
开 始
是
输入联系人的 姓名,电话, 地址,群组
是否继续添加 否
返回主菜单
3>查找函数:
开 始
输出:选择何 种方式查找
输入方式
是 按姓名查找 按电话查找 按群组查找
联系人是否存 在
是
没有该相关信 息
输出查找到的 所以信息
返回主菜单
删除函数:
开 始
输入要删除联 系人的姓名
否 联系人是否存 在 没有该联系人
是
成功删除!
返回主菜单
排序函数:
开 始
按姓名排序
是否显示
是
排序后结果!
否
返回主菜单
保存函数:
开 始
是
联系人是 否为 0 个
否
没有信息可保存
写入信息
信息保存成功
返回主菜单
显示函数:
开 始
选择何种方式 显示!
输入方式
直接输出!
分类输出!
返回主菜单
[ 实验总结 ] 规划一个软件系统,要考虑好每一步要做什么, 各个方面都要得到深入的了解;并自己要把握好每一 步,不能马虎。正确分配好每一步,每个过程,就像 规划人生一样,完成每个步骤,这样可以让我们更加 清楚的知道我们在做什么、应该怎么做、 、 、 、 、
实验二:编码 [ 实验日期 ] 2013 年 5
月
8 日
[ 实验目的 ] 培养良好的编码风格。 [ 实验内容 ] 根据详细设计的结果,按结构化思想编 写代码,并对程序进行注释。 [ 实验原理和步骤 ] 编码风格强调“清晰易读”而不是个人 技巧。请注意变量或函数的名字要有意义, 表达式和语句要一目了然,排版风格、循环 语句风格要保持一致,函数宏的定义,常数 的定义,注释要全面。 注释包括序言性注释、函数模块注释 和程序语句注释。 [ 实验报告要求 ] //用数组实现的简单通讯录 #include #include #define
SIZE 80 struct record {
int num; char name[9]; int age; char tel[13],email[20],addr[20],zip[7]; }rec[SIZE]; int i,m=0; //m 为当前通讯录中的 记录数 char menu(); //选单 void load(); //读入 void list(); //显示 void app(); //添加 void search(); //查找 void dele(); //删除 void save(); //保存 void sort(); //排序 //************************************ ********** main() { char choice; while(1) {
choice = menu(); switch(choice) { case'1':printf(rec[m].addr,rec[m].zip); m++; puts(缺 陷。 [ 实验报告要求 ]
代码复查检查表
一般性说明: 在完成每个复查步骤之后 ,将发现 的某个类型的缺陷的个数记录在右面的栏目中。 如果该步骤没有发现缺陷 ,就在右面的栏目中打 个表示检查无误的交叉符号(X)。在开始复查下 一个程序单元之前 , 要按照检查表完成对程序 , 类,对象或方法的检查 检 查 # # # # 累 累 内容 计 计% 数 完 整 验证设计的所有功
性 Includ es 初 始 化
调用
名字
能都已经编码 验证 Include 语句是 完全的 检查变量和参数的 初始化: 在程序的开 始; 在每个循环 的开始; 在函数 / 过程 的入口 检查函数调用的格 式: 指针; 参数; „&‟ 的使用 检查名字的拼写和 使用: 是否前后一 致? 是否在说明 的作用域之内?
XXXX XXXX XXXX
XXXX
1 X XX 1
25%
结构和类中 变量的引用是否 使用了‟.‟ 字 符 检查所有的字符串: 串 是 用 指 针 来 XXXX 标识的; 是 以 NULL 结尾的 指针 检查所有的指针: 是 初 始 化 为 X XXX NULL; 只 有 在 New( 新建 ) 之后才 Delete(删除); 在 New 并使 用之后要删除 输 出 检查输出格式: 格式 换 行 是 否 合 XXXX 适? 间隔是否合 适? { }对 保证检查 { } 是适当
逻 辑 操 作 符
逐 行 检查
标准 文 件 的 打 开 与 关闭
全 面 检查
的而且是成对的 验证= =, =, || 等逻 辑操作符的使用是 合适的。检查每个逻 辑函数的 ( ) 是合适 的 检查每一行代码: 指令的语法 是否正确? 标点是否正 确符号是否正确? 保证所有代码符合 编码标准 验证所有的文件: 是合适地声 明的; 是合适地打 开的; 是合适地关 闭的 对整个程序进行全 面的检查以发现系
2 XXX 2 XXXX
50%
XX2 1 3
75%
XXX1 1 XXXX
25%
XXXX
统问题和非期望的 问题 总计 2 X2 2 6 缺陷类型
缺陷记录日志 缺陷记录日志 学生
日期
2013/5/8 程 序 教员 号 引 入排 除修 复相 关 日 期编号 类型 阶段 阶段 时间 缺陷 语 5/4 20 法 编码 复查 7min 在一开始时定义 record 结构体时错 将 num 写成 mnu 以至后面很多错误 接 5/4 50 口 编码 复查 5min 从 list 函数开始之后有很多 printf 语 句, 在输出类型的编码中多次将 d 编 为 D,还有便是忘掉了“%” 函 5/4 80 数 编码 复查 2min 在编码过程中,对于一些函数的定 义名时常写错
[ 实验总结 ] ① 对重点实验结果进行分析;比如自己 总查不出哪种错误 ② 实验中的问题和提高:对老师或自己 的编码进行评价,指出合理和不足之处, 提出改进的方案。 ③ 收获与体会:
代码复查是一次程序与程 序员之间的交流。通过对代码风
格与规范的审查,可 以大大提高代码的可读性与可维护性。现在的软件, 往往需要持续的维护与升级。代码复查是一种鞭策, 因为它的存在,督促着开发人员自觉地规范编码,养 成好的编码习惯,提高代码质量。
实验四:项目测试总结 [ 实验日期 ] 2013 年 5 月 8 日 [ 实验目的 ] 测试程序,总结缺陷数据。 [ 实验内容 ] 填写测试表,填写缺陷分析表 [ 实验原理和步骤 ] 按等价类+边界值设计测试数据,并 记录测试结果;填写缺陷分析表并按类型排
序. [ 实验报告要求 ] 测试表 测试 功能 登陆 通讯 录 添加 记录 查找 缺陷分析表 类 引入的缺陷 型 设 编 其 计 码 他 20 10 4 排出的缺陷 复查中 漏过的 缺陷 复 编 测 查 译 试 10 2
预 期 实际结 结果 果 成功 成功
成功 成功
成功 成功
30 50 60 80 90
4 2
5 3
9 4
1 1
1 3 2
[ 实验总结 ] ① 对重点实验结果进行分析; ② 实验中的问题和提高:对老师或自己的编码进行 评价,指出合理和不足之处,提出改进的方案。 ③ 收获与体会: 通过这次的编码,我认识到了很多的事情。首先编 码不是想象的那么简单的,它很是考验人的耐心, 心浮气躁的很容易犯一些小错误:如: for(“i=0;i