软件工程总结.docx
- 文档编号:7049938
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:21
- 大小:1.78MB
软件工程总结.docx
《软件工程总结.docx》由会员分享,可在线阅读,更多相关《软件工程总结.docx(21页珍藏版)》请在冰豆网上搜索。
软件工程总结
第1章软件工程学概述
1.什么是软件危机?
软件危机:
是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2.产生软件危机的原因是什么?
原因:
一方面与软件本身的特点有关,另一方面也和软件开发和维护的方法不正确有关。
3.消除软件危机的途径有哪些?
途径:
首先应该对计算机软件有一个正确的认识,更重要的是必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好,管理严密,各类人员共同配合,共同完成的工程项目。
应该推广使用在实践中总结出来的开发软件成功的技术和方法。
应该开发和使用更好的软件工具。
2.什么是软件工程?
软件工程本质特性;软件工程的基本原理?
软件工程:
是指导计算机软件开发和维护的一门工程学科。
采用工程的概念,原理,技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够的得到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效地维护他。
软件工程基本原理:
用分阶段的生命周期计划严格管理。
坚持进行阶段评审。
实行严格的产品控制。
采用现代程序设计技术。
结果应能清楚地审查。
开发小组的人员应该少而精。
承认不断改进软件工程实践的必要性。
3.什么是软件生命周期?
划分为哪些几个阶段?
软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的时期。
由软件定义,软件开发和运行维护三个时期组成(8阶段)。
软件定义(3阶段):
问题定义,可行性研究,需求分析
软件开发(4阶段):
总体设计,详细设计,编码和单元测试,综合测试。
运行维护:
4、软件工程方法学的3个要素;目前使用最广泛的软件工程方法学是什么?
有哪些特点?
三要素:
方法,工具和过程
最广泛的:
传统方法学和面向对象方法学
特点:
传统方法学:
使用的是结构化分析技术来完成需求分析阶段的工作。
采用结构化的技术来完
成软件开发的各项任务,自顶向下顺序完成开发任务
面向对象:
(1)把对象作为融合了数据及在数据上操作行为的统一的软件构件。
(2)把所有对象都划分成类
(3)按照父类与子类的关系,把若干相关类组成一个层次结构的系统
(4)对象彼此间仅能通过发送消息互相联系
5、典型的生命周期模型(或软件开发模型、过程模型)有哪些?
说明其优缺点及适用范围。
(1)瀑布模型,优点:
可强迫开发人员采用规范的方法;严格地规定了每个阶段必须提交文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证----文档驱动模型(也是缺点)。
适用于需求明确的项目
(2)快速原型模型优点:
产品的开发基本上是线性顺序进行的。
适用于用户需求不明确的
(3)增量模型:
逐步增加产品功能可以是用户有较充裕的时间学习和使用新产品,从而减少一个全新的软件可能给用户带来的冲击。
(4)螺旋模型优点:
对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;减少了过多测试(浪费资金)或测试不足(产品故障过多)带来的风险;更重要的是,在螺旋模型中维护的只是模型的另一个周期,在维护和开发之间并没有本质区别--风险驱动。
(5)喷泉模型优点:
实现了过程迭代和无缝连接
第2章可行性研究
1.可行性研究的目的及任务。
目的:
是为了确定该问题是否有解。
任务:
从技术,经济和操作以及社会法理等方面研究该问题是否可行
2.可行性研究的过程。
(1)复查系统规模和目标。
(2)研究目前正在使用的系统
(3)导出新系统的高层逻辑模型
(4)进一步定义问题
(5)导出和评价供选择的解法
(6)推荐行动方针
(7)草拟开发计划
(8)书写文档提交审查
3.系统流程图、数据流图、数据字典的定义及作用
(1)系统流程图:
是概括地描绘物理系统的传统工具。
表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理控制的过程---物理数据流图而不是程序流程图。
基本符号如下:
(2)数据流图:
是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
在这个图中,没有任何具体的物理部件,只是描绘数据在软件中流动和被处理的逻辑过程。
基本符号如下:
(3)数据字典:
是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义集合。
作为分析阶段的工具。
4.根据具体问题(应用要求)能够画出系统流程图和数据流图。
第3章需求分析
1.需求分析的任务是什么?
(共4项)
功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的需求。
2.与用户沟通的方法。
访谈;面向数据流自顶向下求精;简易的应用规格说明技术;快速建立软件原型。
3.需求分析阶段要创建三种分析模型,熟练掌握概念性的数据模型-E-R图、功能模型-数据流图(附数据字典)、动态模型-状态图的创建。
(1)状态图的基本符号:
3-6复印机的工作过程大致如下:
未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。
请用状态转换图描绘复印机的行为:
(2)数据流图:
例:
目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。
某医院打算开发一个以计算机为中心的患者监护系统,请分层次地画出描述本系统功能的数据流图
医院对患者11监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。
解:
顶层数据流图如下:
例3-3银行计算机储蓄系统的工作过程大致如下:
储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
请用数据流图描绘本系统的功能,并用实体-联系图描绘系统中的数据对象。
解:
顶层数据流图:
E-R图:
三种模型:
数据模型,功能模型和行为模型。
状态:
一个初态,终态有0至多个。
4.软件需求规格说明书是需求分析阶段得出的最主要的文档,它的描述应包含的哪些方面?
答:
需要准确的、完整、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理要求、接口需求、约束、逆向需求以及将来可能提出的要求
5.层次方框图、Warnier图、IPO图的作用。
(1)层次方框图用树形结构的一系列多层次的矩形描绘数据的层次结构。
例:
(2)Warnier图:
表明信息的逻辑组织,即可以指出一类信息或一个信息元素是重复出现的,也可以表示特定信息在某一类信息中是有条件出现的。
(3)IPO图:
能够方便地描绘输入数据,对数据的处理和输出数据之间的关系
6.验证软件需求应从哪4个方面进行?
(1)一致性
(2)完整性
(3)现实性
(4)有效性
第4章形式化说明技术
1.学会使用有穷状态机描述一个系统。
2、petri网
用于确定系统中隐含的定时问题的一种有效技术,优点是可以用于设计中,可以有效描述并发活动。
包含四个元素:
一组位置P、一组转换T、输入函数I和输出函数O
当每个输入位置所拥有的权标数大于等于从该位置到转换的线数时就允许转换
3.形式化的方法:
描述系统性质的基于数学的技术,也就是说,如果一种方法有坚实的数学基础,那么就是形式化的。
用自然语言描述需求规格说明,是典型的非形式化方法;用数据流图和E-R图建立模型,是典型的半形式化方法
4、应用形式化方法的准则。
(1)应该使用适当的表示方法
(2)应该形式化,但不要过分形式化
(3)应该估算成本
(4)应该有形式化方法顾问随时提供咨询
(5)不应该放弃传统的开发方法
(6)应该建立详尽的文档
(7)不应该放弃质量标准
(8)不应该盲目依赖形式化方法
(9)应该测试,测试在测试
(10)应该重用
第5章总体设计
1.总体设计主要完成哪两项任务?
每项任务主要完成什么?
系统设计阶段:
确定系统具体实现方案
结构设计阶段:
确定软件结构
2.软件设计过程中应遵循哪些基本原理?
(1)模块化
(2)抽象
(3)逐步求精
(4)信息隐藏和局部化
(5)模块独立
3.度量模块独立性的两个标准是什么?
在每个标准中其强弱程度如何判断和排序。
衡量模块的独立性的标准是两个定性的度量标准:
耦合性和内聚性。
(1)内聚:
标志着一个模块各个元素彼此结合的紧密程度,它是信息隐藏和局部化的自然扩展。
1)低内聚:
偶然内聚;逻辑内聚;时间内聚;
2)中内聚:
过程内聚和通信内聚
3)高内聚:
顺序内聚和功能内聚
(2)耦合:
是对一个软件结构内不同模块之间互联程度的度量。
由低到高分别是数据耦合(低)、控制耦合、特征耦合、内容耦合(高)。
★尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。
4.软件设计中启发规则有哪些?
(1)改进软件结构提高模块独立性
(2)模块规模应该适中
(3)深度,宽度,扇入和扇出都应适当
(4)模块的作用于应该在控制域之内
(5)力争降低模块接口的复杂程度
(6)设计单入口单出口的模块
(7)模块功能应该可以预测
5.熟练掌握描绘软件结构的图形工具(层次图、HIPO图、结构图)
层次图:
HIPO图
结构图
6.熟练掌握利用面向数据流的设计方法中定义的“映射”规则把数据图变换成软件结构。
第6章详细设计
1.详细设计的目标是什么?
目标是确定应该怎样具体地实现所要求的系统
2.什么是结构化程序设计?
学会将非结构化的程序转换成结构化的程序。
包含
(1)单入口单出口
(2)自顶向下逐步求精(3)使用三种基本结构
3.熟练掌握过程设计的6个工具。
(1)程序流程图:
它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。
(2)盒图:
不违背程序设计精神。
规定了五种基本图形构件:
1)顺序型、2)选择型、3)while重复型4)Until重复型循环5)多分支选择型
(3)PAD图(problemanalysisdiagram)问题分析图。
它是用结构化程序设计思想表现程序逻辑结构的图形工具。
(4)判定表:
能够清晰地表示复杂的条件组合与应该做的动作之间的关系。
(5)判定树:
有判定表的特点。
它的形式简单到不需要任何说明,一眼就可以看出其含义,因此易于掌握和使用。
(6)PDL过程设计语言也称伪码,它是正文形式表示数据和处理过程的设计工具。
4.Jackson结构程序设计方法是典型的面向数据结构的设计方法,它由哪五步组成?
(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构
(2)找出输入数据和输出数据结构中有对应关系的数据单元
(3)用下属三个规则从描绘数据结构Jackson图中导出描述程序结构的Jackson图
(4)列出所有操作和条件
(5)用伪码表示程序
5.掌握环形复杂度的三种计算方法。
(1)流图中的区域数等于环形复杂度
(2)流图的环形复杂度V(G)=E-N+2,E是流图中边的条数N是节点数
(3)流图的环形复杂度V(G)=P+1,P是流图中判定节点的数目
第7章实现
1.编码时应该遵循哪些规则?
(1)程序内部的文档
(2)数据说明
(3)语句构造
(4)输入输出
(5)效率
2.掌握软件测试的目标、准则、方法及步骤。
(1)目标:
测试时为了发现程序的错误而执行的过程;好的测试方案是极可能发现迄今世界尚未发现的错误的测试方案;成功的测试时发现了至今为止尚未发现错误的测试。
(2)准则:
所有测试都应该能追溯到用户需求;应该远在测试开始之前就制定出测试计划;
把Pareto原理应用到软件测试中(2.8效应--80%的错误很可能是由于程序中20%的错误引起的);应该从“小规模”测试开始,并逐步进行“大规模”测试;穷举测试是不可能的;为了达到最佳测试效果,应该由独立的第三方从事测试工作
方法:
黑盒测试--功能测试;白盒测试--结构测试
(3)步骤:
1)模块测试
2)子系统测试
3)系统测试
4)验收测试
5)平行运行
3.单元测试的重点(5个方面)
(1)模块接口
(2)局部数据结构
(3)重要的执行通路
(4)出错处理通路
(5)边界条件
4.什么是存根程序?
什么是驱动程序?
什么是回归测试?
什么是α测试?
什么是β测试?
(1)存根程序是一种小程序,她替代被测试的模块所调用的模块,因此存根程序也可以称“虚拟子程序”。
(2)驱动程序:
也就是一个“主程序”,它接收测试数据,把这些数据传送给被测试的模块,并且打印出有关的结果。
(3)回归测试:
是指重新执行已经做过的测试的某个子集,以保证上述这些变化没有带来非预期的副作用。
(4)α测试:
由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。
是在受控环境中进行的
(5)β测试:
由软件的最终用户们在一个或多个客户场所进行。
“真实”环境下的测试
5.什么是白盒测试技术?
在白盒法中典型的技术有哪些?
在实际中要会熟练应用。
(1)白盒测试技术:
知道产品内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定照常进行。
(2)技术:
逻辑覆盖:
语句覆盖;判定覆盖;条件覆盖;判定/条件覆盖;条件组合覆盖;点覆盖;边覆盖;路径覆盖
(3)控制结构测试:
基本路径测试;条件测试;循环测试;
6.什么是黑盒测试技术?
在黑盒法中典型的技术有哪些?
在实际中要会熟练应用。
黑盒测试技术:
知道产品具有的功能,可以通过测试来检验每个功能是否都能正常使用。
技术:
等级划分;边界值分析;错误推测和因果图
第8章维护
1.什么是软件维护?
它包括哪四项活动?
软件维护:
就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程
四项活动:
第一项:
在任何大型程序的使用期间,用户必然会发现程序错误,并且把他们遇到的问题汇报会给维护人员。
把诊断和改正错误的过程称为改正性维护
第二项:
适应性维护,也就是为了和变化的环境适当配合而进行的修改软件的活动,既是经常又是必要的维护。
第三项完善性维护:
在用户使用的过程中用户往往提出增加新功能或修改已有功能的建议。
第四项预防性维护:
为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件时。
2.决定软件可维护性的因素有哪些?
可理解性;可测试性;可修改性;可移植性;可重用性
第9章面向对象方法学引论
1.面向对象方法的优点。
理解对象、类、实例、消息、方法、属性、封装、继承、多态性、重载。
对象:
它是封装了数据结构及可以施加在这些数据结构上的操作的封装体。
类:
用于表示某些对象的共同特征(属性和操作),对象是类的实例。
实例:
就是由某个特定的类所描述的一个具体的对象。
消息:
消息传递时对象与外界相互关系的唯一途径。
方法:
方法就是对象所能执行的操作,也就是类中所定义的服务。
属性:
属性就是类中定义的数据,它是对客观世界实体所具有的性质的抽象。
封装:
封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。
继承:
是现实世界中遗传关系的直接模拟。
可用来表示类之间的内在联系以及对属性和操作的共享。
多态性:
同样的消息既可以发送给父类对象也可以发送给子类对象,即在类等级的不同层次可以共享一个行为的名字,然而不同层次的某个类却各自按自己的需要来实现这个行为。
重载:
1)函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;
2)运算符重载是指同一个运算符可以施加不同类型的操作数上面。
2.用结构化范型开发软件时与用面向对象范型开发软件时相比较,软件的生命周期有何不同?
3.掌握使用UML提供的图类来建立对象模型。
4.掌握使用UML用例图描述系统功能。
第10章面向对象分析
1.面向对象建模得到的模型包含的3个子模型与5个层次。
三个子模型(3个要素):
对象模型(静态结构);动态模型(交互次序);功能模型(数据变换)
5个层次:
主题层;类与对象层;结构层;属性层和服务层
2.建立对象模型的主要步骤。
确定类与对象;确定关联;划分主题;确定属性;识别继承关系;反复修改
3.使用UML会画状态图、事件跟踪图(顺序图)、活动图。
状态图
活动图:
事件跟踪图(顺序图)
第11章面向对象设计
1.面向对象设计的准则;启发规则。
准则:
模块化;抽象;信息隐藏;弱耦合;强内聚;可重用
启发规则:
设计结果应该清晰易懂;一般-特殊结构的深度适当;设计简单的类;使用简单的协议;使用简单的服务;把设计变动减至最少;
2.典型的可重用软件成份有哪些?
类构件应具有的特点与重用方式。
项目计划;成本估计;体系结构;需求模型和规格说明;设计;源代码;用户文档和技术文档;用户界面;数据。
类构件应具有的特点:
模块独立性强;具有高度可塑性;接口清晰、简明、可靠。
重用方式:
实例重用;继承重用;多态重用。
3.在OOD中,对OOA中得出的问题域模型做哪些修改?
OOA是提取和整理用户需求,并建立问题域精确模型的过程。
OOD则是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。
从OOA到OOD是一个逐渐扩充模型的过程
4..比较功能内聚和信息性内聚。
信息性内聚:
功能内聚:
5.比较多态重用与继承重用。
第12章面向对象实现
1.为什么应该尽量使用面向对象语言来实现面向对象分析和设计结果?
答:
面向对象语言充分支持对象、类、封装、继承、多态、重载等面向对象的概念,编译程序能够自动地在目标程序中实现上述概念,因此,把面向对象的设计结果翻译成面向对象的程序比较容易。
这就不仅降低了编程工作量而且减少了编程错误。
更重要的是,从面向对象的分析到面向对象的设计再到面向对象程序设计,适中使用统一的概念,即可以保证在软件开发过程中各个阶段平滑过渡,又有助于提高软件的可维护性和可重用性。
2.面向对象软件的哪些特点(封装性和信息隐藏)使得测试与维护变得比较容易?
哪些特点(继承性和多态性)使得测试与维护变得比较困难?
答:
面向对象的封装和信息隐藏使实现容易;继承性和多态性使实现困难
3.面向对象程序设计遵循的准则。
答:
1)提高可重用性;2)提高可扩充性;3)提高健壮性
4.面向对象的测试策略
答:
1)面向对象的单元测试;2)面向对象的集成测试(有基于线程的测试和基于使用的测试两种策略);3)面向对象的确认测试
5.测试类的主要技术。
集成测试技术。
答1、随机测试;2、划分测试;3、基于故障的测试
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 总结
![提示](https://static.bdocx.com/images/bang_tan.gif)