《软件工程导论》实验报告

《软件工程导论》实验报告
《软件工程导论》实验报告

2011-2012《软件工程导论》实验报告

学院:计算机学院

班级:软件工程软112

姓名:吴梦慧

学号:119074202

实验一:项目计划、分析和设计

[ 实验日期] 2012 年 4 月20 日

[ 实验目的]

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

[ 实验内容]

要求学生根据周围的实际应用需求,自选一个小型的C语言应用项目,依据项目可行性研究的结果,进行需求分析和设计,编写简要的需求文档、设计文档。

[ 实验原理和步骤]

当前的建模方法主要有传统的结构化分析、设计方法(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方法衔接。目标是给出可以直接用以编码的程序逻辑结构,强调清晰第一。设计阶段的主要文档有《总体设计说明书》和《详细设计说明书》。所有文档的格式可参照《软件设计文档国家标准_GB8567—

88》具体步骤是:程序功能的文字陈述、图形描述;设计思路的文字描述和图形描述

[ 实验报告要求]

需求规格说明书。

主要功能:

所编写程序欲实现插入删除、修改、查询、浏览、初始化、成绩录入、导入、导出等功能,并希望每次运行程序时将外部文件中的数据导入链表,程序结束时将链表中数据导出到文件。

选修课管理系统IPO图:

输入处理输出

总体设计说明书

各模块功能:

(1)main():主函数,控制整个程序的运行。

(2)menu():选单函数,显示菜单并接受选择。

(3)browse():浏览函数,将链表中各结点的数据依次输出。

(4)insert():插入函数,向链表中插入新结点,并使链表的各结点按学号升序排列。

(5)search():查找函数,在链表中按姓名或学号进行查找。

(6)delete():删除函数,在链表中按姓名或学号或序号删除结点。

(7)scorein():成绩录入函数,依次给链表中各结点的数据录入成绩。

(8)change():修改函数,对链表中各结点的数据进行修改。

(9)load():读入函数,从文件中将选课情况导入到链表。

(10)save():保存函数,将链表中选课情况保存到文件。

HIOP

详细设计说明书:

1. 2.

3. 4.

5.

7. 8.

[实验总结]

①任何一个程序的设计都要经过计划、分析、设计。需求分析是理解、分析和表达“系统必须做什么”的过程。概要设计帮助我们明确了程序的总体流程,为编程指明方向。详细设计将整个程序划分成一些功能模块,便于分工合作、查找错误,提高程序的目地性。

②流程图要符合单入口单出口原则。

实验二编码

[ 实验日期] 2012 年 4 月20 日

[ 实验目的] :培养良好的编码风格。

[ 实验内容] :根据详细设计的结果,按结构化思想编写代码,并对程序进行注释。[ 实验原理和步骤] :

编码风格强调“清晰易读”而不是个人技巧。请注意变量或函数的名字要有意义,表达式和语句要一目了然,排版风格、循环语句风格要保持一致,函数宏的定义,常数的定义,注释要全面.。注释包括序言性注释、函数模块注释和程序语句注释。

具体步骤:每个程序头部写序言性注释,每个函数前写模块注释,重要语句写功能性注释,变量或函数的名字要有意义,排版要美观。

[ 实验报告要求]

//用单链表实现的选修课管理系统

#include

#include

#include

typedef struct st

{ char num[10],name[9],bclass[11]; //学号、姓名、班级

float score1,score2,score; //平时成绩、期末成绩、总评成绩

struct st *next;

}stud;

char menu(); //选单

stud*load(); //导入

stud*search(stud*,int*); //查询

void save(stud*); //导出

void scorein(stud*); //成绩录入

void insert(stud*); //插入

void deletel(stud*); //删除

void change(stud*); //修改

void browse(stud*); //浏览

//************************************************************************* main()

{ char choice,c;

int i;

stud*head,*p;

head=(stud*)malloc(sizeof(stud)); //准备好表头

head->next=NULL;

while(1)

{ choice=menu();

switch(choice)

{ case '1':printf("浏览选课情况。\n");

browse(head);getchar();break;

case '2':printf("插入选课学生。\n");

insert(head);break;

case '3':printf("查询选课学生。\n");

p=search(head,&i);

if(p!=NULL)

{

printf("%2d%10s %8s %10s",i,p->num,p->name,p->bclass);

printf("%5.1f %5.1f %5.1f\n",p->score1,p->score2,p->score);

}

else printf("未找到!");break;

case '4':printf("删除学生记录。\n");

deletel(head);break;

case '5':printf("学生成绩录入。\n");

scorein(head); break;

case '6':printf("修改学生记录。\n");

change(head);break;

case '7':printf("从文件中将选课情况导入链表。\n");

head=load();break;

case '8':printf("将链表中选课情况保存到文件。\n");

save(head);break;

case '9':printf("系统初始化。\n");

head=(stud*)malloc(sizeof(stud));

head->next=NULL;

printf("%d %d\n",head,head->next);

break;

case '0':printf("退出选修课管理系统。\n");

printf("是否保存当前数据到文件?(Y/N):");

c=toupper(getchar());getchar();

if(c=='Y')save(head);

break;

default:printf("输入错误!");

}

if(choice=='0')break;

printf("\n按任意键继续......!");getchar();

}

}

//******************************************************************* char menu()

{

char c;

printf("\n\n\n\n\n\n\n = = = = =通讯录管理系统= = = = =\n");

printf(" - - - - - - - - - -\n");

printf(" 1.浏览选课情况\n");

printf(" 2.插入选课学生\n");

printf(" 3.查询选课学生\n");

printf(" 4.删除学生记录\n");

printf(" 5.学生成绩录入\n");

printf(" 6.修改学生记录\n");

printf(" 7.从文件中将选课情况导入打链表\n");

printf(" 8.将链表中选课情况导出到文件\n");

printf(" 9.系统初始化\n");

printf(" 0.退出系统\n");

printf("\n\n 请选择......\n\n\n\n\n");

c=getchar();getchar();

return c;

}

void browse(stud*head)

{ //将链表中各结点的数据依次输出

int i=0;

stud*p; //工作指针

phead->next; //指向首结点

printf("序号学号姓名班级平时成绩期末成绩总评成绩\n");

while(p!=NULL)

{ printf(%2d %-10s %-8s %-10s",++i,p->num,p->name,p->bclass);

printf(" %5.1f %5.1f %5.1f\n",p->score1,p->score2,p->score);

p=p->next; //工作指针p移动

}

}

//*********************************************************************** void insert(stud*head)

{ //插入新结点,并使链表各结点按学号升序排列

char an,xh[10],xm[9],bc[11];

stud*p,*q;

do

{ p=head;

printf("请输入学生的学号、姓名、班级:\n");

gets(xh);gets(xm);gets(bc); //输入数据

if(!strcmp(xh,"0000"))return; //以“0000”作为结束标记

while((p->next!=NULL)&&(strcmp(xh,p->next->num)>0))

p=p->next; //查找新结点的插入位置

q=(stud*)malloc(sizeof(stud)); //生成新结点由q指向

strcpy(q->num,xh); //把数据送入新结点

strcpy(q->name,xm);

strcpy(q->bclass,bc);

q->next=p->next;p->next=q;

printf("继续吗?");

an=toupper(getchar());getchar();

}while(an=='Y');

}

//****************************************************************** stud*search(stud*head,int*i)

{ //在链表中按姓名或按学号进行查找

int xz;

char xh[10],xm[9];

stud*p; //工作指针

phead->next;*i=1; //指向首结点

printf("1.按姓名查找0.按学号查找\n");

scanf("%d",&xz);getchar();

if(xz)

{ printf("请输入学生姓名:\n");

gets(xm); //输入姓名

while(p!=NULL&&strcmp(xm,p->name)!=0) //按姓名查找

{ p=p->next;(*i)++;}

}

else

{ printf("请输入学生学号:\n");

gets(xh); //输入学号

while(p!=NULL&&strcmp(xh,p->num)!=0) //按学号查找

{ p=p->next;(*i)++;}

}

return p;

}

//*************************************************************** void deletel(struct st*head)

{ //删除结点

int i,xz,n;

char c,xm[9],xh[10];

struct st*p,*q; //工作指针

p=head; //指针p指向头结点

if(p->nex!=NULL)

{ printf("1.按学号删除 2.按姓名删除 3.按序号删除\n");

scanf("%d",&xz);

switch(xz)

{ case 1:printf("请输入学生学号:\n");getchar();

gets(xh); //输入学号

while(p->next!=NULL&&strcmp(xh,p->next->num)!=0) //按学号查找

p=p->next; break;

case 2:printf("请输入学生姓名:\n");getchar();

gets(xm); //输入姓名

while(p->next!=NULL&&strcmp(xm,p->next->num)!=0) //按姓名查找

p=p->next; break;

case 3?printf("请输入序号:\n");i=1;

scanf("%d",&n);getchar(); //输入序号

while(p->next!=NULL&&i

{ p=p->next;i++;} break;

default:printf("选择错误!\n");return;

}

q=p->next; //指针q指向p的直接后继

if(q==NULL)

{ printf("未找到指定结点,没有执行删除!\n");return;}

printf(" %-10s %-8s 请确认!(Y/N)",q-.num,q->name);

c=getchar();getchar();

if(tolower(c)=='y')

{ p->next=q->next; //把结点从链表中删除

free(q);return();} //释放q所指的结点

}

printf("无结点可删除!\n");

}

//***************************************************************

void scorin(stud*head)

{ //依次给链表中各结点的数据录入成绩

int i=0,ps,qm;

stud*p; //工作指针

p=head->next; //指向首结点

printf("请输入平时成绩在总评成绩中所占的百分比:\n");

scanf("%d",&ps);qm=100-ps;

while(p!=NULL)

{ printf("%2d%10s %8s %10s\n",++i,p->num,p->name,p->bclass);

printf("平时成绩期末成绩:\n");

scanf("%f%f",&p->score1,&p->score2); //录入平时成绩和期末成绩

p->score=p->score1*ps/100+p->score2*qm/100; //计算出总评成绩

printf("%.51f %5.1f %5.1f\n",p->score1,p->score2,p->score);

p=p->next; //工作指针p移动

}getch();

}

//**********************************************************************

void change(stud*head)

{ //对链表中指定结点的数据进行修改

int i=0,xz;

float x,y;

stud*p; //工作指针

do

{ p=search(haed,&i); //查找要修改的结点

if(p) //输出数据

{ printf("%2d%10d %8s %10s",i,p->num,p->name,p->bclass);

printf("%5.1f %5.1f %5.1f\n",p->score1,p->score2,p->score);

}

else printf("未找到!\n");

}while(!p);

printf("修改哪部分信息?\n");

printf("1.修改学号\n");

printf("2.修改姓名\n");

printf("3.修改班级\n");

printf("4.修改平时成绩\n")'

printf("5.修改期末成绩\n");

printf("0.不修改\n");

scanf("%d",&xz);getchar();

switch(xz)

{ case 1:printf("请重新输入学号:");gets(p->num);break;

case 2:printf("请重新输入姓名:");gets(p->name);break;

case 3:printf("请重新输入班级:");gets(p->blass);break;

case 4:x=p->score1/p-score;y=1-x; //计算平时和期末在总评成绩中所占比例printf("请重新输入平时成绩:");

scanf("%f",&p->score1);

p->score=x*p->score1+y*p->score2; //重新计算总评成绩

break;

case 5:x=p->score1/p->score;y=1-x; //计算平时和期末在总评成绩中所占的比例printf("请重新输入期末成绩:");

scanf("%f",&p->score2);

p->score=x*p->score1+y*p->score2; //重新计算总评成绩

break;

}

printf("%2d%10s %8s %10s",i,p->num,p->name,p->blass);

printf("%5.1f %5.1f %5.1f\n",p->score1,p->score2,p->score);

}

//*******************************************************************

stud*load() //从文件中将选课情况导入到链表

{ FILE*fp;

char fn[12];

stud*head,*p,*q;

puts("从哪个文件中将选课情况导入:");gets(fn);

if((fp=fopen(fn,"rb"))==NULL)

{ printf("can't open file");exit(0);}

q=head=(stud*)malloc(sizeof(stud));

q->next=NULLl

while(!feof(fp))

{ p=(stud*)malloc(sizeof(stud));

if(fread(p,sizeof(stud),1,fp)==1)

{ p->next=q->next;

q->next=p;q=p;}

}

fclose(fp);

return head;

}

//******************************************************************

void save(stud*head) //将链表中选课情况保存到文件

{ FILE*fp;

char fn[12];

stud*p;

puts("将选课情况导出到哪个文件中:");gets(fn);

p=head->next;

if((fp=fopen(fn,"wb"))==NULL)

{ printf("can't open file");exit(0);}

while(p!=NULL)

{ if(fwrite(p,sizof(stud),1,fp)!=1)

{ printf("File write error!\n");break;}

p=p->next;

}

fclose(fp);

}

//*****************************************************************

[注意事项] :模块的逻辑描述应该清晰第一、使用标准的、规范的控制结构、正确可靠[ 实验总结]:

在此程序中,通过查找插入点的的方式使每次新结点之后都使链表仍然有序,而没有再考虑排序函数。修改函数中未考虑修改了学号以后的重新排序问题,这可以先删除旧结点再插入新结点的方法解决。另外,插入、删除、修改都可以考虑连续操作的问题。

实验三:代码复查、编译

[ 实验日期] 2012 年4 月20 日

[ 实验目的]

学习如何利用代码复查检查表快速而有效地发现程序中的缺陷。

[ 实验内容]

按照代码复查脚本规定的流程,对照代码复查检查表检查源代码并记录。编译程序,测试程序,修复所有缺陷,同时填写缺陷记录日志。

[ 实验原理和步骤]

如果想发现和改正程序的每一个缺陷,就必须遵照一个精确的规程。检查表可以帮助确保遵循这个规程。检查表也是一个构思的来源。当按照检查表去做时,就知道如何进行代码复查。检查表包括了个人的经验。通过不断地使用和改进个人检查表,可以更好地发现在程序中的缺陷。

[ 实验报告要求]

代码复查检查表

缺陷记录日志

学生吴梦慧日期2012年4月20日

教员程序号

[ 实验总结]

①编译中易犯变量没有定义的错误,格式符与要输出的数据类型不附。

②通过对编程中出现的错误进行统计,可以帮助我们总结自已在编程中易犯的错误类型。

从而便于我们在今后的编程中发现错误。

实验四:项目测试总结

[ 实验日期] 2012 年 4 月20 日

[ 实验目的]

测试程序,总结缺陷数据;更新代码复查检查表;填写项目计划总结表。

[ 实验内容]

将实际数据登入项目计划总结表;总结缺陷数据,更新代码复查检查表;

[ 实验原理和步骤]

按等价类+边界值设计测试数据,并记录测试结果;填写缺陷分析表并按类型排序.

[ 实验报告要求]

学生:吴梦慧日期: 2012年4月20日

程序程序号#

教师胡增涛程序设计语言 C语言

总结计划实际累计

Minutes/LOC

LOC/Hour 18 20 20 Defects/KLOC 过程效益

A/FR

程序规模(LOC)小小小

新开发与更改的

最大规模

最小规模

开发阶段时间/min 计划实际累计累计百分比

设计 4 4 4 22%

编码 10 11 11 61% 代码复查 2 1 1 5.6% 编译 0.5 0.5 0.5 2.2% 测试 1 1.5 1.5 1.2% 后置处理 0.5 2 2 11% 总计 18 20 20 100%

最大时间 10 11 11

最小时间 0.5 0.5 0.5

引入的缺陷计划实际累计累计百分比

Def/Hour 1 1 1 6%

计划 0 1 1 6%

设计 2 2 2 12%

编码 5 4 4 24% 代码复查 1 3 3 18%

编译 1 2 2 12% 测试 1 2 2 12% 总计 11 17 17 100%

排除的缺陷计划实际累计累计百分比

Def/Hour 1 1 1 6%

计划 0 1 1 6%

设计 2 2 2 12%

编码 5 4 4 24% 代码复查 1 3 3 18% 编译 1 2 2 12% 测试 1 2 2 12% 总计 11 17 17 100%

[ 实验总结]

通过总结缺陷数据,填写项目计划总结表,让我们了解对此项目开发的计划与实际之

间的差异。从而便于我们寻找差异与不足。

课程设计实验报告

竭诚为您提供优质文档/双击可除 课程设计实验报告 篇一:课程设计(综合实验)报告格式 课程设计报告 (20XX--20XX年度第一学期) 名称:题目:院系:班级:学号:学生姓名:指导教师:设计周数: 成绩:日期:《软件设计与实践》课程设计计算机系软件设计与实践教学组 20XX年1月14 日 《软件设计与实践》课程设计 任务书 一、目的与要求 1.了解网络爬虫的架构和工作原理,实现网络爬虫的基本框架;2.开发平台采用JDK1.60eclipse集成开发环境。 二、主要内容 1.了解网络爬虫的构架,熟悉网页抓取的整个流程。

2.学习宽度优先和深度优先算法,实现宽度crawler应用程序的编写、调试和运行。 3.学习主题爬行及内容分析技术。 4.实现网络爬虫的基本框架。 三、进度计划 四、设计成果要求 1.要求按时按量完成所规定的实验内容; 2.界面设计要求友好、灵活、易操作、通用性强、具有实用性; 3.基本掌握所采用的开发平台。五、考核方式 平时成绩+验收+实验报告。 学生姓名:于兴隆指导教师:王蓝婧20XX年1月2日 一、课程设计的目的与要求1.目的: 1.1掌握crawler的工作原理及实现方法;1.2了解爬虫架构; 1.3熟悉网页抓取的整个流程及操作步骤; 1.4掌握宽度优先,深度优先算法,并实现宽度crawler 应用程序的编写、调试和运行;1.5掌握主题爬行及内容分析技术;1.6实现一个最基础的主题爬虫的过程;1.7理解pageRank算法,并编程验证;二、设计正文 网络爬虫研究与应用 [摘要]:本文通过对网络爬虫研究的逐步展开,讨论了爬虫的相关概念与技术,并通过实验设计了简单的基于宽度

实验优化设计考试答案

第一题 考察温度对烧碱产品得率的影响,选了四种不同温度进行试验,在同一温度下进行了5次试验(三数据见下表)。希望在显着性水平为。 1.SSE的公式 2.SSA的公式 3.将表格粘贴进Excel,然后进行数据分析,勾选标于第一行,显示在下面 P=,远小于,所以是显着的 “方差分析” “响应C1C2C3C4” “选单因素未重叠” 4.打开Minitab,复制表格, “统计” 点击“比较”勾选第一个,确定 结果:工作表3 单因子方差分析:60度,65度,70度,75度 来源自由度SSMSFP 因子误差合计 S==%R-Sq(调整)=% 平均值(基于合并标准差)的单组95%置信区间 水平N平均值标准差------+---------+---------+---------+--- 60度度度度合并标准差= Tukey95%同时置信区间 所有配对比较 单组置信水平=% 60度减自: 下限中心上限------+---------+---------+---------+--- 65度度度度减自: 下限中心上限------+---------+---------+---------+--- 70度度度减自: 下限中心上限------+---------+---------+---------+--- 75度获得结果,区间相交包含的不明显,反之明显 第二题 为研究线路板焊点拉拔力与烘烤温度、烘烤时间和焊剂量之间关系。从生产过程中收集20批数据,见下表: 1.将表格粘贴进Minitab,然后“统计”“回归”“回归”“响应,变量”“图形,四 合一” 2.P小于,显着 4.残差分析 第三题 钢片在镀锌前需要用酸洗方法除锈, 为提高除锈效率,缩短酸洗时间,需 要寻找好的工艺参数。现在试验中考 察如下因子与水平:

软件工程导论名词

1、什么是软件? 答:1).满足功能要求和性能的指令或计算机程序集合; 2.)处理信息的数据结构;3.)描述程序功能以及程序如何操作和使用所要求的文档; 2、软件危机定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 3、软件工程定义:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地、高效的开发出高质量的软件并有效地维护它,这就是软件工程。 4、软件生存周期:一个软件从开始计划起,到废弃不用止,称为软件的生存周期。 5、瀑布模型:即生存周期模型,是软件工程的基础模型。其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作。 6、增量模型:是瀑布模型的顺序特征与快速原型法德迭代特征相结合的产物。这种模型把软件看成一系列相互联系的增量,在看法过程的各次迭代中,每次完成其中的一个增量。 7、快速原型:是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌 8、可行性研究: 可行性研究的目的:就是用最小代价在尽可能短的时间内确定问题是否能够解决。9、需求分析: 需求分析的任务:它的基本任务是准确地回答“系统必须做什么?”这个问题。需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。 10、数据流图:是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。 (或者:数据流图:它以图形的方式反映系统的数据流程) 11、数据词典:是描述数据信息的集合,它对数据流图中的各个元素按规定格式进行详细的描述和确切的解释,是数据流图的补充工具。 12、概要设计:又称为总体设计或初步设计,总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。 13、模块:是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。 14、信息隐蔽:模块中所包括的信息不允许其它不需这些信息的模块调用 15、内聚:一个模块内部各个元素彼此结合的紧密程度的度量。 内聚性。又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语句之间、程序段之间)联系得越紧密,则它的内聚性就越高。 16、耦合:一个软件结构内不同模块之间互连程度的度量。

《软件工程导论》教学大纲

软件工程教学大纲 课程名称:软件工程 开课学期:第5学期 学时/学分:48 / 3 课程类型:专业必修课 开课专业:游戏开发 选用教材: 《软件工程导论》(第四版),张海藩编著,清华大学出版社; 主要参考书: 《实用软件工程》(第二版),郑人杰、殷人昆、陶永雷编著,清华大学出版社; 《软件工程:实践者的研究方法》(原书第五版),Roger S. Pressman,机械工业出版社; 《软件工程》(原书第六版),Ian Sommerville,机械工业出版社; 《面向对象与传统软件工程》(原书第五版),Stephen R. Schach,机械工业出版社。 《面向对象的软件工程》,B.Bruegge,A.H.Dutoit著,清华大学出版社 一、课程性质、目的与任务 软件工程是研究软件开发维护和软件管理的一门工程科学,本课程是计算机科学与技术专业指导性教学计划规定的教学环节中的一部分,教学目的旨在介绍软件工程的基本原理和主要内容,为学生进一步深入学习与软件工程相关的其他课程如:软件需求过程、软件分析与设计和软件项目管理、软件过程管理等打下坚实的理论基础。同时启发学生把握软件开发过程的基本规律,掌握和运用软件分析、设计的常用方法、软件开发过程的管理方法以及质量保证方法等,来解决软件开发中的实际问题,达到学以致用的目的。 二、教学基本要求 本门课程是软件工程导论性质的课程,所以它比较全面而概括地介绍了与软件开发、管理和维护相关的各阶段的工作。学生通过这门课程的学习,能够掌握软件工程的基本含义、它的主要作用、软件开发的过

程、软件开发各个阶段的主要目的和可能采用的一些技术手段和方法,并理解软件项目管理的主要思想。课程完成后,学生能够应用软件工程的思想指导软件开发实践,并能够比较容易地进行软件工程其他相关后续课程的深入学习。 要求教师在教学中采用启发式教学和因材施教,并至少给出一些章节的启发式教学内容的设计。 制作电子教学课件,运用课件进行教学。 三、考核方式: 总成绩分为两个部分:平时成绩(占40% )和期末卷面成绩(占60%),期末考试采用开卷。

软件工程导论期末考试题

一、单项选择题 1.适合于面向对象方法学的软件生存周期模型是( B ) A.瀑布模型 B.喷泉模型 C.螺旋模型 D.增量模型 2.从实用角度看,数据规范化程度在大多数场合选用第( C )范式。 A. 1 B.2 C.3 D.5 3. 可行性分析研究的目的是( A )。 A.项目值得开发否 B.争取项目 C.开发项目 D.规划项目 4. 模块的内聚性最高的是 ( D ) A.逻辑内聚 B.时间内聚 C.偶然内聚 D.功能内聚 5.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做 ( B ) A. 软件工程 B. 软件危机 C. 软件周期 D. 软件产生 6. 需求分析阶段的任务是确定( D ) A.软件开发方法 B.软件开发工具 C.软件开发费 D.软件系统的功能 7. 完整的软件结构通常用( B )图来表示。 A. IPO 图 B. HIPO 图 C.PAD 图 D.DFD 图 8. 在白盒法技术测试用例的设计中( A )是最弱的覆盖标准。 A.语句 B.路径 C.条件组合 D.判定 9?对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。 A.结合 B.隐藏 C.封装 D.抽象 10. 在数据流图中,圆代表( C )。 A.源点 B.终点 C.加工 D.模块 11. 模块内聚度越高,说明模块内各成分彼此结合的程度越( B )。 A.松散 B.紧密 C.无法判断 D.相等 12. 软件测试方法中,黑盒、白盒测试法是常用的方法,其中黑盒测试主要用于测试( B )。 A.结构合理性 B.软件外部功能 C.程序正确性 D.程序内部逻辑 13. 面向对象开发方法中, ( C )是占主导地位的标准建模语言。 A.Booch 方法 B.Coad 方法 C.UML 语言 D.OMT 方法 14. 软件需求分析的主要任务是准确地定义出要开发的软件系统是( C ) A.如何做 B.怎么做 C.做什么 D.对谁做 15. 结构化程序设计的一种基本方法是( C ) A.筛选法 B.迭代法 C.逐步求精法 D.递归法 二、填空题 1. 目前使用最广泛的软件工 程学方法分别是传统方法学和(面向对象方法学 ) )和事务流。 文档 ) 。 ( 重复 )三种结构。 自顶向下 的集成测试方法,对软件结构中下层使 6. 软件维护包括 ( 改正性维护 )、适应性维护、完善性维护、预防性维护。 7. 面向对象方法学建模得到的三个基本子模型是 (对象建模 ) .动态模型、功能模型。 8. 复杂大型问题的对象模型通常由主题 2. 数据流图中信息流的类型有(变换流 3. 软件的定义是:软件 =程序+数据+ 4. 经典结构程序设计包括顺序、选择和 5. 集成测试时对软件结构中上层使用 用 ( 自底向上 ) 的集成测试方法。

vf课程设计实验报告模板

vf 课程设计实验报告模板 经济管理学院 学生信息管理系统的设计与实现 09年12 月28 日 、课程设计的目的和意义 当今,人类正在步入一个以智力资源的占有和配置,知识生产、分配和使用为最重要因素的知识经济时代,为了适应知识经济时代发展的需要,大力推动信息产业的发展,我们通过对学生信息管理系统的设计,来提高学生的操作能力,及对理论知识的实践能力,从而提高学生的基本素质,使其能更好的满足社会需求。 学生信息管理系统是一个简单实用的系统,它是学校进行学生管理的好帮手。 此软件功能齐全,设计合理,使用方便,适合各种学校对繁杂的学生信息进行统筹管理,具有严格的系统使用权限管理,具有完善的管理功能,强大的查询功能。它可以融入学校的信息管理系统中,不仅方便了学生信息各方面的管理,同时也为教师的管理带来了极大地便利。 我们进行本次课程设计的主要目的是通过上机实践操作,熟练掌握数据库的设 计、表单的设计、表单与数据库的连接、SQL语言的使用和了解它的功能:数据定 义、数据操纵、数据控制,以及简单VF程序的编写。基本实现学生信息的管理, 包括系统的登录、学生信息的录入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除,并对Visual FoxPro6.0 的各种功能有进一步的了解,为我们更进一步深入的学习奠定基础,并在实践中提高我们的实际应用能力,为我们以后的学习和工作提供方便,使我们更容易融入当今社会,顺应知识经济发展的趋势。 - 1 -

、系统功能设计 通过该系统可以基本实现学生信息的管理,包括系统的登录、学生信息的录 入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除。系统 功能模块如下图所示。 学生信息管理系统主界面 登录 管理 学学学学学 生生生生生 信信信信信 息息息息息 录查浏修删 入询览改除 三、系统设计内容及步骤 3.1创建项目管理文件 1.启动foxpro 系统,建一个项目管理器,命名为“学生管理”。 哑 目f ■ 也 电 岂同左 矣 氏H. 0 存 JI 蛋誤曾

试验优化设计与分析(教材)

试验优化设计与分析(教材) 成果总结 成果完成人:任露泉,丛茜,杨印生,李建桥,佟金成果完成单位:吉林大学 推荐等级建议:二等奖

1.立项背景 在现代社会实现过程和目标的最优化,已成为解决科学研究、工程设计、生产管理以及其他方面实际问题的一项重要原则。试验优化技术因其具有设计灵活、计算简便、试验次数少、优化成果多、可靠性高、适用面广等特点,已成为现代设计方法中一个先进的设计方法,成为发达国家企业界人士、工程技术人员、研究人员和管理人员的必备技术,它对于创造利润和提高生产率起着巨大的作用。因此在我国为了赶超世界先进水平,促进科研、生产和管理事业的发展,编著相关教材,大力推广与应用试验优化技术,不仅具有普遍的实际意义,也具有一定的迫切性。 20世纪80年代初,鉴于国民经济建设实践和科学技术研究中对试验优化技术的广泛需求,为推动教学改革、提高教学质量,任露泉教授对试验优化理论与技术进行了深入系统研究,为本科生开设了“试验设计”课程,为研究生开设了“试验优化技术”课程,并于1987年由机械工业出版社出版了教材《试验优化技术》,产生了很高的学术与技术影响。 2001年任露泉教授在《试验优化技术》一书的基础上编著了《试验优化设计与分析》教材,由吉林科技出版社出版发行。该教材是对1987年出版的《试验优化技术》的修改、补充和发展。作者根据对试验优化的教学和科研应用的多年实践与体会,为适应读者学习与使用的实际需要,调整修改了原书中的部分内容和一些方法的设计程式;补充了一些试验优化设计的新方法、新技术;增添了试验优化的一些最新应用实例;并增加了试验优化分析一篇。 本教材2001年获吉林省长白山优秀图书一等奖,2002年被遴选为教育部全国研究生教学用书,再次出版发行,2004年获吉林省教学成果一等奖。 2.教材内容 本教材万字,共分三篇二十一章。第一篇试验设计,除正交设计、干扰控制设计与数据处理等常用技术外,还介绍SN比设计、均匀设计、广义设计、调优运算及稳健设计等正交试验设计技术的拓广应用和现代发展的最新方法;第二篇回归设计,除各种回归的正交设计、旋转设计、饱和设计、多项式设计、还介绍多次变换设计、交互作用搜索设计、混料设计以及D-最优设计等回归设计技术的进一步完善与最新应用技术;在第三篇试验优化技术分析中,介绍了试验数据处理过程中经常遇到的难题及其解决办法,数据分析的最新研究成果及其应用实例。例如:有偏估计、PPR分析、探索性数据分析等;此外还介绍了试验优化的常用统计软件。 3.教材特点

软件工程导论论文(精)

软件工程一.关于软件工程软件是计算机系统中程序.数据和相关文档的集合,一种逻辑产品。软件工程是一门研究工程化方法构建和维护有效的.实用的和高质量的软件的学科。软件工程是一门比较年轻的学科,追溯其出现的时期我们可以回到二十世纪中期。那个时候出现了软件危机。上个世纪五十年代计算机刚从军用转到民用,编写程序的工作被视为艺术家的创作。由于当时计算机受价格因素的限制未能普及,人们对这一新生的披着神秘面纱的产品并不了解。再加上编程人员追求的是如何在有限的处理器能力和储存空间约束下编写出执行速度快.体积小的程序,使程序中充满了各种各样让人迷惑的技巧,这时的软件的开发生产就非常依赖开发人员的聪明才智。但是得到了六十年代,由于计算机生产硬件的突破使计算机的应用范围得到较大的扩展对软件系统的需求和软件自身复杂性急剧上升,传统开发方法不能满足对软件的需要,出现了软件危机。为解决这个问题,1986年“软件工程”在NATO会议上被首次提出,就是把软件开发从“艺术”和“个体行为”向“工程”和“群体协同工作”转化。从此一门新的学科便诞生了。软件的发展又分为几个阶段:先是程序设计再到程序系统,再是软件工程,到现在是面向对象软件工程。因为一种软件往往比较庞大,需要一个或多个团体才能完成,所以以一种工程化的方法不仅能够提高软件的质量也能提高开发效率。软件工程是研究和应用如何以系统性的.规范化的.可定量的过程化方法去开发维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。其目标是在给定成本.给定进度的前提下开发软件。开发出的软件应具有可修改性.有效性.可靠性.可维护性.可适应性.可移植性.可追踪性.可重用性.可理解性.可互操作性。其中可修改性事实容许对系统进行修改而不增加原系统的复杂性。有效性是软件系统能最有效的利用计算机的时间资源和空间资源。软件工程包括技术和管理两方面。由方法.工具.和过程三部分。软件开发方法就是完成软件开发的各项任务的技术方法,软件开发工具是为了方法运用提供支撑。软件工程的过程包括定义.开发.运行维护。定义包括可行性研究.需求分析两个步骤。可行性研究就是根据已有的技术手段结合要开发软所可能运用的技术来判断开发的可行度。需求分析就是要通过客户了解软件所应具备的功能。这一阶段是软件开发前的准备阶段,是很重要的一个阶段。

软件工程导论》期末考试试题与答案

《软件工程导论》期末考试-试题与答案 一、填空题 1.软件工程中的结构化分析 SA 是一种面向________的分析方法。 2.软件模块独立性的两个定性度量标准是_________________。 3.软件开发是一个自顶向下逐步细化和求精的过程,而软件测试是一个________的过程。 4. ________和数据字典共同构成了系统的逻辑模型 5. ___________是一种黑盒测试技术,这种技术把程序的输入域划分为若干个数据类,据此导出测试用例。二、单选 题 1.在软件危机中表现出来的软件质量差的问题,其原因是_______。A.软件 研发人员素质太差B.用户经常干预软件系统的研发工作C.没有软件质量标 准 D.软件开发人员不遵守软件质量标准2.在软件质量因素中,软件在异常条件下仍能运 行的能力成为软件的_____。A.安全性B.健壮性C.可用性D.可靠性 3.在下列测试技术中,______不属于黑盒测试技术。A.等价 划分B.边界值分析C.错误推测D.逻辑覆盖 4.软件工程方法是在实践中不断发展着的方法,而早期的软件工程方法主要是指______。A.原型化方法B.结构化方法C.功能化方法D.面向对象方法 5. ______是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是 隐蔽的,外界只能通过有限的接口与对象发生联系。A.多态 B.继承C.封装D.消息 6. Jackson 方法是在软件开发过程中常用的方法,使用 Jackson 方法时可以实现______。A.从数据结构导出程序结构B.从数据流图导出初始结构图C.从模块结构导出数据结构D.从模块结构导出程序结构 7.软件测试时为了________而执行程序的过程。A.纠正 错误B.发现错误 C.避免错误 D.证明错误 8.在软件系统中,一个模块应具有什么样的功能,这是由_____决定的。A.总体 设计B.需求分析C.详细设计D.程序设计 9.面向对象分析是对系统进行_________的一种方法。A.需求 分析B.程序设计C.设计评审D.测试验收 10.软件文档是软件工程实施中的重要部分,它不仅是软件开发各阶段的重要依据,而 且影响软件的_______。A.可理解 性B.可维护性C.可扩展性D.可 移植

软件工程导论(整理版)

SA——结构化分析方法 可行性研究:可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程; 技术可行性:对待开发的系统进行功能、性能和限制条件的分析,确定在现有的资源条件下,技术风险有多大,系统能否实现; 经济可行性:这个系统的经济效益能超过它的开发成本吗? 社会可行性:实用性怎样 5. 耦合性:耦合是指一个模块与其它模块之间的联系,又称为块间联系,是模块之间相对独立性的度量; 6. 内聚性:内聚是指模块内部各个成分之间的关系,又称为块内联系,是模块功能相对强度的度量; 7. 模块的控制范围:一个模块的控制范围是指该模块本身及其所属的(直接或间接调用的)所有模块的集合; 8. 模块的作用范围:受该模块内一个判定影响的所有模块的集合;9. 软件结构:软件结构图; 10.模块:在软件中,通常把用一个名字就可以调用的一段程序称为模块; 1. 编码:所谓编码就是把软件设计结果翻译成用某种程序设计语言书写的程序; 2. 程序设计风格:所谓程序设计风格是指书写源程序的习惯、程序代码的逻辑结构与习惯的编程技术。从软件工程要求出发,程序设计风格应包括以下要素:①源程序文档化②数据说明③语句构造④输入输出 ●白盒测试技术:逻辑覆盖和基本路径覆盖 ●黑盒测试技术:等价类划分、边界测试、错误推测、因果图 ●软件测试步骤:单元测试、集成测试和确认测试 1. 校正性维护:满足用户对已开发产品的性能与运行环境不断提高的要求,进而达到延长软件寿命的目的; 2.适应性维护:对程序使用期间发现的程序错误进行诊断和改正的过程,配合变化了的环境进行修改软件的活动; 3. 完善性维护:满足用户在使用过程中提出增加新的功能或修改已有功能的建议而进行的工作; 4. 预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作。

《软件工程导论》课程设计说明书

《软件工程.课程设计》 医药公司进销存 管理信息系统 专业:计算机科学与技术 指导教师:欧阳浩 班级:计071 班 学号:200700401006 姓名:苏建 完成时间:2010年7月7日 广西工学院计算机工程系

1.需求收集、描述 (3) 1.1 发掘业务过程(活动图) (3) 1.2 领域分析(确定候选类) (4) 1.3 确定系统完全需求(生成包图和高层用例图) (5) 2. 系统USE CASE模型……………………………………………………………,,,..6 2.1 分析(按照需求设计用例) (6) 2.2 角色定义…………………………………………………………………… ..6 2.3 USE CASE工作描述 (7) 2.4 USE CASE视图 (7) 3. 系统逻辑结构设计 (8) 3.1进货系统(描述涉及概念、映射对象、涉及角色) (8) 3.1.1事件流过程(操作描述映射成为方法的表示格式为类和方法 (8) 3.1.2 Sequence Diagram(顺序图) (8) 3.1.3 Collaboration Diagram(协作图或通信图) (9) 3.2销售系统(SaleSystem) (9) 3.2.1事件流过程 (9) 3.2.2 Sequence Diagram (10) 3.2.3 Collaboration Diagram (10) 3.3库存系统(V alueManager) (10) 3.3.1事件流过程 (11) 3.3.2 Sequence Diagram (11) 3.3.3 Collaboration Diagram (12) 3.4系统整体类的组织结构 (12) 4.程序框架 (13) 4.1详细类图(系统静态结构,应该包含类的详细关系) (13) 4.2生成程序框架(参照自己设计的4.1) (14) 4.2.1 类1 (14) 4.2.2 类2 (14) 4.2.3 类3 (15) 4.2.4 类4 (15) 4.2.4 类5 (16) 5.个人总结(自己在使用软件工程建模工具进行系统分析、设计的心得体会) (16) 6.参考文献 (18) 一、需求收集、描述 1发掘业务过程(可用活动图描述)

软件工程导论-期末题库(完整版)

1.填空题 1.一般来说,可以从__一致性__、_完整性___、_现实性____和_有效性___四个方面验证软件需求的正确性。 2.IPO图是_输入、处理和输出图_的简称,它是美国IBM公司发展完善起来的一种图形工具。 3.系统流程图是描述__物理模型__的传统工具,用图形符号表达了系统中各种元素之间的_____信息流动_____情况。 4.数据流图中的箭头表示数据流,椭圆或圆形表示数据处理,矩形表示数据的源点/终点。 5.软件测试的步骤按顺序分别是:___单元测试_____、子系统测试、系统测试(子系统和系统测试通常称为集成测试)、__确认测试__和_____系统测试(集成测试)____ 6.软件生命周期一般可分为_问题定义_、可行性研究、_需求分析_、设计编码、_测试_、运行与维护阶段。 7.可行性研究主要集中在以下四个方面_经济可行性_、__技术可行性____、__法律可行性___和抉择。 8.在结构化设计中,HIPO图应用在总体设计阶段,由IPO图和_层次图_两部分组成。9.复杂问题的对象模型通常由下述五个层次组成:主题层、___类与对象_层、__结构___层、_属性_层和__服务_层。 10.实施精化设计的目标是基于模块的“高内聚低耦合”的原则,提高模块的_独立性。11.软件生命周期一般可分为___问题定义_、可行性研究、__需求分析__、概要设计__、详细设计、编码、__软件测试_、运行与维护阶段。 12.面向对象的数据存储管理模式分为__文件__、_关系数据库__和__面向对象数据库___三种。 13.单元测试一般以_白盒_测试为主,__黑盒__测试为辅。 14.软件工程三要素包括_方法_、__工具___和__过程___,其中, _过程_支持软件开发的各个环节的控制和管理。 15.类构件的重用方式有_实力重用__、__继承重用______和_ 多态重用__三种。16.能力成熟度模型分为5个等级:初始级、____可重复____级、__已定义___级、____已管理__级和__优化____级。 2.判断题 1. 向滞后的项目中增加人手会使得项目更加滞后。(T)

程序设计课程设计实验报告

《程序设计》课程设计姓名: 学号: 班级:软件工程14班 指导教师: 成绩:

1.消除类游戏 【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n,m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m 个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 测试数据二 输出说明: 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 【功能实现】 #include #include<> usingnamespacestd;

{ intm,n,i,j; inttemp; cin>>n>>m; temp=m; m=n; n=temp; int*map=newint[m*n]; int*mark=newint[m*n]; int*tmap=map; int*tmark=mark; intdif=0; ount=0; } p rintf("请输入要输入数的个数\n"); s canf("%d",&n);/*输入要输入数的个数*/ f or(i=0;idata1[j+1].number)

实验优化设计考试答案精选文档

实验优化设计考试答案 精选文档 TTMS system office room 【TTMS16H-TTMS2A-TTMS8Q8-

第一题 考察温度对烧碱产品得率的影响,选了四种不同温度进行试验,在同一温度下进行了5次试验(三数据见下表)。希望在显着性水平为。 1.SSE的公式 2.SSA的公式 3.将表格粘贴进Excel,然后进行数据分析,勾选标于第一行,显示在下面 P=,远小于,所以是显着 的 4.打开Minitab,复制表 格,“统计”“方差分 析”“选单因素未重 叠”“响应 C1C2C3C4” 点击“比较”勾选第一 个,确定 结果: 工作表 3 单因子方差分析: 60度, 65度, 70度, 75度 来源自由度 SS MS F P 因子 3

误差 16 合计 19 S = R-Sq = % R-Sq(调整) = % 平均值(基于合并标准差)的单组 95% 置信区间水平 N 平均值标准差 ------+---------+---------+---------+--- 60度 5 (------*------) 65度 5 (------*------) 70度 5 (------*------) 75度 5 (------*------) ------+---------+---------+---------+--- 合并标准差 = Tukey 95% 同时置信区间 所有配对比较 单组置信水平 = % 60度减自: 下限中心上限 ------+---------+---------+---------+--- 65度 (------*------) 70度 (------*-----) 75度 (------*------) ------+---------+---------+---------+--- 65度减自: 下限中心上限 ------+---------+---------+---------+--- 70度 (------*-----) 75度 (------*------) ------+---------+---------+---------+--- 70度减自:

软件工程导论简答题大全

1.软件工程的七条基本原理是什么? 答:软件工程的七条基本原理是: 用分阶段的是的生存周期计划严格管理; 坚持进行阶段评审; 严格实施的产品控制; 采用现代程序技术; 结果应能清楚地审查; 开发小组的成员应该少而精; 承认不断改进软件工程的必要性。 2.良好的编码风格应具备哪些条件? 答:应具备以下条件: (1)使用标准的控制结构; (2)有限制地使用GOTO语句; (3)源程序的文档化(应具备以下内容) ①有意义的变量名称——“匈牙利命名规则”。 ②适当的注释——“注释规范”。 ③标准的书写格式: ——用分层缩进的写法显示嵌套结构的层次(锯齿形风格); ——在注释段的周围加上边框; ——在注释段与程序段、以及不同程序段之间插入空行; ——每行只写一条语句; ——书写表达式时,适当使用空格或圆括号等作隔离符。 (4)满足运行工程学的输入输出风格。 3.简述文档在软件工程中的作用。 答: (1) 提高软件开发过程的能见度 (2) 提高开发效率 (3) 作为开发人员阶段工作成果和结束标志 (4) 记录开发过程的有关信息便于使用与维护; (5) 提供软件运行、维护和培训有关资料; (6) 便于用户了解软件功能、性能。 4.可行性研究包括哪几方面的内容? 答: (1)经济可行性:是否有经济效益,多长时间可以收回成本; (2)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足; (3)运行可行性:系统操作在用户内部行得通吗? (4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律。 5.结构化的需求分析描述工具有哪些? 答:有数据流图(DFD)、数据字典(DD)、判定表、判定树、结构化语言(PDL)、层次方框图、Warnier图、IPO图、控制流图(CFD)、控制说明(CSPEC)、状态转换图(STD)和实体—关系图(E—R)等。 6.一般面向对象分析建模的工具(图形)有哪些?

个人信息管理系统毕业课程设计实验报告

(此文档为word格式,下载后您可任意编辑修改!) 山东交通学院 目录 1.系统分析 (2) 1.1系统需求分析 (2) 1.2项目规划 (2) 1.3系统功能结构分析 (3) 1.4设计目的分析 (3) 2.数据库系统设计 (4) 2.1数据表概要设计 (4) 2.2数据库逻辑结构设计 (4) 3.应用程序设计 (5) 3.1界面设置 (5) 3.2关键技术 (15) 4.系统安装 (20) 建立数据源 (20) 5.设计体会 (21) 参考文献 (22)

摘要 随着经济社会的发展,计算机已被应用到社会生活的各个领域。与此同时,互联网作为信息技术的通信桥梁连接着全球的计算机,而网站作为网络信息主要的表现形式而且还是互联网信息的主要承载者,在网络上表现出其及其重要的地位,并发挥着极其重要的作用。无论是在国内还是国外都得以迅速的发展和壮大,并被人们重视和关注。互联网已经彻底的改变了世界,互联网的世界里蕴藏着无限的可能,在这种情况下,各行各业及其个人、单位、工厂、企事业等等在网上构筑属于自己的网络信息平台,保护自己的网络资源并在互联网上开辟自己的市场和消费群体,以及构造自己的数字化世界和加强全球范围内不同地域的人们联系交流等等活动也就显的日益重要。于是各种各样的网站便如雨后春笋般地出现鱼龙混杂且良莠不齐。因此,个人信息的管理就显得尤为重要了。不仅可以更好的保护个人信息,对日常的使用也会提供很大的方便。关键词:个人信息管理系统;数据集;数据库;Visual C++6.0。 1.系统分析 1.1系统需求分析 在做本系统前,我对系统的需求做了如下分析: 1)登录权限:在登录权限的分析上我们规定必须凭借用户名和密码才可登陆,进行管理。 2)使用者功能:首先说明一下,我们的系统用户对象是个人。关于其本系统的功能,大致可分为日记管理,通讯录管理,备忘录管理,以及个人财务管理;日记管理,其中包括用户对日记编号,时间,地点,事件、人物的查询、

软件工程导论第1-2套试题及答案

软件工程A 卷 一、判断题:每小题1分,共15分,在正确的打上V,错误的打上X 1 .软件工程学只有理论意义,没有实际用途。() 2.软件工程的方法只适用于大型软件的开发,对小型软件的开发没有帮助。() 3.可行性研究进一步研究问题分析阶段所确定的问题是否有可行的解。() 4.代码审查方法没有计算机测试方法好。() 5.验证软件需求的方法主要靠人工审查的方法。() 6.并发系统中遇到的一个主要问题是定时问题。() 7.编码风格由个人喜好决定,没有固定格式。() 8.面向对象建模得到的模型包含系统的 3 个要素,即静态结构、交互次序和数据变换。() 9.软件重用是提高软件开发生产率和目标系统质量的重要途径。() 10.判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。() 11. Power Designer 是一个CASE 工具。() 12.软件是指用程序设计语言(如Pascal,C,Visual Basic 等)编写的程序,软件开发实际上就是编写程序代码。() 13.在进行需求分析时需同时考虑维护问题。() 14.UML 是一种面向对象的分析设计方法,即OOA/OOD 方法。() 15.在面向对象的软件开发方法中,每个类都存在其相应的对象,对象是类的实例,类是生成对象的模板。() 二、单选题:每题1 分,共15分 1 、软件危机主要体现在() A、软件成本太高 B、开发周期长 C、软件产品的质量难以控制 D、软件规模过大 2、为了解决软件危机,人们提出了用()的原理来设计软件。 A、运筹学 B、工程学 C、软件学 D、数学 3、瀑布模型的关键不足在于() A、过于简单 B、不能适应需求的动态变更 C、过于灵活 D、各个阶段需要进行评审 4、软件使不同的系统约束条件和用户需求得到满足的容易程度称为软件的() A、兼容性 B、可靠性 C、坚固性 D、可用性 5、软件质量(可维护性、可理解性、可靠性)很大程度取决于() A、程序员的变成水平 B、模块分解的合理 C、程序运行效率 D、有完整的故障处理 E、算法的合理性 6、软件可行性研究一般不考虑() A、是否有足够的人员和相关的技术来支持系统开发 B、是否有足够的工具和相关的技术来支持系统开发 C、待开发软件是否有市场、经济上是否合算 D、待开发的软件是否会有质量问题 7、SA 法中,有一个处理过程逻辑不易用语言表达清楚,最好是用()来描述

软件工程导论课程教学大纲

《软件工程导论》课程教学大纲 一、课程性质、地位和作用 《软件工程导论》是是软件工程专业的专业基础课程,属必修课。 本课程主要讲述建造软件系统的基本方法、技术、流程、工具及规范等。通过学习可以使学生了解软件工程的基本概念、基本原理、实用的开发方法和技术;了解软件工程各领域的基本内容和发展动向;学习用工程化的方法开发软件项目,初步掌握开发过程中应遵循的流程、准则、标准和规范。本门课程为将来从事软件开发学生的软件工程师之路奠定坚实的基础。 二、课程教学对象、目的和要求 本课程适用于软件工程、计算机应用等从事软件开发的本科专业。课程教学目的、要求: (一)从教学内容上,应使学生了解软件工程的基本概念,主要包括软件与软件开发的基本过程,软件危机与软件工程。掌握个人软件开发过程的基本内容和方法,了解软件开发模型及结构化软件设计方法,以及软件质量保证基本内容。(二)从能力方面,应使学生通过对软件工程基本概念和方法的学习和课后练习,培养学生养成规范化个人开发的良好习惯,培养学生按照软件工程的基本过程和方法来设计和开发软件。 (三)从教学方法上,在课堂理论教学中,采用学生可以理解的软件开发素材,通过一边实践一边讲解的方法,讲解软件过程的基本思想和方法,通过学生完成与实践结合的作业,调动学生的积极性,使软件工程的基本思想逐步植根于学生头脑中。 三、相关课程及关系 本课程的先修课程是“C语言程序设计”和“数据结构”等程序设计课程,学习应在学生具有一定的编程能力基础上进行。本课程为后续的“软件制造工程”和“软件设计工程”等课程打下了必要的理论基础。 四、课程内容及学时分配 总学时:32学时 (一)绪论1学时 1、软件工程及其重要性 2、软件开发需要软件工程 3、软件工程课程体系架构(需要什么软件工程) 、课堂的组织、学习方法、章节安排与考核4. 要求学生了解软件工程的起源,软件工程在软件开发中的作用,了解软件工程课程体系。 (二)软件与软件工程4学时 1、软件及软件分类 2、软件工程的由来及概念 3、软件生命周期 4、软件开发与软件开发方法 5、软件工程工具和环境 6、软件开发项目管理介绍

计算机网络课程设计实验报告

中南大学课程设计报告 课程:计算机网络课程设计 题目:基于Winpcap的网络流量统计分析 指导教师:张伟 目录 第一章总体设计 一、实体类设计 --------P3 二、功能类设计 --------P3 三、界面设计 --------P3

第二章详细设计 一、实体类实现 --------P4 二、功能类实现 --------P4 三、界面实现 --------P5 第三章源代码清单及说明 一、CaptureUtil.java --------P7 二、MyPcapPacketHandler.java --------P9 三、PacketMatch.java --------P9 四、Windows.java --------P13 第四章运行结果 --------P19 第五章心得体会 --------P21 第一章总体设计 一、实体类设计 TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计 二、功能类设计 (1)网卡获取 (2)包的抓捕

(3)包的处理 三、界面设计 (1)布局 (2)按钮功能连接 第二章第二章详细设计 一、实体类实现 TCP、UPD、ICMP、ARP、广播数据包五个包的数据结构设计。 本程序采用Java编写,基于win10pcap。Win10pcap是winpcap在win10系统上的适用版本。Java对于winpcap使用jnetpcap进行支持。对于TCP、UPD、ICMP、ARP、广播数据包五种类型的包,在jnetpcap的jar包中大部分已经封装好了相关的实体类型。对应如下:ARP 实体类:https://www.360docs.net/doc/5b8789985.html,work.Arp; UPD 实体类:https://www.360docs.net/doc/5b8789985.html,work.Icmp;

(完整word版)软件工程导论(第6版)

第一章、软件工程学概述 软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 软件危机包含下述两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。 2.如何维护数量不断膨胀的已有软件。 具体的说,软件危机主要有以下一些典型表现:1.对软件开发成本的进度的估计常常很不准确。 2.用户对“已完成的”软件系统不满意的现象经常发生 3.软件产品的质量往往靠不住。 4.软件常常是不可维护的。 5.软件通常没有适当的文档材料。 6.软件成本在计算机系统总成本中所占的比例逐年上升。 7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 软件生命周期:一个软件从定义、开发、使用和维护,知道最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期。 软件配置:程序、文档和数据。 软件工程学的一个重要的目标:就是提高软件的可维护性,减少软件维护的代价。 软件:是程序、数据及相关文档的集合。 程序:是能够完成预定功能和性能的可执行的指令序列。 数据:是使程序能够适当地处理信息的数据结构。 文档:是开发、使用和维护程序所需要的图文资料。 软件工程:指导计算机软件开发和维护的一门工程学科。 软件工程具有下属的本质特性:1.软件工程关注于大型程序的构造。2.软件工程的中心课题是控制复杂性。3.软件经常变化。4.开发软件的效率非常重要。5.和谐地合作是开发软件的关键。6.软件必须有效地支持它的用户。7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。 软件工程的7条基本原理:1.用分阶段的生命周期计划严格管理。2.坚持进行阶段评审。3.实行严格的产品控制4.采用现代程序设计技术。5.结构应能清楚的审查。6.开发小组的人员应该少而精。7.承认不断改进软件工程实践的必要性。软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为泛型。 软件工程方法学(包括传统方法学、面向对象方法学)包含三个要素:方法、工具和过程。 方法:是完成软件开发的各项任务的技术方法,回答“怎样做”的问题。 工具:是为运用方法而提供的自动的或半自动的软件工程支撑环境。 工程:是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 面向对象方法学:把数据和行为看成是同等重要的,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。 面向对象方法学具有下述四个要点:1.把对象作为融合了数据及在数据上的操作行为的统一的软件构件。 2.把所有对象都划分成类。 3.按照父类与子类的关系,把若干个相关类组成一个层次结构的系统。 4.对象彼此间仅能通过发送消息互相联系。 面向对象方法学的优点:降低了软件产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作。 软件生命周期:软件定义、软件开发和运行维护。软件定义:问题定义、可行性研究和需求分析。软件开发:总体设计,详细设计,编码和单元测试,综合测试。 1.问题定义:问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”。 2.可行性研究:这个阶段回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决办法吗?” 3.需求分析:确定目标系统必须具备哪些功能。 4.总体设计:这个阶段必须回答的关键问题是:“概括地说,应该怎样实现目标系统?”总体设计又称为概要设计。 5.详细设计:这个阶段应回答的关键问题是:“应该怎样具体地实现这个系统呢?” 6.编码和单元测试:这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。 7.综合测试:这个阶段的关键任务是通过各种类型的测试使软件达到预定的要求。 8.软件维护:关键任务是通过各种必要的维护活动使系统持久地满足用户的需要。

相关文档
最新文档