实验一:项目计划和代码复查.doc_第1页
实验一:项目计划和代码复查.doc_第2页
实验一:项目计划和代码复查.doc_第3页
实验一:项目计划和代码复查.doc_第4页
实验一:项目计划和代码复查.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

广州大学学生实验报告开课学院及实验室:电子信息实验楼416A 2013年 10月 10日学院计算机科学与教育软件学院年级/专业/班软工114班姓名郭焕城学号110100023实验课程名称个人软件过程实验成绩实验项目名称实验一:项目计划和代码复查指导老师陶文正一、实验目的学生使用C语言或C+解决“舞伴配对问题”程序,要求学生按照个人软件过程的规范要求,结合该程序的实际开发过程,来深入理解并运用个人软件过程的基本概念、方法与过程。二、实验环境:PC机1台/1人,VC6.0环境。三、实验要求(1) 编写程序要严格按照C+编程规范进行代码编写;(2) 必须按照个人软件过程的规范要求,真实地采集数据、填写相关的表格、 编写相关的文档;(3) 按照老师的要求,每个人必须独立完成;(4) 按照上机的时间安排进行实验,实验课结束后提交相关的文档和实验报告。四、实验内容 舞伴配对问题 假设在周末舞会上,男士和女士进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。 输入、输出方法自行设计,要易于操作、不易死机。解决的思路:创建两个循环队列,分别表示男舞伴队列和女舞伴队列。然后同时让两队列出队,从而进行男女配对形成舞伴。算法思想:采用数据结构学过的队列知识,通过数组创建循环链表,并且把出队后的元素重新入队,实现下一轮配对。五、实验步骤 1 准备阶段实验要求需要准备好以下表格:(1) 程序规模估计表。 (2)时间记录日志;(3) 缺陷记录日志(4)代码复查检查表;(5) 项目计划总结表; 2 计划、设计阶段:进行设计,完成设计文档,填写记录日志(见表表格) 程序规模估计表 学生郭焕城日期2013.9.20-2013.9.29教员陶文正课程 个人软件过程 程序代码行以前的功能估计的功能最小/min平均/min最大/minvoid initqueue()4初试化队列初始化舞者队列 3915bool en_queue()7元素入队列参加跳舞的人入队202020bool out_queue ()5删除队列元素跳舞的人出列233649void GetHead ()5取出队首元素取出队列里的第一人131619void Peidui ()60 /配对舞伴3580125int main()15/调用以上各个函数,实现程序功能567估计96/99 1672353 编码阶段:编码实现,调试程序,填写时间记录日志(实验源代码附后)时间记录日志学生 郭焕城日期2013.9.12-2013.9.29教员陶文正课程个人软件过程 日 期开始时间中断时间 (min)结束时间净时间(min)活动备注CU2013.9.12 四10:455+1012:0060计划阅读C+,熟悉程序语言2013.9.14 六20:005+1521:3070设计设计基本的算法思路2013.9.16 一14:002+5+415:0049编程 中断:闲聊2013.9.19 四21:30+3022:3030编程 中断:洗澡2013.9.22 日19:30+220:3058代码复查 中断:打电话2013.9.24 二15:00+2+1516:0043编译 中断:外出2013.9.26 四10:40+511:3045测试 中断:课间休息2013.9.28 六15:00+1516:0045测试 中断: 休闲2013.9.29 日21:30+3+1522:3042后置处理 中断:吃宵夜4、 代码复查:填写代码复查表,时间记录日志,缺陷日志(见表格)目的指导你进行有效的代码复查1234累计累计%一般性说明在完成每个复查步骤之后,将发现的某个类型的缺陷的个数记录在右边的栏目中。如果该步骤没有发现缺陷,就在右边的栏目中打个表示检查无误的叉号()。在开始复查下一个程序之前,要按照检查表完整对程序、类、对象或方法的检查。/ / 完整性验证设计的所有功能都已经编码。 / /Includes验证Include语句是完全的。 / /初始化检查变量和参数的初始化: 在程序的开始; 在每个循环的开始; 在函数/过程的入口。 1 5%调用检查函数调用的格式: 指针; 阐述; “”的使用。 314% 名字检查名字的拼写和使用: 是否前后一致? 是否在说明的作用域之内? 结构和类中变量的引用是否使用了“.”。 2 10%字符串检查所有的字符串: 使用指针来表示的; 是以Null结尾的。 / /指针检查所有的指针: 是初始化为Null; 是有在New(新建)之后才Delete(删除); 在New并使用之后要删除。 15% 输出格式检查输出格式: 换行是否合适; 间隔是否合适。 15% 对保证检查是适当的并且是成对的。 2 10% 逻辑操作符验证,|逻辑操作符的使用是合适的;检查每个逻辑函数的()是合适的。 15% 逐行检查检查每一行代码: 指令的语法是否正确? 标点是否正确? 符号是否正确? 314% 标准保证所有代码符合编码标准。 629% 文件的打开与关闭验证所有的文件: 是合适的声明的; 是合适的打开的; 是合适的关闭的。 / /全面检查对整个程序进行全面的检查已发现系统问题和非期望的问题。/ 2 10%总计 21100 %5、 编译、测试阶段:编译、调试代码,时间记录日志,缺陷日志(见表格)缺陷记录日志学生郭焕城日期2013.9.12-2013.9.29教员陶文正课程个人软件过程 日 期编号类型引入阶段排除阶段修复时间/min相关缺陷2013.9.12 四 1初试化编码代码复查3 预编译时头文件发生错误,加上#include即可 2013.9.14 六 2对编码代码复查6 部分没有成对出现,导致输出出错。2013.9.14 六 3输出格式编码代码复查3 输出内容混乱,界面不够整洁,调整后,输出满意的结果。2013.9.14 六 4调用编码代码复查15 调用的语法不是很规范,出现错误。2013.9.24 六 5逐行检查编码代码复查60 出现算法上的错误,队列的指针指向错误 6、总结表 PSP项目计划总结表学生 郭焕城 日期 2013年09月29日 程序 舞伴配对 程序号# 教师 陶文正 程序设计语言 C语言和C+ 总结 计划 实际 累计 Minutes/LOC 0.87 1.03 LOC/Hour 350min 442min Defects/KLOC 过程效益 A/FR 程序规模(LOC) 新开发与更改的 150 250 最大规模 300 最小规模 200 开发阶段时间/min 计划 实际 累计 累计百分比 计划 15 45 设计 30 40 编码 80 150 代码复查 20 25 编译 5 18 测试 100 130 后置处理 10 34 总计 325 442 最大时间 70 最小时间 30 引入的缺陷 计划 实际 累计 累计百分比 Def/Hour 计划 0 0 设计 0 3 编码 1 6 代码复查 3 0 编译 2 7 测试 3 0 总计 10 16 排除的缺陷 计划 实际 累计 累计百分比 Def/Hour 计划 0 1 设计 1 2 编码 3 4 代码复查 4 3 编译 2 4 测试 0 7 总计 10 21 六、实验总结与体会 随着软件工程知识的普及,软件工程师都知道,要开发高质量的软件,必须改进软件生产的过程。目前,业界公认由CMU/SEI开发的软件能力成熟度模型SW-CMM是当前最好的软件过程,并且CMM已经成为事实上的软件过程工业标准。但是,CMM虽然提供了一个有力的软件过程改进框架,却只告诉我们应该做什么,而没有告诉我们应该怎样做,并未提供有关实现关键过程域所需要的具体知识和技能。为了弥补这个欠缺,Humphrey又主持开发了个体软件过程(Personal Software Process,PSP)。开发成本的70%取决于软件开发人员个人的技能、经验和工作习惯。因此,一个单位的软件开发人员如能接受PSP培训,对该单位软件能力成熟度的升级是一个有力的保证。CMM侧重于软件企业中有关软件过程的宏观管理,面向软件开发单位,PSP则侧重于企业中有关软件过程的微观优化,面向软件开发人员。二者互相支持,互相补充,缺一不可。按照PSP规程,改进软件过程的步骤首先需要明确质量目标,也就是软件将要在功能和性能上满足的要求和用户潜在的需求。接着就是度量产品质量,有了目标还不行,目标只是一个原则性的东西,还不便于实际操作和判断,因此,必须对目标进行分解和度量,使软件质量能够测量。然后就是理解当前过程,查找问题,并对过程进行调整。最后应用调整后的过程,度量实践结果,将结果与目标做比较,找出差距,分析原因,对软件过程进行持续改进。就象CMM为软件企业的能力提供一个阶梯式的进化框架一样,PSP为个体的能力也提供了一个阶梯式的进化框架,以循序渐进的方法介绍过程的概念,每一级别都包含了更低一级别中的所有元素,并增加了新的元素。这个进化框架是学习PSP过程基本概念的好方法,它赋予软件人员度量和分析工具,使其清楚地认识到自己的表现和潜力,从而可以提高自己的技能和水平。附:程序源代码#include using namespace std;typedef struct Queue/定义队列结构类型int * pBase;int front;/数组第一个元素下标值int rear;QUEUE;/QUEUE等价于struct Queue.void initqueue(QUEUE *pQ)/队列初始化,建立一个空队列pQ-pBase= (int *)malloc(sizeof(int)*1000); pQ-front=pQ-rear=0;bool en_queue(QUEUE *pQ,int val)/入队操作 if (pQ-rear+1)%100=pQ-front)/判断队满 return false; else pQ-rear=(pQ-rear+1)%1000;/下标移向后一位 pQ-pBasepQ-rear=val; return true; bool out_queue(QUEUE * pQ,int *pStr)/出队操作if(pQ-front=pQ-rear)/判断队空return false;else pQ-front=(pQ-front+1)%1000; *pStr=pQ-pBasepQ-front; return true;void GetHead(QUEUE *pQ,int *str)/取队首元素 if (pQ-front!=pQ-rear) *str=pQ-pBasepQ-front+1; void Peidui(QUEUE *Qboy,QUEUE *Qgirl)/舞伴配对实现 int a,boy,girl,str; int i,j,k,m,n,ls; cout请输入男舞伴人数:m; cout请输入男舞伴的号码:endl; for (i=0;ia; en_queue(Qboy,a);cout请输入女舞伴人数:n; cout请输入女舞伴的号码:endl; for (i=0;ia; en_queue(Qgirl,a);cout请输入舞会轮数:ls;if (mn) k=m;else k=n;for(i=0;ils;i+) /输出配对情况,并把出队的男舞伴和女舞伴重新入队 cout第i+1轮配对如下:endl; for (j=0;jk;j+) out_queue(Qboy,&boy); out_queue(Qgirl,&girl); cout男

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论