南京邮电大学软件工程考试重点整理(7页).doc

上传人:1595****071 文档编号:37288195 上传时间:2022-08-30 格式:DOC 页数:7 大小:417KB
返回 下载 相关 举报
南京邮电大学软件工程考试重点整理(7页).doc_第1页
第1页 / 共7页
南京邮电大学软件工程考试重点整理(7页).doc_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《南京邮电大学软件工程考试重点整理(7页).doc》由会员分享,可在线阅读,更多相关《南京邮电大学软件工程考试重点整理(7页).doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-第一章第二章第三章第四章 南京邮电大学软件工程考试重点整理-第 7 页第五章 概述1、软件危机定义:软件危机就是软件开发和维护过程中遇到的一系列严重问题。软件危机包括两方面的问题:如何开发软件,怎样满足对软件日益增长的需求;如何维护数量不断膨胀的现有软件。2、软件危机的主要表现:产品不符合用户的实际需要;软件开发生产率提高速度不能满足客观需要(软件的生产率远远低于硬件生产率和计算机应用的增长率,不能充分利用硬件的巨大潜力);软件产品的质量差(软件可靠性和质量保证的定量概念刚刚出现不久,软件质量保证技术(审查、复审、测试)没有贯穿到软件开发的全部过程中);对软件开发成本和进度的估计常常不准确(

2、实际成本比估计成本可能高,实际进度比预期进度推迟,会降低开发者信誉级别,赶进度也可能降低质量);软件的可维护性差(程序中很多错误是难免的,这些程序有时不能适应硬件环境的改变,也不能根据需要增加新功能,软件的不可重用性,造成了重复开发功能类似的软件);软件文档资料通常既不完整也不合格(计算机软件不应仅有程序,还应包括一整套文档资料);软件的价格昂贵(软件成本在计算机系统的总成本中所占的比例逐年上升,硬件成本下降,软件开发需要大量人力)。3、软件危机主要原因:忽视软件开发前期的需求分析;开发过程缺乏统一的、规范化的方法论的指导;文档资料不齐全或不准确;忽视与用户之间、开发组员之间的交流;忽视测试的

3、重要性;不重视维护或由于上述原因造成维护工作的困难。书本:软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件,缺乏可见性,且规模庞大;目前相当多的软件从业人员对软件的开发维护还有不少错误的观念,在实践过程中没有采用工程化的方法,这是产生危机的主要原因;开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的需要;软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范;在软件开发和维护关系问题上存在错误的概念,应该把软件维护的概念引入到然间开发的各个阶段,有利于日后的维护工作,降低成本。4、软件工程三个要素:过程、方法和工具5、软件工程定义:用科学知识和技术原理来定义

4、、开发、维护软件的一门工程学科,也是一门涉及计算机科学、工程科学、管理科学、数学领域的综合性交叉学科。软件工程着眼于如何建造一个软件系统。软件工程要用工程科学中的技术来进行成本估算、进度安排以及制定计划和方案;利用管理科学中的方法、原理来实现软件生产的管理;用数学的方法建立软件开发中的各种模型和算法,如可靠性模型、说明用户要求的形式化模型等。 6、软件工程的目标:付出较低的开发成本;达到要求的软件功能,取得较好的软件性能;开发软件质量指标高;需要较低的维护费用;能按时完成开发工作,及时交付使用。7、软件工程的研究内容:软件开发模型(如瀑布模型、增量模型、迭代模型等) 软件开发方法(如面向过程方

5、法、面向数据方法、面向对象方法等) 软件支持过程(如CASE工具ROSE、北大青鸟系统、Power Designer 等) 软件管理过程(如IS09000、CMM(软件能力成熟度模型)、软件企业文化等)8、软件工程基本原理:用分阶段的生命周期计划严格管理(在软件开发与维护的漫长生存周期中,需要完成许多性质各异的工作,应该把软件生存周期划分为若干个阶段,并相应制定出切实可行的计划,严格按照计划对软件的开发与维护工作进行管理。严格执行6类计划:概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运行维护计划。不能受客户或上级影响而擅自背离计划);坚持进行阶段评审(大部分错误是在编码之前造成

6、的;错误发现与改正得越晚,所付出的代价也越高);实行严格的产品控制(在软件开发中不应随意改变需求,但是必要时可以,必须实行严格的产品控制,其中主要是实行基准配置管理,又称为变动控制:一切有关修改软件的建议,特别是涉及对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准后才能实施修改);采用现代程序设计技术(近年来面向对象技术已经在许多领域中迅速取代了传统的结构设计技术,实践表明,采用先进的技术不仅可以提高软件开发和维护的效率,而且可以提高软件产品的质量);结果应能清楚地审查(为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限规定开发组织的责任和产品标准

7、,从而使得所得到的结果能够清楚地审查);开发小组人员应少而精(开发小组成员素质应该高,而人数则不宜过多);承认不断改进软件工程实践的必要性(不仅要积极主动地采纳新技术,而且要注意不断总结经验。第二章 软件开发模型1、软件生存周期:一个软件产品从定义、开发、维护到废弃的时间总和称为软件的生存周期。软件生存周期分为可行性研究与计划,需求分析,概要设计,详细设计,实现,综合测试,确认测试,使用与维护。2、软件生存周期的基本任务:可行性研究和项目开发计划(回答“要解决的问题是什么,该问题有行得通的解决办法吗,若有解决问题的办法,则需要多少费用资源时间等”,结束标志是提出关于问题性质、工程目标和规模的问

8、题定义书面报告,提出可行性研究报告,若问题值得解决,制定项目开发计划);需求分析(回答“为了解决这个问题,目标系统必须做什么”,确定目标系统的功能,结束标准是给出软件需求规格说明书);概要设计(回答“概括地说应如何解决这个问题”,把确定的各项功能需求转换程序要的体系结构,设计软件的结构,确定程序的模块组成及模块间关系,同时设计该项目的总体数据结构和数据库结构,结束标准是给出概要设计文档);详细设计(为每个模块完成的功能进行具体描述,把功能描述转变为精确的结构化的过程描述,结束标准是设计出程序的详细规格说明);编码(把每个模块的控制结构转换成计算机可接受的程序代码,结束标准是某种程序设计语言表示

9、的原程序清单);测试(在设计测试用例的基础上检验软件的各个组成部分是否达到预定要求,结束标准是软件合格交付用户使用);软件维护(通过各种必要的维护活动是系统持久的满足用户需要)3、结构化开发方法:是一种面向数据流的开发方法,它的基本原则是功能的分解与抽象。结构化方法提出了一组提高软件结构合理性的准则,如分解和抽象、模块的独立性、信息隐蔽等。总的指导思想:自顶向下,逐步求精。第三章 需求分析1、需求分析的原则:能够表达和理解问题的数据域和功能域(所有软件开发的最终目的都是为了解决数据处理的问题,需求分析阶段必须明确系统中应具备的每一个加工、加工处理对象和由加工所引起的数据形式的变化);能够将复杂

10、问题分解简化(为了便于问题的解决和实现,需要队员被复杂的问题按照某种方式进行分解(功能域或数据域,横向或纵向),是系统的理解和实现变得较为容易);能够给出系统的逻辑表示和物理表示(逻辑表示用于指明系统所要达到的功能要求和需要处理的数据,不涉及实现的细节,物理表示用于指明处理功能和数据结构的实际表现形式,通常由系统中的设备决定,给出这对于满足系统处理需求所提出的逻辑限制条件和系统中其他成分提出的物理限制是必不可少的)。2、需求分析的任务:确定对系统的综合需求(系统功能需求,系统性能需求,环境的需求,将来可能提出的需求);分析系统的数据要求;导出系统的逻辑模型(通常用数据流图、数据字典和主要的处理

11、算法描述);编写文档。3、需求开发过程:需求的获取(用户面谈;需求专题讨论会;问卷调查;现场观察;原型化方法(原型是所提出的新产品的部分实现,建立原型可以解决在产品开发的早期阶段需求不确定的问题);基于用例的方法(用例建模);需求分析(定义系统的边界;分析需求可行性;确定需求优先级;建立需求分析模型;创建数据词典);编写需求规格说明书(需求分析阶段的最后一步工作是将对系统分析的结果用标准化的文档,即软件需求规格说明书的形式清晰地描述出来,以此作为审查需求分析阶段工作完成情况的依据和设计阶段开展工作的基础。需求规格说明书是系统所有相关人员,包括用户和开发人员对软件系统共同理解和认识的表达形式,是

12、需求分析阶段最重要的技术文档。需求规格说明书主要内容:引言、项目概述、具体需求);需求验证(验证需求的一致性;验证需求的完整性;验证需求的正确性;验证需求的无二义性;验证需求的可验证性;验证需求的可修改性;验证需求的可跟踪性)4、需求管理第四章 结构化分析与结构化设计基础1、数据流图2、结构化设计(结构化设计是一种典型的面向数据流的软件总体设计方法,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构,并且只包含顺序选择重复三种结构)总体设计目标:综合采用各种技术手段,将系统需求转换为模块结构、数据结构(或对象/类结构)的表达式,并实现系统的性能、安全性、可靠性要求。结果:设计文档3、模块

13、独立性的定性标准:耦合性和内聚性。耦合也称块间关系,是对一个软件结构内不同模块间相互联系紧密程度的度量,耦合性越强,模块独立性越差,追求尽可能松散的耦合系统,耦合强度取决于模块间即可的复杂程度、调用方式及传递的信息;内聚也称为块内联系,是模块功能强度的度量,即一个模块内部各元素彼此结合紧密程度的度量。内聚性越高,模块独立性越好,追求紧密的内聚。耦合性由低到高:无直接耦合 数据耦合(传递数据值) 标记耦合(传递数据结构) 控制耦合(传递控制信息) 公共耦合(通过一个公共数据环境相互作用) 内容耦合(直接使用内部数据或通过非正常入口转入另一个模块内部)内聚性由低到高:偶然内聚 逻辑内聚 时间内聚

14、通信内聚 顺序内聚 功能内聚 第五章 构件级设计与实现1、详细设计的主要任务:为每个模块确定采用的算法(根据概要设计阶段所建立的软件结构,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述);确定每一模块的内部数据结构及数据库的物理结构为系统中所有模块确定并构造算法实现所需的内部数据结构;根据前一阶段确定是数据库的逻辑结构,对数据库的存储结构存取方法等物理结构进行设计);确定模块接口的细节按照模块功能的要求,确定模块接口的详细信息,包括模块之间的接口信息、模块与外部的接口及用户界面等);要为每一个模块设计出一组测试用例(测试用例是软件测试计划的重要组成部分,负责详细设计的软件人员对模块

15、情况了解的最清楚);编写文档,参加复审(详细设计阶段的成果主要以详细设计说明书的形式保留下来,通过复审对其进行改进和完善后作为编码阶段进行程序设计的主要依据)。原则:采用自顶向下,逐步求精的程序设计方法;使用3种基本控制结构构造程序(反对滥用GOTO语句,由顺序选择循环三种基本控制结构,单入口单出口);选择恰当的描述工具描述模块的算法。第六章 面向对象方法及UML建模语言1、面向对象的基本概念:对象:是系统中描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和对这组属性进行操作的一组服务组成。属性是用来描述对象静态特征的一个数据项。服务是用来描述对象动态特征的一个操作序列。对象是属

16、性和服务的结合体。类:是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。类代表一个抽象的概念或事物,对象是在客观世界中实际存在的类的实例。消息:是对象发出的服务请求,一般包含提供服务的对象标识、服务标识、输入和应答等信息。一个对象向另一个对象发出消息请求某项服务,接收消息的对象响应该消息,激发所要求的服务操作,并将操作结果返回给请求服务的对象。封装性:是把对象的属性和服务结合成一个独立的系统单位。封装是一种信息隐蔽技术,用户只能见到对象封装界面上的信息,对象内部对用户是隐蔽的。也就是说,用户只知道某对象是“做什么”的,而不知道“

17、怎么做”。封装将外部接口与内部实现分离开来,用户不必知道行为实现的细节,只须用消息来访问该对象。封装体现了良好的模块性,他将定义模块和实现模块分开。封装使对象的内部软件的范围边界清楚,有一个描述该对象和其他的对象之间通信的接口;使模块内部的数据受到很好的保护,避免外部的干扰。封装大大增强了软的可维护性。继承性:继承是指子类可以自动拥有父类的全部属性和服务。当类A不但具有类B的属性,而且还具有自己的独特属性时,称类A继承了类B,继承关系常称为“即是”关系。继承分为单重继承和多重继承两种。在类的层次结构中,一个类可以有多个子类,也可以有多个超类。如果一个类至多只能有一个超类,则一个类至多只能直接继

18、承一个类,这种继承方式称为单重继承(树状结构)。如果一个类可以直接继承多个类,这种方式称为多重继承(网状结构)。多态性:多态性是指相同的操作或函数、过程作用于多种类型的对象上并获得不同结果。不同的对象收到同一消息产生完全不同的结果,这种现象称为多态性。多态性机制不仅增加了面向对象软件系统的灵活性、可理解性和可维护性,进一步减少了信息冗余,而且显著提高了软件的可重用性和可扩充性。2、面向对象方法使用的5类图:用例图:用于表示系统的功能,并指出各种功能的操作。静态图:包括类图、对象图及包图,表示系统的静态结构。行为图:包括状态图和活动图,用于描述系统的动态行为和对象之间的交互关系。交互图:包括顺序

19、图和合作图,用于描述系统的对象之间动态合作关系。实现图:包括构件图和配置图,用于描述系统的物理实现。第七章 面向对象分析1、面向对象分析的3个模型与5个层次:3个模型:对象模型、动态模型、功能模型。5个层次:主题层、类-&-对象层、结构层、属性层、服务层。2、建立动态模型:对于一个系统来说,功能模型指明了系统应该“做什么”,而动态模型则明确规定了“什么时候做”。即在何种状态下、接受了什么时间的触发,来确定对象的可能事件顺序。步骤:编写典型交互行为的脚本(不必包含每个偶然事件,但必须保证不遗漏常见的交互行为);从脚本中提取事件,确定其动作对象和接受事件的目标对象;排列事件发生的顺序,确定每个对象

20、可能有的状态和状态间的转换关系,并用状态图描绘;比较各个不同对象的状态图,检查对象之间的一致性,确保事件之间的匹配。3、基本系统模型图第八章 面向对象的设计1、面向对象的设计准则:模块化(在面向对象的开发方法中,对象被定义为模块。对象把数据结构和作用在数据上的操作封装起来构成模块。对象是组成系统的基本模块)、抽象(面向对象方法制成过程抽象、数据抽象,类是一种抽象数据类型,在其上可以创建对象(类的成员)、信息隐藏(对象是属性和服务的封装体,实现了信息隐藏,用户只能通过公共接口访问类中的属性)、弱耦合、强内聚(服务内聚、类内聚、一般-特殊内聚)、可重用(软件重用是提高软件开发生产率和系统质量的重要

21、途径。重用两方面含义:尽量使用已有的类;如果需要创建新类,则在设计这些新类的时候尽可能考虑将来的重用。类的设计应具有通用性,为开发相似的系统提供软件可重用)。2、面向对象设计的5个层次4个部分:5个层次:主题、类-&-对象、结构、属性、服务;4个部分:问题域(PDC)人机交互(HIC)任务管理(TMC)数据管理(DMC)第九章 软件测试1、软件测试的原则:尽早地和不断地进行软件测试(实际问题的复杂性、软件本身的复杂性与抽象性、开发期各层人员工作配合关系等因素是软件开发各阶段都可能存在错误及潜在缺陷,软件缺陷存在放大效应,错误发现越早,后阶段耗费越少,软件质量相对高);程序员小组应当避免测试自己

22、编制的程序;测试用例的设计不仅要有合法的输入数据,还要有非法的输入数据;测试用例中应由输入数据和与之对应的预期结果这两个部分组成;在对程序修改之后要进行回归测试(修改程序的同时可能引进新错误);充分注意测试中的群集现象(一段程序发现错误数目越多,则残存错误数目也较多);严格执行测试计划,排除测试的随意性(测试计划应包括:所测试软件的功能、输入和输出、测试内容、各项测试进度安排、资源要求、测试资料、测试工具、测试用例的选择、测试控制方式和过程、系统组装方式、跟踪规程、调试规程、回归测试规定、评价标准);应当对每一个测试结果做全面检查;妥善保存一切测试过程文档,为维护提供方便(测试文档包括:测试计

23、划、全部测试用例、出错统计、最终分析报告,这样能为后期维护工作带来方便)。2、软件测试方法和类型:软件测试技术分为静态分析技术与动态测试技术两种。动态测试分为黑盒测试法和白盒测试法。白盒测试法分为逻辑覆盖方法和程序路径的覆盖程度分析方法;黑盒测试法分为等价分类法(划分等价类、确立测试用例)、边界值分析法、因果图。3、大型软件系统的测试4个基本步骤:单元测试、集成测试、确认测试和系统测试。4、集成测试自顶向下方法:自顶向下集成法是一个模块一个模块地组装软件的方法。按照控制结构,从主控模块(主模块)开始,向下逐个地把模块连接起来。集成的方式有两种:深度优先组装法及宽度优先组装法。深度优先法是先把结

24、构中的一条主要的控制路径上的全部模块逐步组装起来,然后再连接其他控制路径。宽度优先法是从结构的顶层开始逐层往下组装。过程步骤:主控模块用作测试驱动器(直接附属于主控模块的各模块都用桩模块代替);按照所选的组装发,每次用一个真模块取代一个附属的桩模块;当装入每个模块式都要进行测试;完成每一组测试后再用一个真模块替代另一个桩模块;可以进行回复测试(即重新进行已经做过的全部或部分测试),以便肯定没有新的错误发生。第十章 软件维护1、软件维护产生的原因:改正在特定使用条件下暴露出来的一些潜在的程序错误和设计缺陷;由于软件使用过程中数据环境发生变化(如一个事务处理代码发生改变)或处理环境发生变化(如安装

25、新硬件或操作系统),需要修改软件以适应这种变化;用户数据处理人员在使用时常提出改进现有功能、增加新功能,以及改善总体性能的要求。为了满足这些要求,就需要通过修改软件,把这些要求纳入正在运行的软件系统,需要维护软件。2、软件维护的分类:改正性维护(软件交付使用后,由于开发时测试不够全面彻底,投入运行一段时间后在某些特定使用环境下会暴露出一些隐藏错误。改正性维护就是为改正这些错误而对软件修改)、适应性维护(由于软件运行的外部环境(软件、硬件)和数据环境等发生变化,需要修改软件,使之适应变化)、完善性维护(用户需求是经常变化的,使用过程中用户会对软件提出新功能和性能要求,完善性维护是为满足这些新要求

26、而对软件进行修改,使其功能和性能得到完善和增强)、预防性维护(为了改进未来的可维护性,或为了给未来的改进奠定更好的基础,包括逆向工程和重构工程)。3、影响软件维护成本的主要因素:系统规模(系统规模越大,理解掌握越困难,执行的功能就越复杂,需要更多维护力量)、程序设计语言(试用功能强的程序设计语言可以控制程序的规模,语言功能越强,生成的程序模块化和结构化程度越高,所需指令数就越少,程序可读性越好)、系统的年龄(老系统结构会随着不断的修改活动结构混乱,维护人员经常更换,程序变得越来越难于理解,在长期维护过程中,文档在许多地方与程序实现上不一致,维护时就会遇到很大困难)、数据库技术的应用(使用数据库可以简单有效地管理和储存用户程序中的数据,减少生成用户报表应用软件的维护工作量)、先进的软件开发技术(若使用能使软件结构稳定的分析和设计技术、复用技术等,可降低维护工作量)、设计过程中的技术(如应用类型、数学模型、任务难度、开关与标记、IF嵌套深度、索引或下标数等,会对维护工作量有影响)。4、各类维护中的侧重点:改正性维护适应性维护完善性维护可理解性可测试性可修改性可靠性可移植性可使用性效率

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁