软件工程考点汇总.doc_第1页
软件工程考点汇总.doc_第2页
软件工程考点汇总.doc_第3页
软件工程考点汇总.doc_第4页
软件工程考点汇总.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、 概论计算机软件:计算机软件指计算机系统中的程序及其文档。软件危机指在计算机软件的开发和维护过程中遇到的一系列严重问题。表现:软件成本日益增长、开发进度难以控制、软件质量差、软件维护困难。原因:用户需求不明确、缺乏正确的理论指导、软件规模越来越大、软件复杂度越来越高软件的特点:l 软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。l 软件是被开发或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大。l 软件的使用没有那样的机械磨损和老化问题。但是软件会因为维护的过程中修改程序而造成副作用从而使故障率升高。l 软件的开发常受到计算机的限制,对计算机硬件有着不同程度的依赖性。l 软件的开发至今尚未完全实现自动化。l 软件成本相当昂贵。l 相当多的软件工作涉及到社会因素。软件的分类:系统软件支持软件应用软件 按软件工作方式划分: 实时处理软件 分时软件 交互式软件 批处理软件 按软件服务对象的范围划分: 项目软件 产品软件 按使用的频度进行划分: 一次使用 频繁使用 按软件失效的影响进行划分: 高可靠性软件 一般可靠性软件软件语言: 需求定义语言 功能性语言 设计性语言 实现性语言(即程序设计语言) 文档语言软件工程的定义:Fritz Bauer:软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工程原则IEEE: 软件工程是(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中;(2)(1)中所述方法的研究计算机科学技术百科全书:软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程软件生存周期:软件生存周期是指一个软件从立项、制造、测试、使用、维护到软件废止为止的一整个时期。计算机系统工程、需求分析、设计、编码、测试、运行和维护。软件过程模型:1. 瀑布模型:waterfall modell 接受上一阶段的活动的结果作为本阶段活动的输入。l 依据上一阶段的活动的结果实话本阶段应该完成的活动。l 对本阶段的活动进行评审。l 将本阶段活动的结果作为输出,传递给下一阶段。2. 演化模型:evolutionary modell 从构造初始的原型出发,逐步将其演化成最终软件产品的过程。l 适用于对软件需求缺乏准确认识的情况。l 典型的演化模型:增量模型、原型模型、螺旋模型3. 增量模型:incremental modell 将软件的开发过程公成若干个日程时间交错的线性序列,每个线性序列产生软件的一个可发布的“增量”版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程,真至产生最终的完善产品。l 融合了瀑布模型的基本成分(重复地应用)和演化模型的迭代特征,强调每一次增量都发布一个可运行的产品。l 适用于需求经常发生变化的软件开发。l 可以有计划地管理技术风险。4. 原型模型:prototyping model从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求,然后快速制定原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建原型。1. 原型类型:a) 探索型exploratory prototyping原型的目的是要弄清目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。b) 实验型experimental prototyping原型的目的是验证方案或算法的合理性,是在大规模开发和实现前,用于考核方案是否合适,规格说明是否可靠。c) 演化型evolutionary prototyping原型的目的是将原型作为目标系统的一部分,通过对原型的多次改进,逐步将原型演化成最终的目标系统。2. 原型使用策略:a) 废弃策略主要用于探索型和实验型原型的开发。b) 追加策略主要用于演化型原型的开发。原型可作为单独的过程模型使用,也常被作为一种方法或实现技术应用于其他的过程模型中。5. 螺旋模型:l 将原型实现的迭代特征与瀑布模型中控制的和系统化的方面结合起来,不仅体现了这两种模型的优点,还增加了风险分析。l 螺旋模型沿着螺线自内向外旋转(四个任务区域:制定计划,风险分析,工程实施,客户评估)6. 喷泉模型:fountain model支持面向对象开发的过程模型。7. 基于构件的开发模型:component-based development modell 利用预先包装的构件来构造应用系统。l 包括领域工程和应用系统工程两部分。领域工程:目的是构建领域模型、领域基准体系结构和可复用构件库。应用系统工程:目的是使用可复用构件组装应用系统。l 基于构件的软件开发导致软件的复用。8. 形式化方法模型:formal methods建立在严格数学甚而上的一种软件开发方法。软件设计原则:1. 抽象与逐步求精a) 抽象(特殊到一般的过程)主要抽象手段有:过程抽象和数据抽象。b) 逐步求精(把问题的求解过程分解成若干步骤或阶段)2. 模块化把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件。实际上是系统分解和抽象的过程。如果模块是相互独立的,当模块越小,每个模块的工作量越低;但当模块数增加时,模块间的联系也随之增加,把这些模块起来的工作量也随之增加。3. 信息隐藏模块中所包含的信息(包括数据和过程)不允许其他不需要这些信息的模块使用。由于一个软件系统在整个软件生存期内要经过多次修改,所以在划分模块时要采取措施,使得大多数过程和数据对软件的其他部分是隐蔽的。这样,在将来修改软件时偶然引入错误所造成的影响就可以局限在一个或几个模块内部,避免影响到软件的其他部分。4. 模块独立模块完成独立的功能并且与其他模块的接口简单,符合信息隐蔽,模块间关系和依赖程度尽可能小。1. 内聚cohesion一个模块内部各个元素彼此结合的紧密程度的度量。高内聚性低功能内聚顺序内聚通信内聚过程内聚时间内聚逻辑内聚巧合内聚强模块独立性弱2. 耦合coupling模块之间的相对独立性的度量。耦合取决于各个模块之间接口的复杂程度、调用模块的方式以及通过接口的信息类型。低耦合性高非直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内容耦合强模块独立性弱模块独立性比较强的模块应该是高内聚低耦合的模块。耦合是直接的主导因素,内聚则是辅助耦合共同对模块独立性进行衡量。部件级设计技术:1. 结构化程序设计方法通常采用自顶而下,逐步求精的设计方法。能提高程序的可读性,可维护性和可验证性,从而提高软件的生产率。2. 图形表示法a) 程序流程图顺序型、选择型、先判定型循环(do while)、后判定型循环(do until)、多情况选择型(case) 组合或嵌套而成复杂流程图。b) N-S图c) PAD(problem analysis diagram)问题分析图由程序流程图演化而来的,用结构化程序设计思想表现程序逻辑结构的图形工具。3. 判定表优点:能够简洁,无二义地描述所胡的处理规则。缺点:判定表表示的是静态逻辑,是在某些条件组合取值情况下可能的结果,不能表达加工的顺序,也不能表达循环结构。4. 设计性语言PDL (program design language)是一种伪码具有正文格式,很像一个高级语言。特点:l 有固定的关键字外语法,提供全部结构化控制结构、数据说明和部件特征。l 内语法使用自然语言来描述处理特性。l 有数据说明机制。l 有子程序定义与调用机制。数据流图(DFD):1. 数据流图的图形表示a) 数据流图的基本图形元素:i. 源或宿(source or sink)存在于软件系统之外的人员或组织,表示软件系统输入数据的来源和输出数据的去向。 符号:ii. 加工(process)输入数据流到输出数据流的变换。符号:iii. 数据流(data flow)由一组固定成分的数据组成。符号:iv. 文件(file)用于存放数据。符号:b) 数据流图的扩充符号:i. 星号(*)表示数据流之间存在“与”关系ii. 加号(+)表示数据流之间存在“或”关系iii. 异或()表示数据流之间存在“异或”(互斥)关系c) 数据流图的层次结构i. 层次结构顶层只有一张图,其中只有一个加工,代表整个软件系统,该加工描述了软件系统与外界之间的数据流,称为顶层图。0层图:将顶层图中的加工经过分解后形成的图底层图:处于分层数据流图最底层的图中间层图:分层数据流图中的其他图ii. 图和加工的编号(父图,子图)l 顶层图只有一个加工,不必编号l 0层图中的加工编号分别为1、2、3l 对于子图号,若父图中的加工号x分解成某一子图,刚该子图记为“图x”l 对于子图中加工的编号,若父图中的加工号为x的加工分解成某一子图,则该子图中的加工编号分别为x.1、x.2、x.32. 分层数据流图的画法分层数据流图的审查:1. 分层数据流图的一致性和完整性a) 一致性i. 父图与子图的平衡ii. 数据守恒iii. 局部文件b) 完整性i. 每个加工至少有一个输入数据流和一个输出数据流。ii. 在整套分层数据流中,每个文件应至少有一个加工读该文件,有另一个加工写该文件。iii. 分层数据流图中的每个数据流和文件都必须命名,并保持与数据字典一致。iv. 分层DFD中的每个基本加工都应有一个加工规约。2. 构造分层DFD时需要注意的问题a) 适当命名b) 画数据流而不是画控制流c) 避免一个加工有过多的数据流d) 分解尽可能均匀e) 先考虑稳定状态,忽略琐碎的枝节f) 随时准备重画3. 分解的程度a) 7加减2b) 分解应该自然,概念上合理清晰c) 只要不影响DFD的易理解性,可适当增加子加工数量,以减少层数d) 分解要均匀结构化设计概述:1. 结构图a) 基本成分模块、调用、数据b) 辅助符号c) 几个概念i. 深度程序结构图中控制的层数ii. 宽度程序结构图中同一层次上模块总数的最大值iii. 扇出fan out该模块直接调用的模块的数目iv. 扇入fan in能直接调用该模块的模块数目2. 启发式设计策略a) 改造程序结构图,降低耦合度,提高内聚度b) 避免高扇出,并随着深度的增加,力求高扇入c) 模块的影响范围应限制在该模块的控制范围内d) 降低模块的复杂程度和冗余程度,提高一致性e) 模块的功能应是可预测的,避免对模块施加过多的限制f) 尽可能设计单入口和单出口的模块3. 结构化设计的步骤a) 建立初始结构图b) 对结构图的改进c) 书写设计文档d) 设计评审面向对象的基本概念:1. 对象object2. 类class3. 继承inheritance4. 消息message5. 多态性polymorphism和动态绑定dynamic binding面向对象设计模式:1. 模式名2. 模式的环境和条件3. 设计模式的特征4. 应用设计模式的结果consequences几种建模:1. 用况建模: 用况(use case):文本形式的情节撕碎,用以说明某参与者使用系统以实现某一特定目标的情形。 用况建模用于描述一个系统应该做什么,用用况图来描述(可能有多幅) 用例之间的关系。 泛化关系:同一业务目的的不同技术实现(多个用例拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例泛化为子用例) 包含关系:提取公共交互,提高复用(将包含用例的事件流拖入到基础用例的事件流中,包含用例是可以重用的) 扩展关系:“冻结”基用例以保持稳定(将扩展用例的事件流在一定的条件下按照相应的扩展点插入到基础用例中)2. 静态建模:UML中以类图和对象图来建立 类图和对象图 类图中类之间的关系 CRC技术:CRC(类责任协作者)方法:使用一组表示类的索引卡片。主要步骤:1. 标识潜在的对象类2. 筛选对象类,确定最终对象类3. 标识责任(类的属性和操作)4. 标识协作者5. 复审CRC卡 UML中可见性:3. 动态建模:UML中用状态机图、活动图、顺序图、通信图和协作图来建立动态模型。a) 状态机图(state machine diagram)描述对象所有可能的状态,以及哪些事件将导致状态的改变。i. 状态机图的基本符号:ii. 状态:是对象执行某项活动或等待某个事件时的条件。1. 状态活动中的标准事件entry事件,exit事件,do事件2. 活动区中事件的语法:event-name(argument list)guard-condition/activity-expressioniii. 状态迁移:(标在迁移箭头上的事件发生了;状态机图中相应的迁移上未指明事件)1. 语法:event-name (parameter-list) guard-condition/effect-listb) 活动图可看作一种特殊形式的状态机,用于对计算流程和工作流建模,活动图的状态表示计算过程中所处的各种状态。i. 泳道(swimlane)表示某些活动的执行者或者发生的地方。ii. 并行迁移,一个动作迁移可以分解成多个导致并行动作的迁移,若干个来自并行活动的迁移也可以合并成一个迁移。iii. 对象,活动的输入或输出;也可以表示一个对象受一特定动作的影响c) 顺序图(sequence diagram)用来描述对象间的交互行为,它关注于消息的顺序,即对象间消息的发送和接收的顺序。i. 组成成分:对象,对象框,激活期,消息ii. 生存线(lifeline)和激活框,对象之间的消息发送用生存线之间的消息箭头表示。iii. 消息的表示:attribute = name (argument-list) :return-valueiv. 组合片段的类型1. ref(引用)对另一交互的引用2. loop(循环)当循环的警戒条件为真时循环执行子片段3. alt(选择)两个或多个子片段之间的选择执行4. opt(可选)选择的带单个子片段的特殊情况,警戒条件为假时省略该子片段5. par(并发)两个或多个子片段的并发执行d) 通信图展示了链接的对象之间如何发送消息,可用于描述系统中的操作执行,用况执行或一个简单的交互场景。i. 消息流seguence-expressionopt messageii. 链是类关联的实例,是连接两个对象的路径,指明了对象间某种可能的导航和可见性。e) 交互图(顺序图和通信图)总结程序设计风格:1. 源程序文档化a) 标识符的命名b) 程序的注释c) 视觉组织2. 数据说明a) 数据说明次序规范化b) 说明语句中变量安排有序化c) 使用注释说明复杂的数据结构3. 语句结构a) 一行内只写一条语句b) 首先考虑清晰性c) 直截了当说明程序员的用意d) 其他常用规则i. 让编译程序做简单的优化ii. 尽可能使用库函数iii. 避免不必要的转移iv. 习题只采用三种基本的控制结构来编写程序4. 输入和输出软件维护的概念:指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程分类:纠错性维护,适应性维护,改善性维护,预防性维护影响维护工作量的因素主要有以下6种:1. 系统的规模2. 程序设计语言3. 系统年龄4. 数据库技术的应用5. 先进的软件开发技术6. 其他一些因素再工程的概念:逆向工程(reverse engineering)是指在软件生存周期中,将软件的某种形式描述转换成更抽象形式的活动。重构(restructuring)是指在同一抽象级别上转换系统的描述形式。设计恢复(design recovery)是指借助工具从快有程序中抽象出有关数据结构设计、体系设计和过程设计的信息。再工程(reengineering)是指在逆向工程所获信息的基础上修改或重构已有的系统,产生系统的一个新版本。再工程的主要目的:为遗留系统转化为可演化系统提供一条现实可行的途径。项目进度管理:进度安排:在项目实施过程中将在进度计划基础上跟踪实际执行情况,从而及时发现偏差并采取措施加以调整以确保项目按期完成。甘特图(Gantt chart),也称时间表(timeline chart)计划评审技术(program evaluation and review technique, PERT)和关键路径方法(critical path method, CPM)跟踪进度。风险管理:风险管理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论