软件工程导论实验指导书实验一项目计划分析和设计.docx

上传人:b****2 文档编号:2577507 上传时间:2023-05-04 格式:DOCX 页数:9 大小:195.84KB
下载 相关 举报
软件工程导论实验指导书实验一项目计划分析和设计.docx_第1页
第1页 / 共9页
软件工程导论实验指导书实验一项目计划分析和设计.docx_第2页
第2页 / 共9页
软件工程导论实验指导书实验一项目计划分析和设计.docx_第3页
第3页 / 共9页
软件工程导论实验指导书实验一项目计划分析和设计.docx_第4页
第4页 / 共9页
软件工程导论实验指导书实验一项目计划分析和设计.docx_第5页
第5页 / 共9页
软件工程导论实验指导书实验一项目计划分析和设计.docx_第6页
第6页 / 共9页
软件工程导论实验指导书实验一项目计划分析和设计.docx_第7页
第7页 / 共9页
软件工程导论实验指导书实验一项目计划分析和设计.docx_第8页
第8页 / 共9页
软件工程导论实验指导书实验一项目计划分析和设计.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

软件工程导论实验指导书实验一项目计划分析和设计.docx

《软件工程导论实验指导书实验一项目计划分析和设计.docx》由会员分享,可在线阅读,更多相关《软件工程导论实验指导书实验一项目计划分析和设计.docx(9页珍藏版)》请在冰点文库上搜索。

软件工程导论实验指导书实验一项目计划分析和设计.docx

软件工程导论实验指导书实验一项目计划分析和设计

实验一:

项目计划、分析和设计

[实验日期]2010年6月8日

[实验目的]

初步了解结构化分析、设计方法的原理、步骤以及各阶段的文档,练习撰写简要的需求文档、项目计划表、设计文档。

本程序实现的主要技巧在二维数组的应用上。

目的是通过游戏程序增加编程的兴趣,提高编程水平。

[实验内容]

根据编写贪吃蛇程序,掌握软件工程思想及要领,进一步巩固编程思想和掌握画图函数底层,依据项目可行性研究的结果,进行需求分析和设计,编写简要的需求规格说明书,绘制程序流程图。

[实验原理和步骤]

当前的建模方法主要有传统的结构化分析、设计方法(SA/D)和面向对象分析、设计方法(OOA/D)两种,以下只对SA/D进行说明。

分析阶段:

结构化分析(SA)是一种建模技术,它通过一定方法帮助开发人员定义系统需要什么功能,系统需要存储和使用哪些数据,以及为完成这些功能,系统需要什么样的输入和输出以及如何把这些功能结合在一起来完成任务。

结构化分析方法的实质是采用一组分层数据流图及相应的数据字典作为系统的模型,从总体来看是一种强烈依赖数据流图的自顶向下的建模方法。

由事件列表、数据流图、实体关系图、数据流定义、数据字典、结构化英语、状态转换图等最终构成系统的分析模型。

分析阶段的重要文档有《可行性研究报告》、《项目计划》和《需求规格说明》。

设计阶段:

分总体设计和详细设计两阶段。

总体设计阶段的任务主要是确定系统由哪些模块组成,以及这些模块之间的相互关系;详细设计阶段的任务主要是设计每个模块的处理过程。

总体设计又称为概要设计或初步设计,它的基本目的就是回答“概括地说,系统应该如何实现?

”这个问题。

总体设计通常由系统设计和结构设计两个阶段组成。

系统设计阶段确定一个合理的、具体的实现方案;结构设计阶段确定软件的结构,即确定系统由哪些模块组成,以及这些模块之间的相互关系。

常用的结构化设计(SD)方法有面向数据流分析(DFA)的设计方法和面向数据的设计方法【如Jackson方法(JSD)和逻辑构造程序方法(LCP)(一般用于详细设计)】。

DFA方法以数据流图为基础,它定义了把DFD(变换型数据流,事务型数据流及混合型)变换成软件结构图(SC)的不同映射方法。

DFA设计技术实施的通用步骤:

(1)复查并精化DFD;

(2)确定DFD类型;(3)把DFD映射到系统模块结构,设计出模块结构的上层;(4)基于DFD逐步分解高层模块,设计出下层模块〈初步结构〉;(5)根据模块独立性原理,精化模块结构,得到更为合理的软件结构;(6)模块接口描述;(7)修改和补充数据词典;(8)制定测试计划。

详细设计阶段的任务主要是确定每个模块的处理过程,包括

(1)确定每个模块的算法。

(2)确定每一个模块的数据组织。

(3)为每个模块设计一组测试用例。

(4)编写详细设计说明书。

详细设计阶段采用的方法是结构化程序设计(SP),与SA,SD方法衔接。

目标是给出可以直接用以编码的程序逻辑结构,强调清晰第一。

具体步骤是:

准备项目计划表、代码复查检查表、时间记录日志、缺陷记录日志等表格;程序功能陈述,完成需求文档;填写项目计划表;完成设计文档,填写时间记录日志。

[实验报告要求]

一、需求规格说明书

1、引言

1.1编写目的

为明确软件需求、安排项目规划与进度、组织软件开发与测试,进一步定制软件开发的细节问题撰写此文档,以使本软件开发更为具体,明确,使开发人员更为方便,也便于以后软件的维护。

本文档面向的读者主要是委托单位的管理人员、项目经理以及开发人员和维护人员。

1.2背景

待开发的系统软件是一款名叫贪吃蛇的小游戏,这款游戏是你叫简单、大家比较喜爱的小游戏,该软件的实现对运行的环境较为宽松,该游戏的提出者与实现者为李东,面向对象为广大玩家。

1.3定义

SA/D:

结构化分析设计方法

OOA/D:

面向对象分析设计方法

SA:

结构化分析

SD:

结构化设计

DFA:

面向数据流分析

DFD:

变换型数据流,事务型数据流及混合型

SC:

软件结构图

SP:

结构化程序设计

贪吃蛇程序:

贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物则表示食物被蛇吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体,游戏结束。

1.4参考资料

《个体软件过程》、《软件设计文档国家标准》

2任务概述

2.1目标

本程序实现的主要技巧在二维数组的应用上。

目的是通过游戏程序增加编程的兴趣,提高编程水平。

通过对游戏的编写以及对游戏的实际操作,提高大家对编程的兴趣与欲望,让大家在玩的过程中领悟编程思想。

2.2用户特点

该小游戏适合各年龄阶层,可以说是老少皆宜,但要求有一定的C语言基础,一边在玩的时候,领悟其中的编程思想。

2.3假定和约束

本程序开发期限为2010/6/5,开发经费基本为零。

IPO图

二、详细设计说明书

1、引言

1.1编写目的

为明确软件需求、安排项目规划与进度、组织软件开发与测试,进一步定制软件开发的细节问题撰写此文档,以使本软件开发更为具体,明确,使开发人员更为方便,也便于以后软件的维护。

本文档面向的读者主要是委托单位的管理人员、项目经理以及开发人员和维护人员。

1.2背景

待开发的系统软件是一款名叫贪吃蛇的小游戏,这款游戏是你叫简单、大家比较喜爱的小游戏,该软件的实现对运行的环境较为宽松,该游戏的提出者与实现者为李东,面向对象为广大玩家。

1.3定义

贪吃蛇程序:

贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物则表示食物被蛇吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体,游戏结束。

1.4参考资料

《个体软件过程》、《软件设计文档国家标准》

2、设计思路

这个程序的关键点是表示蛇的图形以及蛇的移动。

用一个小矩形块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。

移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。

如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时,由于没有清屏的原因,原来蛇的位置和新蛇的位置差一个单位,所以看起来蛇会多一节身体,所以将蛇的最后一节用背景色覆盖。

食物的出现和消失也是画矩形块和覆盖矩形块。

为了便于理解,定义了两个结构体:

食物和蛇。

2.1.数据结构

   表示食物和蛇的矩形块都设计为10×10个像素单位,食物的基本数据域为它所出现的位置,用x和y坐标表示,则矩形块用函数rectangle(x,y,x+10,y+10)或rectangle(x,y,x+l0,y-10)可以画出。

由于每次只出现一个食物,而食物被吃掉后,才出现下一个食物,所以设定yes表示是否要出现食物的变量。

蛇的一节身体为一个矩形块,这样表示每个矩形块只需起点坐标x和y。

身体是不断增长的,所以用数组存放每一节的坐标,最大设定为N=200,node表示当前节数。

另外还需要保存蛇移动方向的变量direction和表示生命的变量life,一旦life为1,则蛇死,游戏结束。

所以程序功能的实现就是数组的操作。

   #defineN200

   struct Food   

   {

    intx;   /*食物的横坐标*/

    inty;   /*食物的纵坐标*/

    intyes; /*判断是否要出现食物的变量*/

}food;   /*食物的结构体*/

structSnake

{intx[N]; /*蛇的横坐标*/

inty[N];/*蛇的纵坐标*/

     intnode;/*蛇的节数*/

     intdirection;/*蛇的移动方向*/

intlife;   /*蛇的生命,0活着,1死亡*/

}snake;

2.2.main()主函数

   主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数DrawK()画出开始画面,调用函数GamePlay(),即玩游戏的具体过程,游戏结束后调用Close()关闭图形系统,结束程序。

  2.3.画界面函数DrawK()

   主界面就是一个密封的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的宽度和高度均为10个单位的矩形小方块,围成密闭图形,表示围墙,为了醒目,设置为淡青颜色,用函数setlinestyle(SOLID_LINE,0,THICK_WIDTH)设置线型宽度为3个像素。

设置3个像素的围墙线,蛇在贴墙走的时候,会擦掉部分围墙线,使线变细,图形变得不好看,如果不想这种情况出现,则将线型宽度设置为1个像素。

2.4.游戏具体过程函数GamePlay()

   这个函数是游戏的主要部分,难点在表示蛇的新位置并消除前一次的图形。

采用的方法是每次移动的时候从最后一节开始到倒数第二节(因蛇头为两节),将前一节的坐标赋值给后一节的坐标,移动后只要把最后一节用背景色去除即可,因为新位置0到n-l节还是要出现在画面上的。

然后蛇头按照方向键来更改位置。

另外,食物的随机出现要确保它的位置在10的倍数位置上,因为蛇的坐标都是以10为模的,这样的话就可以让蛇吃到,蛇吃到食物的判断是蛇头的坐标和食物的坐标相等。

   其算法过程为:

   

(1)设置初始值。

为防止食物总出现在一个位置上,要设置随机数发生器,真正产生随机数。

初始时,蛇只有蛇头,设定一个开始的方向。

2)循环执行,直到按Esc键退出。

1)没有按键的情况下,循环执行。

   如果没有食物,随机出现食物;如果有食物,则显示食物,蛇移动身体,根据蛇的方向改变坐标值,并判断蛇是否撞到了墙或自己吃了自己,如果出现这两种情况之一,则蛇死,调用游戏结束函数GameOver(),结束本次游戏,重新开始。

如果蛇吃到了食物,蛇身体长一节,数组元素增加一个,身体节数、分数都进行相应的改变。

   在新位置画出蛇。

   .

   2)如果有按键,则识别键值。

如果按键为Esc键则结束游戏,程序运行结束;如果所按键为方向键,则根据该键改变代表蛇方向的变量direction的值,要考虑相反方向键无效。

   2.5.游戏结束函数GameOver()

   游戏结束,清除屏幕,输出分数,显示游戏结束信息。

 2.6.PrScore()输出分数

 在指定位置利用sprintf()将整数转换为字符串,用outtextxy()输出,bar()函数的应用是为了覆盖原来的值。

   2.7.Close()图形结束

 

3、流程图

 

本系统分为:

初始化即图形驱动函数init()模块、图形界面设计Drawk()模块、游戏GamePlay()模块、输出成绩PrScore()模块、退出游戏Close模块、

在游戏模块中通过3个控制语句判断游戏中的蛇是否死亡(3中死亡方式),不出现死亡在游戏结束时候打出成绩,如果出现死亡则跳出循环并打出成绩并进行初始化设定,如果不玩游戏按ESC则退出游戏。

 

[实验总结]

本次试验让我加深了对程序设计的理解,对程序结构化设计有了进一步的认识,同时也是对自己编程思想的优化和编程能力的提高,认识到了如何将程序设计工程化,即软件工程的思想去设计程序。

同时也发现了自己诸多问题,对软件工程思想没有很好的理解,以及IPO图和PDL(伪代码)的绘制与编写出现了问题,此次试验让我及时发现问题,以便我及时的改进,让我学到了不少东西和宝贵的思想。

对于试验中出现的问题我可下回认真总结,为以后打好基础。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2