软件工程复习总结最新教学内容.docx
《软件工程复习总结最新教学内容.docx》由会员分享,可在线阅读,更多相关《软件工程复习总结最新教学内容.docx(20页珍藏版)》请在冰豆网上搜索。
软件工程复习总结最新教学内容
软件工程复习总结--最新
《软件工程》学科复习总结
★第一部分:
软件工程概述
第一章软件工程概述
1、软件工程的定义及其概念
☐软件工程是①将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,②对①中所选方法的研究。
2、软件生命周期模型(三个阶段、八个步骤)
☐三个阶段:
定义、开发、维护
☐八个步骤:
(定义阶段)问题定义、可行性研究、需求分析;(开发阶段)总体设计、详细设计、编码与单元测试、综合测试;(维护阶段)运行维护。
3、软件过程模型中模型举例
☐瀑布模型、快速原型化模型、增量模型、螺旋模型、RUP(Rational统一过程)
☐RationalUnifiedProcess,RUP统一软件开发过程
补充:
☐瀑布模型(传统瀑布模型、带信息反馈的瀑布模型)
☐快速原型化模型
☐增量模型
☐螺旋模型
☐喷泉模型
4、软件工程方法学的三要素
(1)过程:
获取高质量软件所需要的一系列任务框架(活动)、任务完成顺序、以及质量保证点和项目管理------做什么;
(2)方法:
过程中规定各项任务中采取的技术方法------如何做;
(3)工具:
为方法应用提供自动或半自动支持环境
★第二部分:
统一建模语言(UML)
第三章类图
1、类图的概念及作用(补充)
☐概念:
类图是描述类、协作(类或对象间的协作)、接口及其关系的图。
类图是逻辑视图的重要组成部分,用于对系统的静态结构建模,涉及到具体的实现细节。
☐作用:
类图常用来描述业务或软件系统的组成、结构和关系。
☐表示方法:
类名、属性、方法
2、按照关系的性质,关联分为哪四种,其图形如何表示?
☐关联分为:
包含、泛化、依赖、实现四种
☐
包含(分为聚合和组合)(包含的图形)
⏹
聚合:
类之间的一种整体与部分的关系体现了一种层次结构,整体类位于部分类的上层,多个部分类处于并列的层次(聚合的图形)
⏹组合:
是一种特殊形式的聚合(强聚合),聚合中的每个部分只能属于一个整体;表示类之间整体和部分的关系。
整体与部分具有相同的生存期。
(组合的图形)
◆举例:
☐
泛化:
表示两个类元间“一般”与“特殊”的关系。
对应面向对象编程语言中类与类之间的继承关系。
(泛化的图形)
◆
举例:
☐
依赖:
软件开发中,往往会设计一些公用类,供别的类调用,如果这些公用类出问题了,那调用这些公用类的类都会因此而出问题;两个元素之间的一种关系,其中一个元素(提供者)的变化将影响另一个元素(客体),或向它提供所需信息;显示一个类引用另一个类。
(依赖的图形)
◆举例:
你很爱你老婆,没有你老婆你活不下去,可以这样表示
☐实现:
表达一种说明元素与实现元素之间的关系;类和接口之间的关系是实现关系,表示类实现接口提供的操作;显示一个类引用另一个类。
(实现的图形)
◆举例:
FriendList类对接口UserBehavior中方法的实现
3、关联的语法
☐关联有名称、角色、多重性、导航性、约束、限定符等语法
☐关联名:
描述关联的作用;通常使用动词或动词短语;
◆举例:
☐角色:
关联两端的类可以某种角色参与关联;通常使用名词或名词短语;
◆举例:
☐多重性:
某个类有多少个对象可以和另一个类的单个对象关联;
◆举例:
☐导航性:
用箭头显示导航性;描述源对象通过链接访问目标对象;
◆举例:
4、关联的递归关系
☐Windows操作系统中有文件夹和文件,文件夹里也有文件夹,用类图表达出文件夹和文件的关系。
(自包含)
第四章用例图(画图)
1、用例图的概念,它由哪几部分构成?
☐
(1)用户模型视图也称为用例图,它从用户的角度来描述系统功能,并指出各功能的操作者。
用例图是捕获用户需求的强有力工具,它描述了系统应该实现什么样的功能
(2)用例图是外部参与者所能观察到的系统功能的模型图,它将系统、子系统和类的行为可视化
(3)用例图是获取需求的直接方法
(4)用例图还是软件测试人员进行测试的指导
☐用例图由三部分构成:
参与者、一组(个)用例、关系
2、用例图的四种基本关系及其图形
☐用例图的四种基本关系为:
关联、包含、扩展、泛化
☐关联(association):
描述参与者与用例之间的关系;用单向箭头,表示谁启动用例;每个用例都有角色启动,除包含和扩展用例;
◆举例:
☐包含(include):
是指两个用例之间的关系。
其中一个用例(基本用例,baseusecase)的行为包含了另一个用例(包含用例,inclusionusecase)的行为。
◆举例:
☐扩展(extend):
一个用例可以被定义为基础用例的增量扩展,称作扩展关系。
扩展关系是把新的行为插入到已有用例中的方法。
基础用例即使没有扩展用例也是完整的。
一般情况下基础用例的执行不会涉及扩展用例,只有特定条件发生,扩展用例才被执行。
◆举例:
☐泛化(generalization):
一个用例和其几种情形的用例间构成泛化关系。
往往父用例表示为抽象用例。
任何父用例出现的地方子用例也可出现。
◆举例:
3、什么是用况规约?
☐所谓规约,就是业务规则的规格说明。
针对每一个用况,都应该有一个用况规约文档与之相对应,以描述该用况的细节内容。
每一个用况的用况规约,都应该包含以下内容
(1)用况名称(UseCaseName).用况的名称一般由“动词+名词”构成,简单说明“做什么”。
(2)简要说明(BriefDescription).简要介绍该用况的作用和目的。
(3)前置条件(PreviousCondition).系统在执行该用况前必须处在的状态。
(4)事件流(FlowofEvent)描述该用况所有可能的场景,它包括基本流和备选流。
⏹基本流:
描述该用况在正常情况下的场景。
⏹备选流:
描述用况执行过程中一场情况或突发情况。
(5)用况场景(UseCaseScenario).包括成功场景和失败场景,场景主要由基本流和备选流组合而成。
(6)特殊需求(SpecialRequirement).描述与该用况相关的非功能性需求(性能、可靠性、可用性和可扩展性等)以及涉及约束(所使用的操作系统、开发工具等)。
(7)后置条件(PostCondition).系统在执行完该用况之后应该处在的状态。
4、实例:
“修改密码”的用况规约
⏹用况名称:
修改密码
⏹参与者:
多个求职者
⏹简要说明:
求职者为了密码安全且方便使用,修改了密码
⏹前置条件:
1、求职者已经登录网上求职招聘系统
2、求职者输入旧密码
3、求职者输入新密码
⏹基本事件流:
1、求职者鼠标单击“修改密码”按钮
2、系统出现一个对话框,显示“密码修改成功”
3、求职者单击“确定”按钮
4、用况结束
⏹其他事件流A1:
在单击“修改密码”按钮之间,求职者随时可以按“清空”按钮,文本框清空,可以重新填写内容。
⏹异常事件流E1:
1、系统出现一个对话框,显示“旧密码输入错误”
2、求职者单击“确定”按钮
3、返回到修改密码页面,旧密码文本框被清空
⏹异常事件流E2:
1、系统出现一个对话框,显示“密码要设在6~10位之间”
2、求职者单击“确定”按钮
3、返回到修改密码页面,新密码文本框被清空
⏹异常事件流E3:
1、系统出现一个对话框,显示“旧密码输入错误3次”
2、系统自动将该用户注销
3、系统返回到首页
⏹后置条件:
求职者的密码被重置,再次登录时必须使用新密码
第五章顺序图(画图)(交互图)
1、顺序图的概念和作用:
☐定义:
顺序图也称为时序图,它描述了系统中,对象间通过消息进行的交互,它强调了消息在时间轴上的先后顺序。
☐作用:
顺序图常用来描述用例的实现,它表明了由哪些对象,通过消息相互协作来实现用例的功能,在顺序图中,标识了消息发生交互的先后顺序。
2、顺序图的组成要素有哪些?
(对象和消息是主要内容)
☐顺序图中的元素包括对象、生命线、控制焦点、消息。
消息表示了对象间的通讯,生命线表示了对象的生存期,控制焦点表示对象正在执行一些活动。
☐对象:
顺序图中对象的符号和对象图中对象所用的符号一样。
将对象置于顺序图的顶部意味着在交互开始的时候对象就已经存在了,如果对象的位置不在顶部,那么表示对象是在交互的过程中被创建的。
☐消息
⏹消息是从一个对象到另一个或者几个其他对象的信息传递,简单地说,消息就是对象与对象、参与者与参与者,或者对象与参与者之间的某种通信方式。
⏹消息可以是一个信号或一次操作调用,收到消息即为事件。
可以有两种消息,一种是从发送者向接收者发送信号,另一种是由调用者调用接收者的操作
⏹对象之间的协作通过相互发送消息实现
3、在UML中,将对象之间的消息分为哪几种类型?
☐在UML中,将对象之间的消息分为五种类型:
调用、返回、发送、创建和销毁。
☐调用(call):
这是最常用的一种消息,它表示调用某个对象的一个操作(通常格式为“对象名.成员方法”)。
可以是对象之间的调用,也可以是对象本身的调用(局部调用)。
☐返回(return):
返回表示被调用的对象向调用者返回一个值。
在UML的交互图中,将采用如虚线箭头线来表示,在箭头线上应标明返回值。
☐发送(Send):
发送是指向对象发送一个信号。
信号和调用不同,它是一种事件,用来表示各对象间进行通信的异步激发机制。
☐创建(Create)和销毁(Destroy):
也就是创建和销毁一个对象。
创建对象通常是利用构造方法来实现的,对象一创建,生命线就开始;生命终止符号用一个较大的叉形符号表示。
4、实例:
自动锁车系统中,“锁车”用例的顺序图
5、实例:
“登录”用例顺序图(MV模式)
第八章活动图(不画图)
1、活动图的概念及作用
☐概念:
活动图是描述系统或业务的一序列活动构成的控制流,它描述了系统从一种活动转换到另一种活动的整个过程。
☐作用:
活动图常用来描述业务或软件系统的活动轨迹,描述了系统的活动控制流程。
用活动图可以对业务过程、工作流和用例实现进行建模。
2、活动图中的语法(组成元素)
☐初始节点和终点、活动结点、转换、分支与监护条件、分岔与汇合
3、活动图与流程图的区别
☐活动图有分岔、汇合与并发,可以选择多个执行。
流程图只有分支,只能选一个执行。
流程图没有标识泳道,流程图使用范围比活动图小。
★第三部分:
数据库设计
第九章数据库设计
1、候选码和主码的概念
☐候选码(Candidatekey)若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。
☐主码(Primarykey):
若一个关系有多个候选码,则选定其中一个为主码
2、关于对范式的理解
⏹第一范式(1NF,每一列都是不可分割的基本数据项)
⏹第二范式(2NF,消除部分子函数依赖,即属性完全依赖于主键)
⏹要求实体的属性完全依赖于主关键字。
所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体。
⏹第三范式(3NF,消除传递依赖,即属性不依赖于其它非主属性])
⏹要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。
那么在的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。
3、分解关系模式
☐把这个单一模式分成3个关系模式:
S(Sno,Sdept,Sno→Sdept);
SC(Sno,Cno,Grade,(Sno,Cno)→Grade);
DEPT(Sdept,Mname,Sdept→Mname)
4、数据库设计的基本步骤
☐需求分析
⏹需求收集和分析,得到数据字典
☐概念结构设计阶段
⏹对用户需求综合、归纳与抽象,形成概念模型,在关系数据库中概念模型一般采用实体-联系模型图,即E-R图
☐逻辑结构设计阶段
⏹任务:
把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
即:
E-R图向关系模型的转换
☐物理设计阶段
⏹任务:
主要是设计DB在物理设备上的存储结构和设计方法。
主要内容:
确定数据的存储结构。
存取路径的选择和调整
☐数据库的实施阶段
⏹根据逻辑设计和物理设计的结果,在计算机系统上建立起实际数据库结构、装入数据、测试和试运行的过程称为数据库的实施阶段
☐数据库运行和维护。
⏹数据库系统正式运行,标志着数据库设计与应用开发工作的结束和维护阶段的开始,这个一般是DBA的事情了,比如时间长了,数据量大了,在某些列上加上索引,调优等等。
5、实体—联系图(E—R图)如何向数据库表转化?
☐1对1:
一一对应建立
☐1对多:
⏹在“一对多”关系中,无论“多”端是强制存在的还是可选存在的都不会影响其转化形式,外键必须出现在“多”端,即“多”端转化为从表。
⏹当“一”端实体是可选存在时,“多”端实体表中的外键列允许为NULL。
☐多对多:
⏹在“多对多”关系中,需要一张新关系表包含两个实体的主键。
⏹无论两边实体是否为可选存在的,其转化形式一致,关系表中的外键列不能为NULL。
实体可选存在,在关系表中表现为是否存在对应记录,而与外键是否允许NULL值无关。
☐转化过程中对于NULL值的处理规则(总结)
⏹1.当实体之间的关系是可选的,SQL表中的外键列允许为NULL。
⏹2.当实体之间的关系是强制的,SQL表中的外键列不允许为NULL。
⏹3.由“多对多”关系转化得到的SQL表,其中的任意外键列都不允许为NULL。
★第四部分:
大话设计模式
第一章代码无错就是优?
——简单工厂模式
程序可维护可复用可扩展灵活性好
运算类代码:
//运算类Operation
publicclassOperation{
publicstaticdoubleGetResult(doublenumberA,doublenumberB,Stringoperate){
doubleresult=0d;
switch(operate){
case"+":
result=numberA+numberB;
break;
case"-"
result=numberA-numberB;
break;
case"*"
result=numberA*numberB;
break;
case"/"
result=numberA/numberB;
break;
}
returnresult;
}
}
简单运算工厂类代码:
publicclassOperationFactory{
publicstaticOperationcreateOperate(Stringoperate){
Operationoper=null;
switch(operate){
case"+":
oper=newOperationAdd();
break;
case"-"
oper=newOperationSub();
break;
case"*"
oper=newOperationMul();
break;
case"/"
oper=newOperationDiv();
break;
}
returnoper;
}
}
加减乘除类代码:
//加法类
classOperationAdd:
Operation
{
publicoverridedoubleGetResult()
{
doubleresult=0;
result=NumberA+NumberB;
returnresult;
}
}
//减法类
classOperationSub:
Operation
{
publicoverridedoubleGetResult()
{
doubleresult=0;
result=NumberA-NumberB;
returnresult;
}
}
//乘法类
classOperationMul:
Operation
{
publicoverridedoubleGetResult()
{
doubleresult=0;
result=NumberA*NumberB;
returnresult;
}
}
//除法类
classOperationDiv:
Operation
{
publicoverridedoubleGetResult()
{
doubleresult=0;
if(NumberB==0)
thrownewException("除数不能为0。
");
result=NumberA/NumberB;
returnresult;
}
}
客户端代码:
staticvoidMain(string[]args)
{
try
{
Console.Write("请输入数字A:
");
stringstrNumberA=Console.ReadLine();
Console.Write("请选择运算符号(+、-、*、/):
");
stringstrOperate=Console.ReadLine();
Console.Write("请输入数字B:
");
stringstrNumberB=Console.ReadLine();
stringstrResult="";
Operationoper;
oper=OperationFactory.createOperate(strOperate);
oper.NumberA=Convert.ToDouble(strNumberA);
oper.NumberB=Convert.ToDouble(strNumberB);
strResult=oper.GetResult().ToString();
Console.WriteLine("结果是:
"+strResult);
Console.ReadLine();
}
catch(Exceptionex)
{
Console.WriteLine("您的输入有错:
"+ex.Message);
}
}
★第五部分:
补充
★1、软件测试的方法:
(必考)
白盒测试:
白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作
黑盒测试:
黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。
在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息
2、老张开车去东北(类图描述)
3、小李打妖怪(类图描述)
4、神舟飞船(类图描述)(未提及)