收藏 分销(赏)

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

上传人:精*** 文档编号:4260620 上传时间:2024-09-02 格式:DOC 页数:12 大小:232.54KB
下载 相关 举报
南京邮电大学软件工程考试重点整理.doc_第1页
第1页 / 共12页
南京邮电大学软件工程考试重点整理.doc_第2页
第2页 / 共12页
南京邮电大学软件工程考试重点整理.doc_第3页
第3页 / 共12页
南京邮电大学软件工程考试重点整理.doc_第4页
第4页 / 共12页
南京邮电大学软件工程考试重点整理.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、第一章 概述1、软件危机定义:软件危机就是软件开发和维护过程中碰到的一系列严重问题。软件危机涉及两方面的问题:如何开发软件,如何满足对软件日益增长的需求;如何维护数量不断膨胀的现有软件。2、软件危机的重要表现:产品不符合用户的实际需要;软件开发生产率提高速度不能满足客观需要(软件的生产率远远低于硬件生产率和计算机应用的增长率,不能充足运用硬件的巨大潜力);软件产品的质量差(软件可靠性和质量保证的定量概念刚刚出现不久,软件质量保证技术(审查、复审、测试)没有贯穿到软件开发的所有过程中);对软件开发成本和进度的估计经常不准确(实际成本比估计成本也许高,实际进度比预期进度推迟,会减少开发者信誉级别,

2、赶进度也也许减少质量);软件的可维护性差(程序中很多错误是难免的,这些程序有时不能适应硬件环境的改变,也不能根据需要增长新功能,软件的不可重用性,导致了反复开发功能类似的软件);软件文档资料通常既不完整也不合格(计算机软件不应仅有程序,还应涉及一整套文档资料);软件的价格昂贵(软件成本在计算机系统的总成本中所占的比例逐年上升,硬件成本下降,软件开发需要大量人力)。3、软件危机重要因素:忽视软件开发前期的需求分析;开发过程缺少统一的、规范化的方法论的指导;文档资料不齐全或不准确;忽视与用户之间、开发成员之间的交流;忽视测试的重要性;不重视维护或由于上述因素导致维护工作的困难。书本:软件不同于硬件

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

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

5、、北大青鸟系统、Power Designer 等) 软件管理过程(如IS09000、CMM(软件能力成熟度模型)、软件公司文化等)8、软件工程基本原理:用分阶段的生命周期计划严格管理(在软件开发与维护的漫长生存周期中,需要完毕许多性质各异的工作,应当把软件生存周期划分为若干个阶段,并相应制定出切实可行的计划,严格按照计划对软件的开发与维护工作进行管理。严格执行6类计划:概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运营维护计划。不能受客户或上级影响而擅自背离计划);坚持进行阶段评审(大部分错误是在编码之前导致的;错误发现与改正得越晚,所付出的代价也越高);实行严格的产品控制(在软

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

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

8、需求分析(回答“为了解决这个问题,目的系统必须做什么”,拟定目的系统的功能,结束标准是给出软件需求规格说明书);概要设计(回答“概括地说应如何解决这个问题”,把拟定的各项功能需求转换程序要的体系结构,设计软件的结构,拟定程序的模块组成及模块间关系,同时设计该项目的总体数据结构和数据库结构,结束标准是给出概要设计文档);具体设计(为每个模块完毕的功能进行具体描述,把功能描述转变为精确的结构化的过程描述,结束标准是设计出程序的具体规格说明);编码(把每个模块的控制结构转换成计算机可接受的程序代码,结束标准是某种程序设计语言表达的原程序清单);测试(在设计测试用例的基础上检查软件的各个组成部分是否达

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

10、进行分解(功能域或数据域,横向或纵向),是系统的理解和实现变得较为容易);可以给出系统的逻辑表达和物理表达(逻辑表达用于指明系统所要达成的功能规定和需要解决的数据,不涉及实现的细节,物理表达用于指明解决功能和数据结构的实际表现形式,通常由系统中的设备决定,给出这对于满足系统解决需求所提出的逻辑限制条件和系统中其他成分提出的物理限制是必不可少的)。2、需求分析的任务:拟定对系统的综合需求(系统功能需求,系统性能需求,环境的需求,将来也许提出的需求);分析系统的数据规定;导出系统的逻辑模型(通常用数据流图、数据字典和重要的解决算法描述);编写文档。3、需求开发过程:需求的获取(用户面谈;需求专题讨

11、论会;问卷调查;现场观测;原型化方法(原型是所提出的新产品的部分实现,建立原型可以解决在产品开发的初期阶段需求不拟定的问题);基于用例的方法(用例建模);需求分析(定义系统的边界;分析需求可行性;拟定需求优先级;建立需求分析模型;创建数据词典);编写需求规格说明书(需求分析阶段的最后一步工作是将对系统分析的结果用标准化的文档,即软件需求规格说明书的形式清楚地描述出来,以此作为审查需求分析阶段工作完毕情况的依据和设计阶段开展工作的基础。需求规格说明书是系统所有相关人员,涉及用户和开发人员对软件系统共同理解和结识的表达形式,是需求分析阶段最重要的技术文档。需求规格说明书重要内容:引言、项目概述、具

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

13、同模块间互相联系紧密限度的度量,耦合性越强,模块独立性越差,追求尽也许松散的耦合系统,耦合强度取决于模块间即可的复杂限度、调用方式及传递的信息;内聚也称为块内联系,是模块功能强度的度量,即一个模块内部各元素彼此结合紧密限度的度量。内聚性越高,模块独立性越好,追求紧密的内聚。耦合性由低到高:无直接耦合 数据耦合(传递数据值) 标记耦合(传递数据结构) 控制耦合(传递控制信息) 公共耦合(通过一个公共数据环境互相作用) 内容耦合(直接使用内部数据或通过非正常入口转入另一个模块内部)内聚性由低到高:偶尔内聚 逻辑内聚 时间内聚 通信内聚 顺序内聚 功能内聚 第五章 构件级设计与实现1、具体设计的重要

14、任务:为每个模块拟定采用的算法(根据概要设计阶段所建立的软件结构,选择某种适当的工具表达算法的过程,写出模块的具体过程性描述);拟定每一模块的内部数据结构及数据库的物理结构为系统中所有模块拟定并构造算法实现所需的内部数据结构;根据前一阶段拟定是数据库的逻辑结构,对数据库的存储结构存取方法等物理结构进行设计);拟定模块接口的细节按照模块功能的规定,拟定模块接口的具体信息,涉及模块之间的接口信息、模块与外部的接口及用户界面等);要为每一个模块设计出一组测试用例(测试用例是软件测试计划的重要组成部分,负责具体设计的软件人员对模块情况了解的最清楚);编写文档,参与复审(具体设计阶段的成果重要以具体设计

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、各类维护中的侧重点:改正性维护适应性维护完善性维护可理解性可测试性可修改性可靠性可移植性可使用性效率

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 远程教育/电大

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服