软件工程期末复习
软件工程期末复习资料非常全
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.软件会逐渐退化而不会磨损,其原因在于A.软件备件很难订购B.不断的变更使组件接口之间引起错误C.软件错误在经常使用之后会逐渐增加D.软件通常暴露在恶劣的环境下7.下面说法正确的是A.大多数软件系统是不容易修改的,除非它们在设计时考虑了变化B.由于软件是产品,因此可以应用其他工程制品所用的技术进行生产C.一般来说,软件只有在其行为与开发者的目标一致的情况下才能成功D.购买大多数计算机系统所需的硬件比软件更昂贵8.Ariane 5火箭发射失败的事例告诉我们A.(2)软件后备系统可以通过复制生成B.(3)软件重用必须重新进行系统论证和系统测试C. 选项(1)和(3)D.(1)系统环境的变化可能影响软件采集数据的精度、范围和对系统的控制9.软件危机的主要原因是A.软件本身的特点及开发方法。
B.软件工具落后。
C.软件生产能力不足。
D.对软件的认识不够。
10.下面的描述正确的是A.软件质量是在开发过程中逐渐构建起来的。
B.软件质量是由产品的功能、性能、易用性等外在特性决定的。
C.运行正确的软件就是高质量的软件。
D.软件产品质量越高越好,最理想的情况是达到“零缺陷”。
《软件工程》期末复习
软件工程期末复习一.填空1.计算机软件经历了____________和____________,________ 阶段。
2 数据域有三种属性_______,________和___________。
3.数据库流程图的基本步骤是_________________ ,_________________ ,___________和_______________________________ 。
4.用JACKSON图即可以表示_____________结构,又可以表示________________结构。
5. 模块独立的准则是________和______,________________较强的模块要求高_______________模块要求低。
6.软件结构:一为 ____________结构,二为________结构。
7.软件可靠性的主要指标有 ____________________及____________________。
8.一般来说,应该从____________和____________,________,___________ 四个方面研究目标系统的可行性.。
9 .数据处理问题典型类型是___和_____.10.软件工程包括三个要素______________ ,____________和______________.11 第____代语言兼有过程和非过程二重性.12.动态测试分________和__________测试13. 内聚性的七种类型是________,__,___,____,____,___,_____14.菜单可以按照______分类和______分类15 系统模型的建立可包括______和_________阶段.16.从工程管理角度看,软件设计分二步完成,首先__________然后______________.17.系统结构图中的四种类型的模型是:__,___,_______,____,18.软件测试分四个步骤:_____,_____,____ 和_______1耩合性的七种类型是_____,_____,_____,_____,____,_______及___ 耩合。
《软件工程》期末复习题及答案
《软件工程》期末复习题及答案一、单项选择题(本大题共60小题,在每小题的四个备选答案中,选出一个正确答案,并将正确答案填涂在答题卡上)1. 软件危机产生的主要原因是 A 。
A.软件日益庞大B.不能与用户良好地沟通C.开发人员编写程序能力差D.没有适应的开发模型2.软件工程的发展不包括以下那个阶段 B 。
A.传统软件工程阶段B.自主化开发阶段C.过程软件工程阶段D.构件软件工程阶段3. 现代软件工程研究的内容不包括 D 。
A.软件开发模型B.软件开发方法C.软件支持过程D.软件开发质量4.以下哪个软件生存周期模型是一种风险驱动的模型 C 。
A.瀑布模型B.增量模型C.螺旋模型D.喷泉模型5.软件的开发方法不包括 C 。
A.结构化开发方法B.面向对象开发方法C.面向管理的开发方法D. 面向数据结构的开发方法6.软件生存周期中,准确地确定软件系统必须做什么的阶段是 B 。
A.可行性分析和项目开发计划 B.需求分析 C.概要设计D.详细设计7. 需求分析中开发人员要从用户那里了解 A 。
A.软件做什么B.用户使用界面C.输入的信息D.软件的规模8. 结构化分析建立功能模型的工具是 A 。
A.DFDB.判定树/判定表C.SCD.结构化语言9. 数据词典是对数据定义信息的集合,它所定义的对象都包含于 B 。
A.数据流图B.程序框图C.软件结构D.方框图10.用于描述结构化分析中数据流加工逻辑的是 A 。
A.判定 B.ER图 C.状态 D.用例图11.下列几种耦合类型,耦合性最高的是 A 。
A.公共耦 B.控制耦合 C.标记耦 D.数据耦合12. 通信内聚是指 B 。
A. 把需要同时执行的动作组合在一起形成的模块 B各处理使用相同的输入数据或者产生相同的输出数据C一个模块中各个处理元素都密切相关于同一功能且必须顺序执行 D模块内所有元素共同完成一个功能,缺一不可13.模块 B 定义为受该模块内一个判定影响的所有模块集合。
软件工程期末复习重点
1.软件危机的介绍在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2.产生软件危机的原因与软件本身特点有关:软件开发与维护的方法不正确有关:3.消除软件危机的途径4.软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。
5.软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。
这个时期的工作通常又称为系统分析,由系统分析员负责完成。
软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。
6.开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。
其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。
7.维护时期的主要任务是使软件持久地满足用户的需要。
8.软件生命周期每个阶段的基本任务:问题定义、可行性研究,需求分析,总体设计,详细设计,编码和单元测试,综合测试。
9.常用软件模型区别原理:(1)瀑布模型:按照传统的瀑布模型开发软件,有下述的几个特点。
a)阶段间具有顺序性和依赖性:两重含义:段的输出文档正确,后一阶段的工作才能获得正确的结果。
①必须等前一阶段的工作完成之后,才能开始后一阶段的工作;②前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶b) 推迟实现的观点瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现。
c)质量保证的观点:软件工程的基本目标是优质、高产。
为了保证所开发的软件的质量,在瀑布模型的每个阶段都应坚持两个重要做法。
每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。
每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。
软件工程期末考试重点
《软件工程》期末复习重点第一章软件工程1.什么是软件工程。
A.把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;b.研究a中提到的途径。
2. 软件工程的三要素:方法、工具和过程。
第二章软件过程1.软件生命周期分为哪几个阶段?每个阶段的基本任务是什么?a.软件定义:确定软件开发工程必须完成的总目标问题定义:要解决的问题是什么可行性研究:上阶段所确定的问题是否有可行的解决办法?需求分析:目标系统必须做什么b.软件开发:具体设计和实现在前一个时期定义的软件。
概要设计:怎样宏观地解决问题详细设计:应如何具体地实现这个系统编码和单元测试:写出正确的、易理解、易维护的程序综合测试:通过各类型测试使达到预定要求。
c.运行维护:修正错误,使软件持久地满足用户需要。
改正性维护:诊断和改正使用中的错误适应性维护:修改以适应环境变化完善性维护:根据用户的要求改进和扩充以完善预防性维护:修改以为将来的维护作准备2.常用的过程模型有哪些?各自的特点及不足。
如:瀑布模型的不足是不能适应需求的动态变更。
A.瀑布模型特点:可强迫开发人员采用规范化的方法。
严格地规定了每个阶段必须提交的文档。
要求每个阶段交出的所有产品都必须是经过验证(评审)的。
缺点:太理想化,由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。
如果需求规格与用户需求之间有差异,就会发生这种情况。
只适用于项目开始时需求已确定的情况。
B.快速原型模型特点:快速软件产品开发基本上是线性顺序进行。
降低了规格说明文档变化的可能性。
减少了后续阶段错误的可能性。
c.增量模型优点:人员分配灵活,刚开始不用投入大量人力资源。
当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。
增量能够有计划地管理技术风险。
缺点:要求构件具备开放式的体系结构。
易退化为边做边改模型,从而使软件过程的控制失去整体性。
软件工程期末考试复习题
软件工程期末考试复习题 Revised by BETTY on December 25,2020《软件工程》选择题一、选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内,每小题1分)软件工程1.软件产品的开发主要是(D )。
A.复制B.再生产C.拷贝D.研制2.作坊式小团体合作生产方式的时代是(C )时代。
A.程序设计B.软件生产自动化C.程序系统D.软件工程3.软件工程与计算机科学性质不同,软件工程着重于(C )。
A.理论研究B.原理探讨C.建造软件系统D.原理的理论4.与计算机科学的理论研究不同,软件工程是一门(C )学科。
A.理论性B.原理性C.工程性D.心理性5.软件工程的出现主要是由于(C )。
A.程序设计方法学的影响B.其它工程科学的影响C. 软件危机的出现?D.计算机的发展6.在项目中,不随参与人数的增加而使软件的生产率增加的主要问题是(D )A、工作阶段间的等待时间B、生产原型的复杂性C、参与人员所需的工作站数D、参与人员之间的通信困难7.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(C )A、硬件环境B、软件开发的环境C、软件开发工具和软件开发的环境D、开发人员的素质8、下列不属于软件工程方法学三要素的是( D ):A、方法B、工具C、过程D、操作周期1.将每个模块的控制结构转换成计算机可接受的程序代码是(A )阶段的任务。
A.编码B.需求分析C.详细设计D.测试2.可行性研究的目的是决定(B )。
A.开发项目B.项目值得开发否C.规划项目D.维护项目3.据国家标准GB8566-8计算机软件开发的规定,软件的开发和维护划分为八个阶段,其中组装测试的计划是在(C )阶段完成的A.可行性研究和计划B.需求分析C.概要设计D.详细设计4、初步用户手册在(B )阶段编写。
A.可行性研究B.需求分析C.软件概要设计D.软件详细设计5. 在软件的可行性研究中,可以从不同的角度对软件的可行性进行研究,其中是从软件的功能可行性角度考虑的是(B )A、经济可行性B、技术可行性C、操作可行性D、法律可行性6. 瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。
软件工程期末复习题(含答案)
软件工程必备期末复习题选择题1.软件设计中划分模块的一个准则是( C )。
A 低内聚低耦合B低内聚高耦合C高内聚低耦合D.高内聚高耦合2.( A )是用户和设计交换最频繁的方法。
A、原型化方法B、瀑布模型法C、螺旋模型方法D、构件组装模型3. 试判断下列叙述中,哪个些是正确的( C )。
a、软件系统中所有的信息流都可以认为是事务流b、软件系统中所有的信息流都可以认为是变换流c、事务分析和变换分析的设计步骤是基本相似的A、aB、bC、cD、b和c4.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是( C )A、硬件环境B、软件开发的环境C、软件开发工具和软件开发的环境D、开发人员的素质5.20世纪50年代以来,出现了许多不同的程序设计语言,下列语言中哪个语言是低级语言( D )A、PASCALB、VISUAL BASICC、C++D、汇编语言6. 软件测试的目的是?( D )A.软件的正确性B.找出软件系统中存在的所有错误C.证明软件系统中存在错误D.尽可能多的发现软件系统中的错误7.使用白盒测试方法时,确定测试数据应根据( A )和指定的覆盖标准。
A、程序的内部逻辑B、程序的复杂程度C、该软件的编辑人员D、程序的功能8.软件维护工作的最主要部分是( C )。
A、纠正性维护B、适应性维护C、完善性维护D、预防性维护9.PDL是( B )语言。
A.高级程序设计语言B、伪码式C、中级程序设计语言D、低级程序设计语言10.软件的结构化设计(SD)方法中,一般分为概要设计和详细设计两阶段,其中详细设计主要是要建立( C )。
A、软件结构B、软件过程C、软件模型D、软件模块11.在数据流图中,○(椭圆)代表( B )A、数据流B、转换C、数据源D、外部实体12.总体设计目的是确定整个系统的( D )。
A、规模B、测试方案C、费用D、功能及模块结构13. 检查软件产品是否符合需求定义的过程称为( A )。
软件工程期末复习
软件工程期末复习第一章概述1、软件工程方法学的三个要素:方法、工具和过程2、目前广泛使用的软件工程方法学是传统方法学(结构化范型)和面向对象方法学3、软件生命周期分成哪几个阶段?软件定义、软件开发、运行维护(软件维护)3个时期软件定义分为3各阶段:问题定义、可行性研究和需求分析软件开发:总体设计、详细设计、编码和单元测试、综合测试(系统设计和系统分析)4、典型的生命周期模型包括瀑布模型、快速原型模型、螺旋模型、喷泉模型、RUP等第二章可行性研究1、可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决3种解法的可行性:技术可行性、经济可行性、操作可行性2、什么是系统流程图?它包括哪些符号?基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件。
处理(能改变数据值或数据位置的加工或部件)输入输出(表示输入或输出)连接换页连接数据流3、什么是数据流图?它包括哪些符号?(符号:正方形、圆角矩形、开口矩形、箭头)4、数据流图为什么要分层?在一张数据流图中包含多少个元素合适?一般来说,如果一张数据流图中包含的处理多于9个,人们就难于领会它的含义,因此数据流图应该分层,并且在功能级数据流图细化后得到的处理超过9个时,应该采用画分图的方法,也就是把每个主要功能都细化为一张数据流分图,而原有的功能级数据流图用来描绘系统的整体逻辑概貌。
5、什么是数据字典?它的用途是什么?它包括哪四类元素的定义?(元素定义:数据流、数据流分量(即数据元素)、数据存储、处理)6、成本估计的三种技术代码行技术、任务分解技术、自动估计成本技术第三章需求分析1、需求分析的基本任务是什么?主要包括哪几项?(任务是深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求,借助于当前系统的逻辑模型导出目标系统逻辑模型,解决目标系统“做什么”的问题)主要包括:确定对系统的综合要求、分析系统的数据要求、导出系统的逻辑模型、修正系统开发计划。
软件工程期末复习题
软件⼯程期末复习题⼀、填空题1、在软件开发过程中要产⽣⼤量的信息,要进⾏⼤量的修改,能协调软件开发,并使混乱减到最低程度。
2、结构化语⾔是介于⾃然语⾔和之间的⼀种半形式语⾔。
3、在学校中,⼀个学⽣可以选修多门课程,⼀门课程可以由多个学⽣选修,那么学⽣和课程之间是关系。
4、⼀个模块的直接上级模块的个数称为模块的。
5、从⼯程管理的⾓度看,软件设计可分为概要设计和两⼤步骤。
6、设计任何⼀个⼈机界⾯⼀般必须考虑、⽤户求助机制、错误信息处理和命令⽅式四个⽅⾯。
7、耦合的强弱取决于的复杂性、进⼊或调⽤模块的位置以及通过界⾯传送数据的多少等。
8、⼀般将⽅法、和过程称为软件⼯程的三要素。
9、形式化说明技术主要包括:有穷状态机、PETRI⽹和。
10、软件过程模型主要有:瀑布模型、快速圆形模型、增量模型、螺旋模型和。
1、软件结构是以为基础⽽组成的⼀种控制层次结构。
2、从原理上讲,软件⼯程⽅法都由建模语⾔和建模过程组成,UML属于语⾔。
3、⼀个模块拥有的直属下级模块的个数称为模块的。
4、从⼯程管理的⾓度看,软件设计可分为概要设计和两⼤步骤。
5、为了便于对照检查,测试⽤例应由输⼊数据和预期的___两部分组成。
6、根据基本机制可将程序设计语⾔分为:过程式程序设计语⾔、函数式程序设计语⾔、逻辑程序设计语⾔和程序设计语⾔四类。
7、软件元素包括程序代码、设计⽂档、、设计过程、需求分析⽂档甚⾄领域知识。
8、与⽤户沟通获取需求的⽅法包括:、⾯向数据流⾃顶向下求精、简易的应⽤规格说明技术、快速建⽴软件原型等⽅法。
9、软件过程模型主要有:瀑布模型、快速原型模型、增量模型、螺旋模型和。
10、⾯向对象的测试策略主要包括⾯向对象的单元测试、和⾯向对象的确认测试。
1.计算机软件不仅仅是程序,还应该有⼀套____________________________________。
2.在E-R图中,数据对象实体⽤长⽅形、关系⽤___________表⽰、属性⽤椭圆表⽰。
《软件工程》期末考试复习题及参考答案
软件工程复习题(课程代码252258)一、填空题(本大题共60小题)1.数据项是指__不可再分解的___数据单元。
2.软件概要设计的主要任务就是___软件结构的设计___。
3.软件维护的内容包括校正性维持,适应性维护、____完善性维护_____和预防性维护。
4.在建立对象的功能模型时,使用的数据流图中包含有处理、数据流、动作对象和___数据存储对象___。
5.规定功能的软件,在一定程度上对自身错误的作用(软件错误)具有屏蔽能力,则称此软件具有容错功能的软件。
6.软件可维护性度量的七个质量特性是可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。
7.为了便于对照检查,测试用例应由输入数据和预期的输出结果两部分组成。
8.软件结构是以模块为基础而组成的一种控制层次结构。
9.在结构化分析中,用于描述加工逻辑的主要工具有结构化语言、判定表和判定表三种。
10.软件工程是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。
11.PDL是一种介于___自然语言___和形式化语言之间的半形式化语言。
12.从软件的功能角度划分,协助用户开发软件的工具性软件称为_支撑__软件13.消除软件结构中高扇入扇出的做法是______增加中间层次的控制模块_____。
14.如果一个软件系统的全部实际加工都由原子模块来完成,而其他所有非原子模块仅仅执行控制或协调功能,这样的系统就是____完全因子分解_____的系统。
15.软件的可移植性是指当把软件移植到不同的运行环境时,不需改变其__规格___就能照原样工作的特性。
16.为满足用户对软件提出的新的要求而对软件进行扩充、改进的维护称为____完善性__维护。
17.将整个软件划分成若干单独命名和可编址的部分,称之为___模块___。
18.软件需求的____物理视图_____给出处理功能和数据结构的实际表示形式。
19.在面向对象的开发技术中,__类___是一组具有相同数据结构和相同操作的对象的集合。
软件工程期末考试复习重点
1.为什么会产生软件危机?一.软件特殊性和复杂性1.软件是逻辑产品而非物理产品,产品的进度和质量难以控制2.软件不会用坏,维护和升级并不是简单换一个新的。
3.软件的开发是基于硬件和操作系统的。
4.软件一般是从头做起的,而不是用现有的部件组装的。
二.在实践过程中采用了错误的方法和技术1.对用户的需求没有清楚认识2.认为编写代码是软件开发的主要工作3.轻视项目管理4.轻视维护2.解决软件危机的途径?1) 应该加强软件开发过程的管理。
2) 推广使用开发软件的成功技术与方法,并且不断探索更好的技术与方法。
3) 开发和使用好的软件工具,建立软件工程支持环境。
总之,为了解决软件危机,既要有技术措施(好的方法和工具),又要有必要的组织管理措施。
3.软件工程的定义软件工程以指导计算机软件开发和维护的工程科学。
采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程4.软件工程的基本原理软件工程的7条基本原理:1) 用分阶段的生命周期计划严格管理2) 坚持进行阶段评审3) 实行严格的产品控制4) 采用现代程序设计技术5) 软件工程结果应能清楚地审查6) 开发小组的人员应该少而精7) 承认不断改进软件工程实践的必要性5.文档的作用1.评估软件、跟踪软件开发的进度2.程序员之间交流的工具3.维护的重要依据1. 需求分析是什么?所谓需求分析是指软件开发人员了解软件的使用者(用户)对软件的功能、性能要求的过程。
2. 需求分析的过程?通过与用户交流获取真正需求评估和分析建模写出需求规格说明文档复查1.设计的任务根据用信息域表示的软件需求,以及功能和性能需求,进行1.数据设计2.系统结构设计3.过程设计4.界面设计2.软件设计的分类:概要设计和详细设计3.软件设计原则:模块化,抽象,逐步求精,信息隐藏。
软件工程期末考试复习题及答案
31.
下列关于程序效率的描述错误的是(C) 。 a) b) c) d) 提高程序的执行速度可以提高程序的效率 降低程序占用的存储空间可以提高程序的效率 源程序的效率与详细设计阶段确定的算法的效率无关 好的程序设计可以提高效率
32. 33.
下列伪码片段的程序流图是() ,其环路复杂度是() 下列伪码片段的环路复杂度是() a) b) c) d) 2 3 4 5 度量 估算 评估 管理 B )问题。 B.使软件生产工程化 D.加强软件的质量保证.
为了高质量地开发软件项目,在软件结构设计时必遵循(C)的原则
在建立软件系统的模块结构。应根据(C)评价系统模块划分的质量。
结构化程序设计方法要求每个(A)结构应是单入口和单出口。
开发软件时,对于提高软件开发人员工作效率至关重要的是(A) 。
软件工程中描述软件生存周期的瀑布模型一般包括计划、 (D ) 、设计、编码、测试、维护等几个阶段。其中,设 计阶段在管理上又可以依次分为(概要设计)和(详细设计)两个步骤。 a) b) c) d) 问题定义 需求调查 可行性分析 需求分析 说明方法 描述方式 准则 基本原则 总结 阶段性报告 需求分析评审 以上答案都不正确
16.
软件需求分析的任务不应包括(C)。 a) b) c) d)
17.
进行需求分析可使用多种工具;但(C)是不适用的。 a) b) c) d)
18.
ห้องสมุดไป่ตู้
1960 年底 Dijkstra 提倡的(D)是一种有效的提高程序设计效率的方法。 a) b) c) d)
19.
汇编程序是指(C) 。 a) b) c)
20.
为了实现递归子程序的正确调用,人们必须用(A)来保存(返回地址)及有关信息。 a) b) c) d)
软件工程期末复习知识点整理
复习整理一、绪论1.软件的定义软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。
(软件=程序+文档)2.软件工程的定义●是指导计算机软件开发和维护的一门工程学科;●采用工程化的原理与方法对软件进行计划、开发和维护;●把证明正确的管理技术和最好技术综合运用到软件开发中;●研究经济地开发出高质量的软件方法和技术;●研究有效维护软件的方法和技术。
3.软件危机的概念,及出现的原因软件开发技术的进步未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
产生原因:⑴软件规模越来越大,结构越来越复杂⑵软件开发管理困难而复杂。
⑶软件开发费用不断增加。
⑷软件开发技术落后。
⑸生产方式落后,仍采用手工方式。
⑹开发工具落后,生产率提高缓慢。
4.三种编程范型的特点(1) 过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构+算法;着眼于程序的过程和基本控制结构,粒度最小(2) 面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对象,粒度比较大(3) 基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合整个领域的类对象,粒度最大二、软件生存周期与软件过程1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动●定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期●目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。
●主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护(P19)2、软件生命周期划分为哪几个阶段软件生命周期分为三个时期八个阶段:●软件定义:问题定义、可行性研究;●软件开发:需求分析、概要设计、详细设计、编码、测试;●软件运行:软件维护3、瀑布模型的特点和缺陷特点:线性模型,每一阶段必须完成规定的文档(阶段间的顺序性和依赖性)优点:●可强迫开发人员采用规范化的方法。
软件工程期末复习(超详细!!!)
软件工程期末复习(超详细!!!)一:软件工程概述软件工程学的存在价值:促进软件项目成功。
软件的概念:软件(software):软件是计算机系统中与硬件相互依存的另一部分。
它包括程序、数据及其相关文档的完整集合。
(1)能够完成预定功能和性能的可执行指令(program)(2)使得程序能够适当地操作信息的数据结构(data)(3)描述程序的操作和使用的文档(document)软件危机:软件危机定义:软件在开发和维护过程中遇到的一系列严重问题。
软件危机包含两层含义:如何开发软件。
如何维护数量不断膨胀的已有软件。
软件工程(Software Engineering):是研究和应用功能如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。
软件生存周期:是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退役为止的整个过程。
一般包括计划、分析、设计、实现、测试、集成、交付、维护等阶段。
计划阶段确定待开发系统的总体目标和范围。
研究系统的可行性和可能的解决方案,对资源、成本及进度进行合理的估算。
分析阶段分析、整理和提炼所收集到的用户需求,建立完整的分析模型,将其编写成软件需求规格说明和初步的用户手册。
设计阶段(总体设计和详细设计)设计阶段的目标是决定软件怎么做。
软件设计主要集中于软件体系结构、数据结构、用户界面和算法等方面。
实现阶段(编码)实现阶段是将所设计的各个模块编写成计算机可接受的程序代码。
测试阶段设计测试用例,对软件进行测试,发现错误,进行改正。
运行和维护阶段应当在软件的设计和实现阶段充分考虑软件的可维护性。
维护阶段需要测试是否正确实现了所要求的修改,并保证在产品的修改过程中,没有做其他无关的改动。
维护常常是软件生命周期中最具挑战性的一个阶段,其费用是相当昂贵的。
软件工程三要素:工具、方法、开发过程瀑布模型:问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试、运行与维护。
软件工程期末考试复习(精)
第一章软件工程的概述软件工程的三要素:过程: 为建造高质量的软件所需完成的任务框架方法: 为软件开发提供了“如何做”的技术工具: 为软件工程方法提供了自动的或半自动的软件支撑环境软件生命周期的概念:软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程称为软件生存周期.软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。
这个过程即为计算机软件的生命周期生命周期阶段的划分原则: 各阶段的任务相对独立;同一阶段任务的性质相同;软件的生存期划分的几个阶段:1、软件定义:问题定义可行性研究(软件计划需求分析2、软件开发:系统设计软件实现软件测试3、软件使用、维护和退役软件工程的过程模型(4 个瀑布模型(生存周期模型就是传统的生命周期方法学(既自顶向下结构化开发模型方法。
优点:奠定了软件工程方法的基础;流水依赖;便于分工协作;推迟实现;文档易修改;有复审质量保证。
缺点:用户需求明确困难;用户见面晚;纠错慢;难于克服系统分析员不懂专业领域的知识,用户不懂计算机的困难,成功率低。
适合于系统要求明确的小系统。
原型模型(rapid prototype model是为了确定需求而提出的实际模型。
打破传统的自顶向下结构化开发模型方法,在计划和需求分析后,把系统主要功能接口做为设计依据,快速开发出软件样机,及时征求用户意见,正确确定系统需求,然后再进一步准确地进行系统设计与实现。
优点:与用户见面快;开发成功率高,适合于需求不确定的大系统。
缺点:周期长,开发成本高。
螺旋模型(spiral model沿着螺线旋转(一个螺旋式周期,在四个象限上分别表达四个方面的活动制定计划:确定软件目标,选定实施方案,弄清项目开发的限制,选定完成目标的策略风险分析分析所选方案,考虑如何识别和消除风险,风险角度分析该策略实施工程实施软件开发,启动一个开发阶段客户评估评价前一步开发工作,提出修正建议,计划下一轮的工作特点:瀑布模型+快速原型+风险分析迭代过程统一过程过程模型RUP 的特点:用例驱动基于用例模型,开发人员可以创建一系列实现这些用例的设计和实现模型。
软件工程期末复习重点
1需求分析1需求分析的目标与任务2结构化分析方法数据流图(建模,分层,精化)画图,分0 ~ 3层,会模型语法(15’)3信息结构表示方法【需求分析的目标】:明确性、完整性、一致性、可测试性1. 什么是需求分析?需求分析阶段的基本任务是什么?答:所谓"需求分析",是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。
可以说,“需求分析”就是确定要计算机“做什么”。
【任务】:确定软件项目的目标和范围。
调查使用者的要求,分析软件必须做什么,编写需求规格说明书等它相关文档,并进行必要的需求审查。
除此之外,还包括需求变更控制,需求风险控制,需求版本控制等对需求的管理工作2.什么是结构化分析方法?该方法使用什么描述工具?结构化分析方法:是面向数据流进行需求分析的方法。
描述工具:a、数据流图b、数据字典c、描述加工逻辑的结构化语言、判定表、判定树。
2数据流图:简称DFD,就是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
数据流图的基本符号的意思:1.矩形表示数据的外部实体;2.圆角的矩形表示变换数据的处理逻辑;3.少右面的边矩形表示数据的存储;4.箭头表示数据流。
---------------------------------------------------------------------------------------------------------------------------------2 概要设计1软件概要设计的基本任务软件设计的基本任务2软件设计的基本原理模块化、抽象、信息隐藏、模块独立性、内聚性、耦合性内聚性、耦合性的划分3软件结构优化准则软件结构、模块的影响范围,模块的控制范围软件结构的优化什么是概要设计?有哪些基本任务?答:概要设计:根据用户的需求先确定软件系统的总体结构和总的设计原则基本的任务:设想供选择的方案。
软件工程要期末复习
《软件工程》期末复习第一章软件工程概述1.什么是软件危机?软件危机包含哪些问题?答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
2.简述软件危机的典型表现。
答:1.对软件开发成本和进度的估计常常很不准确;2.用户对“已完成的”软件系统不满意的现象经常发生;3.软件产品的质量往往靠不住;4. 软件常常是不可维护的;5.软件通常没有适当的文档资料;6.软件成本在计算机系统总成本所占的比例逐年上升。
3.产生软件危机的原因主要有哪些?答:软件不同于硬件,它是计算机系统中的逻辑部件不是物理部件。
软件不同于一般程序,它的一个显著特点是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。
4.什么是软件?答:软件是程序、数据及相关文档的完整集合。
其中,程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。
在1993年IEEE为软件下的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。
5.简述如何消除软件危机?答:首先应该树立对计算机软件的正确认识。
软件开发应该是组织良好、管理严密、各类人员团结协作共同完成的工程项目。
必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,并研究能更有效地开发软件的技术和方法。
应该积极开发和使用计算机辅助软件工程的工具。
总之,为了消除软件危机,既要有技术措施,又要有必要的组织管理措施。
软件工程正是从技术和管理两方面研究如何更好的开发和维护软件的一门新兴的工程学科。
6.软件工程是一门什么样的学科?答:软件工程师指导计算机软件开发和维护的一门工程学科,该学科的目的是生产出能按期交付的,在预算范围内的、满足用户需求的、质量合格的软件产品。
软件工程期末复习题
软件工程期末复习题一、单选题(本大题共10小题,每小题2分,共20分)1.软件是一种( C ) A.物质产品 B.物理产品 C.逻辑产品 D.文档产品2.下列4个选项中,不属于软件危机表现的是( D ) A.开发的软件可靠性差 B.经费预算不断突破,完成时间一再拖延 C.开发的软件可维护性差 D.开发的软件规模庞大,结构复杂3.下列4个选项中,不属于软件危机原因的是:软件( D ) A.规模越来越大 B.结构越来越复杂 C.开发技术落后 D.用户素质不高4.软件产品的生产主要是( D ) A.生产 B.再生产 C.开发 D.研制5.软件工程是一门( C ) A.理论性学科 B.原理性学科 C.工程性学科D.心理性学科6.软件重用的单位是( A ) A.软件模块 B.性能 C.系统 D.功能7.软件工程着重于( C ) A.理论研究 B.原理探讨 C.建造软件系统 D.原理的理论8.软件工程中的“软件”是指( D ) A.程序 B.数据 C.文档 D.程序、数据及文档9.软件开发费用只占整个软件系统费用的( B ) A.1/2 B.1/3 C.1/4D.2/310.下列4种模型中,属于文档驱动的是(C ) A.喷泉模型 B.增量模型C.瀑布模型D.螺旋模型11.下列4种模型中,较为适合用于面向对象的开发方法的是( A ) A.喷泉模型 B.增量模型品 C.瀑布模型 D.螺旋模型12.下列4中方法中,属于面向数据结构的设计方法的是(C ) A. Booch方法 B. Coad方法 C. Jackson方法 D. SA方法13.下列4中方法中,属于面向数据流的分析方法的是( D ) A. Booch方法 B. Coad方法 C. Jackson方法 D. SA方法14.软件生存周期中时间最长的阶段是( B ) A.需求分析 B.概要设计C.测试D.维护15.一般而言,软件开发各阶段中,时间长、费用高、困难大的阶段是( D ) A.需求分析 B.详细设计 C.编码 D.测试16.解决“软件必须做什么”问题的阶段是( B ) A.可行性研究 B.需求分析 C.详细设计 D.编码17.下列工作中,不在需求分析阶段进行的是( B ) A.编写需求规格说明书 B.编写集成测试计划 C.编写用户手册初稿 D.修改完善软件开发计划18.下列工作中,不在需求分析阶段进行的是( B ) A.确定软件的功能需求 B.建立软件物理模型 C.导出软件逻辑模型 D.编写需求规格说明书19.需求分析的主要结果是( C ) A.项目开发计划 B.可行性分析报告C.需求规格说明书 D.设计说明书20.需求分析要解决的最重要的问题是( A ) A.要让软件做什么 B.要给软件提供哪些信息C.要求软件工作效率怎样D.要让该软件具有何种结构21.需求规格说明书的内容不应包括软件的( B ) A.主要功能与性能B.算法详细过程 C.用户界面 D.运行环境22.系统流程图用于描述待开发软件的(B ) A.结构系统 B.物理系统C.程序系统D.逻辑系统23.数据流图用于描述待开发软件的( B ) A.物理模型 B.逻辑模型 C.控制结构 D.数据结构24.DFD中的每个加工至少有( A ) A.一个输入流和一个输出流B.一个输入流或一个输出流 C.一个输入流 D.一个输出流25.分层DFD的顶层图描述了系统的( B ) A.细节 B.输入与输出 C.作者 D.绘制时间26.在DFD中,下列数据流中可以不命名的是( A ) A.处理与处理之间的数据流 B.处理与局部数据存储之间的数据流C.处理与数据源点之间的数据流D.处理与数据终点之间的数据流27.DFD中一般不画( A ) A.控制流 B.数据流 C.局部数据存储 D.外部实体28.在DFD中,箭头表示( A ) A.数据流 B.数据存储 C.数据处理 D.数据源点29.在DFD中,双杠表示( D ) A.数据处理 B.数据源点 C.数据流 D.数据存储30.父图与子图平衡指子图的输入、输出流同父图相应加工的输入、输出流( A ) A.必须一致 B.数目必须相等 C.名字必须相同 D.数目必须不等31.数据字典中一般不包括( D ) A.数据流条目B.数据存储条目C.加工条目 D.源点与终点条目32.关于DD的4类条目,不可再分解的最小元素是( B ) A.数据流条目 B.数据项条目 C.数据存储条目 D.加工条目33.表示“X由a或b组成”的DD定义式是(B ) A. X=a+b B. X=[a|b] C.X=a…b D. X=|a b|34.软件结构图上,一层中最大模块数称为该图的( C ) A.扇出 B.扇入C.宽度D.深度35.当一幅DFD中既有变换流又有事务流时,这就是一个( C ) A.变换型DFD B.事务型DFD C.综合型DFD D.分层DFD35.软件结构图上,一层中最大模块数称为该图的( C ) A.扇出 B.扇入C.宽度D.深度36.软件开发中结构化设计方法用于( B ) A.测试用例设计 B.概要设计 C.程序设计D.详细设计37.软件结构使用的图形工具,一般采用( C ) A.DFD图B.PAD图C.SC图D.ER图38.软件结构图中,模块框之间若有直线接,表示它们之间存在着(A )A.调用关系B.组成关系 C.连接关系 D.顺序执行关系39.下列工作中,不在概要设计进行的是( D ) A.划分模块B.确定模块功能 C.确定模块的接口 D.确定模块的算法40.为提高模块独立性,模块之间最好是(D ) A.公共耦合 B.控制耦合C.内容耦合D.数据耦合41.为提高模块独立性,模块内部最好是(C ) A.逻辑内聚 B.时间内聚C.功能内聚D.通信内聚42.在软件概要设计中,不使用的图形工具是( D ) A.SC图 B.IPO图C.IDEF图D.PAD图43.概要设计与详细设计衔接的图形工具是( B ) A.数据流图 B.结构图 C.程序流程图 D.PAD图44.软件概要设计结束后得到( B ) A.数据流图 B.结构图 C.程序流程图 D.PAD图45.划分模块时,一个模块的( A ) A.作用范围应在其控制范围内B.控制范围应在其作用范围内C.作用范围与控制范围互不包含D.作用范围与控制范围不受任何限制46.结构化程序设计主要强调程序的( C ) A.效率 B.执行速度 C.易读性 D.规模47.详细设计的任务是确定每个模块的( B ) A.外部特性 B.内部特性C.功能D.输入输出数据48.程序的三种基本控制结构是( B ) A.过程、子程序和分程序 B.顺序、选择和重复C.递归、堆栈和队列D.调用、返回和转移49.程序的三种基本控制结构的共同特点是( D ) A.不能嵌套使用 B.只能用来写简单程序C.已经用硬件实现D.单入口和单出口50.下列工作中不属于详细设计基本任务的是( D ) A.为模块内的数据结构进行设计B.对数据库进行物理设计C.为每个模块进行详细的算法设计D.为模块进行功能设计51.不属于详细描述处理过程常用的工具是( D ) A.图形B.表格C.语言 D.程序52.下列4图中不属于详细设计中描述处理过程的主要工具的是(D )A.PAD图B.IPO图 C.程序流程图 D.程序图53.结构化程序设计主要强调的是( A ) A.程序易读性 B.程序效率 C.程序规模 D.程序代码54.下列4图中支持结构化程序设计原理并可自动生成程序的是( D ) A.程序流程图B.工程网络图C.程序图D. PAD图55.下列结构中不属于Jackson结构图描述的基本结构的是( D ) A.顺序结构 B.选择结构 C.重复结构 D.组装结构56.结构化程序思想提出前程序设计中曾强调程序的效率,现在更重视程序的( D )A.效率B.安全性C.一致性D.可理解性57.源程序文档化要求在每个模块之前加序言性注释。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一:软件工程导论软件工程导论主要介绍的内容包括:软件危机、软件工程、软件生命周期、软件过程等。
该节内容要点包括:1.软件危机的概念以及包含的内容软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
2.软件工程方法学包含的三个要素(p23)方法:方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题工具:工具是为运用方法而提供的自动的或半自动的软件工程支撑环境过程:过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤3.面向对象方法学具有的4个要点(1) 把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。
(2) 把所有对象都划分成类(class)。
(3) 按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。
(4) 对象彼此间仅能通过发送消息互相联系。
4.软件生命周期由软件定义、软件开发、运行维护3个时期组成,每个时期又进一步划分成若干个阶段。
不同阶段使用的几个典型软件。
需求分析:vision ,PSL/PSA详细设计:GUIDesign, vision测试:winRunner,QARun,Jmeter,badboy5.软件工程,或者说软件生命周期包括的内容:可行性分析、需求定义、总体设计、详细设计、编码和测试、维护等阶段。
6.软件生命周期的3个时期及各个时期的主要阶段(p33)软件定义(问题定义,可行性分析,需求分析)软件开发(总体设计,详细设计,编码和单元测试,综合测试)运行和维护(通常对维护时期不再进一步划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程)(改正性维护,适应性维护,完善性维护,预防性维护)二:可行性分析1.从三个方面研究可行性:技术可行性、经济可行性、操作可行性2.可行性研究的目的是:确定问题是否值得去解决3.系统流程图的概念(p16)它是物理数据流图而不是程序流程图。
基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。
系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程4.分层和数据流图的概念(p19-20)。
注意系统流程图和数据流图的概念是不同的。
首先用一张高层次的系统流程图描绘系统总体概貌,表明系统的关键功能。
然后分别把每个关键功能扩展到适当的详细程度,画在单独的一页纸上。
数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
数据流图是系统逻辑功能的图形表示5.数据字典(DD)的定义和组成(p35-36)。
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
数据流图和数据字典共同构成系统的逻辑模型。
数据字典应该由下列4类元素的定义组成(1)数据流(2)数据流分量(3)数据存储(4)处理例名字:定货报表别名:定货信息描述:每天一次送给采购员的需要定货的零件表定义:定货报表=零件编号+零件名称+定货数量+目前价格+主要供应者+次要供应者位置:输出到打印机6.给出一个案例,能画出它的系统流程图、流图、并计算系统流图的环形复杂度。
(参考7、实现章节p71-72页内容)系统流程图基本符号:例子:7.P63开始:图书借阅系统的数据流图、层次结构图、模块图和状态图(参见3.需求分析p44)读者读者图书借阅管理系统借书证还书成功信息条形码 不予借阅信息 借书成功信息顶层图条形码 借书处理1 还书处理2库存记录读者档案还书成功信息借书证 借书成功信息不予借阅信息1层图查询读者档案1.1办理借阅手续1.3库存记录读者档案借书成功信息借书证首次借阅信息再次借阅信息检查借书数量1.2借阅信息不予借阅信息检查借阅时间2.1办理还书手续2.3库存记录读者档案还书成功信息条形码未超期信息超期信息2层图罚款处理 2.2罚款单据层次结构图:模块图:状态图:数据流图有四种基本符号:正方形(或立方体)表示数据的源点或终点;圆角矩形(或圆形)代表变换数据的处理;开口矩形(或两条平行横线)代表数据存储;箭头表示数据流,即特定数据的流动方向。
三:需求分析1.分析建模及3种模型(p29-30)模型,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。
通常,模型由一组图形符号和组织这些符号的规则组成。
需求分析过程应该建立3种模型,它们分别是数据模型、功能模型和行为模型。
2.IPO图是输入、处理、输出图的简称(p58)能够方便地描绘输入数据、对数据的处理和输出数据之间的关系IPO图使用的基本符号既少又简单它的基本形式是在左边的框中列出有关的输入数据,在中间的框内列出主要的处理,在右边的框内列出产生的输出数据。
处理框中列出处理的次序暗示了执行的顺序,但是用这些基本符号还不足以精确描述执行处理的详细情况。
在IPO图中还用类似向量符号的粗大箭头清楚地指出数据通信的情况。
3.需求分析的几种方法:(p9)访谈面向数据流自顶向下求精简易的应用规格说明技术快速建立软件原型四:总体设计总体设计的基本目的就是回答“概括地说,系统应该如何实现?”这个问题,因此,总体设计又称为概要设计或初步设计。
1.总体设计过程由两个主要阶段组成(p5)系统设计阶段,确定系统的具体实现方案结构设计阶段,确定软件结构2.总体设计应该遵循的几个设计原则:模块化、抽象、逐步求精、信息隐藏和局部化、模块独立(p16)3.信息隐藏的概念(p31)、模块独立的概念(p33)。
信息隐藏: 一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。
模块独立:模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。
4.模块独立的两个衡量准则及定义:内聚和耦合(p34)。
耦合衡量不同模块彼此间互相依赖(连接)的紧密程度内聚衡量一个模块内部各个元素彼此结合的紧密程度5.关于独立性的设计原则:在软件设计中应该追求尽可能紧密内聚松散耦合的系统;6.耦合的设计原则(p40):数据耦合是低耦合,内容耦合是高耦合,应该尽量使用数据耦合,少用特征耦合和控制耦合,不使用内容耦合;高内聚有两种,顺序内聚和功能内聚,功能内聚是最高程度的内聚。
7.深度、宽度、扇入和扇出的概念。
(p51-53)深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度。
宽度是软件结构中同一个层次上的模块总数的最大值。
一般说来,宽度越大系统越复杂。
对宽度影响最大的因素是模块的扇出。
扇出是一个模块直接控制(调用)的模块数目一个模块的扇入表明有多少个上级模块直接调用它8.面向数据流的设计方法(p72)面向数据流的设计方法的目标是给出设计软件结构的一个系统化的途径。
数据流图描绘信息在系统中加工和流动的情况面向数据流的设计方法把信息流映射成软件结构面向数据流的设计方法理论上可以设计任何软件的结构五:详细设计1.过程设计的工具有:程序流程图、盒图、PAD图、判定表、判定树、过程设计语言(PDL)2.判定表和判定树的定义和表示方法(p51-54),根据给定的案例,可以画出判定表或者判定树。
判定表能清晰地表示复杂的条件组合与应做的动作之间的对应关系。
(一张判定表由4部分组成,左上部列出所有条件,左下部是所有可能做的动作,右上部是表示各种条件组合的一个矩阵,右下部是和每种条件组合相对应的动作)判定树是判定表的变种,他也能清晰地表示复杂的条件组合与应做的动作之间的对应关系3.UI设计的工具(Firework,photoshop,lllustrator);第一个设计出GUI的公司(施乐)。
六:实现这部分主要关注测试方面的内容。
1.软件测试的目标(p20)测试是为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;成功的测试是发现了至今为止尚未发现的错误的测试。
2.两种测试方法:黑盒测试、白盒测试(p22)。
白盒测试中测试用例的含义(p58)通常把测试数据和预期的输出结果称为测试用例3.测试的几个步骤:模块测试(或者说单元测试)、子系统测试、集成测试(或者叫系统测试)、验收测试(也叫确认测试)4.回归测试的概念(p52)在集成测试的范畴中,所谓回归测试是指重新执行已经做过的测试的某个子集,以保证程序变化没有带来非预期的副作用5.Alpha测试和Beta测试(p57)Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。
开发者负责记录发现的错误和使用中遇到的问题。
总之,Alpha测试是在受控的环境中进行的。
Beta测试由软件的最终用户们在一个或多个客户场所进行。
因此,Beta测试是软件在开发者不能控制的环境中的“真实”应用。
用户记录在Beta测试过程中遇到的一切问题(真实的或想像的),并且定期把这些问题报告给开发者。
接收到在Beta测试期间报告的问题之后,开发者对软件产品进行必要的修改,并准备向全体客户发布最终的软件产品。
6.白盒测试中的路径覆盖含义(p68)。
你会设计路径覆盖吗?上课时我已讲过案例。
白盒测试中的覆盖标准包括:语句覆盖(最弱)、判定覆盖、条件覆盖。
路径覆盖的含义是,选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。
7.基本路径测试技术设计测试用例(p70-73),,,要求会画流图,会计算环形复杂度。
第一步,根据过程设计结果画出相应的流图。
第二步,计算流图的环形复杂度。
(1)流图中的区域数等于环形复杂度。
(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。
第三步,确定线性独立路径的基本集合。
第四部,设计可强制执行基本集合中每条路径的测试用例。
8.黑盒测试力图发现下述类型的错误(p79)①功能不正确或遗漏了功能;②界面错误;③数据结构错误或外部数据库访问错误;④性能错误;⑤初始化和终止错误。
9.等价划分的概念和理解(p82)等价划分是一种黑盒测试技术,这种技术把程序的输入域划分成若干个数据类,据此导出测试用例。
一个理想的测试用例能独自发现一类错误。
每一个数据类的一个典型值在测试中的作用与这一类中所有其他值的作用相同。
因此,可以从每个等价类中只取一组数据作为测试数据。
七:维护维护的工作量是软件工程中最多的,比开发时间还要多。
软件工程的目的是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。