软件工程复习资料

上传人:s9****2 文档编号:560007939 上传时间:2023-08-22 格式:DOCX 页数:13 大小:215.96KB
返回 下载 相关 举报
软件工程复习资料_第1页
第1页 / 共13页
软件工程复习资料_第2页
第2页 / 共13页
软件工程复习资料_第3页
第3页 / 共13页
软件工程复习资料_第4页
第4页 / 共13页
软件工程复习资料_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《软件工程复习资料》由会员分享,可在线阅读,更多相关《软件工程复习资料(13页珍藏版)》请在金锄头文库上搜索。

1、概述1. 什么是软件?什么是软件工程?-软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关 文档的完整集合。软件具有不可见性,是抽象的、形式化和逻辑化的。-软件会逐渐退化而不会磨损的原因是不断地变更使组件接口之间引起错误。-软件工程要素:过程、方法、工具。-软件工程的基本目标是开发高质量的软件。2. 现代软件工程师关注的问题开发过程中遇到的各种困扰。3. 软件生存周期模型-软件生存期由软件定义、软件开发和运行维护3 个时期组成,每个时期又可划分 若干阶段,即可行性研究、需求分析、概要设计、详细设计、编码、测试、使用与维护。-软件生存周期模型包括瀑布模型、原型模型、增量模型、

2、螺旋模型。4. 软件开发的各种模型(瀑布、快速原型等)的特点-瀑布模型:1)阶段间具有顺序性和依赖性。2)推迟实现的观点。3)质量保证 的观点。瀑布模型适用于需求被清晰定义的情况。-快速原型模型:适用于客户需求难以清楚定义的情况。-增量模型:适用于一种需要快速构造可运行程序的方法。-螺旋模型:螺旋模型是瀑布模型、原型模型的有机结合,同时增加了风险分析。螺旋模型只适合于大规模的软件项目。-喷泉模型:喷泉模型是典型的面向对象生命周期模型。需求分析1. 需求分析的目的-需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。需求分析是软件工程中的

3、一个关键过程。-需求分析中开发人员从用户那里了解软件做什么。-可行性研究要进行一次“简化的、压缩的”需求分析。2. 主要任务-获取并理解用户的需求是软件工程师所面对的最困难的任务之一-发现和分析问题,并分析问题的原因/结果关系;与用户进行各种方式的交流,并 使用调查研究方法收集信息;按照三个成分观察问题的不同侧面,即数据、过程、接口; 将获取的需求文档化,形式有用例、决策表、需求表等。3. 功能性需求和非功能性需求-功能性需求:系统需要提供的服务或功能:如图书检索;系统对特定输入的处理 方式:如对非法输入的提示;系统在特定环境下的行为:如长时间无操作时的屏保。-非功能性需求:对系统功能或服务附

4、加的质量约束,例如响应时间、容错性、安 全性等客户所关心的(外部质量);从系统开发和维护角度出发的质量属性,例如可理解性、可扩展性、可配置性等软件开发或维护者所关心的(内部质量、软件所特有)。4. 需求获取的过程1). 开发高层的业务模型 2). 定义项目范围和高层需求 3). 识别用户类和用户 代表 4). 获取具体的需求5). 确定目标系统的业务工作流6). 需求整理与总结。5. 功能建模和数据流图-功能建模的思想就是用抽象模型的概念,按照软件内部数据传递、变换的关系, 自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。功能模型用数据 流图(Data Flow Diagram,

5、 DFD)来描述。-数据流图(DFD):描述输入数据流到输出数据流的变换(即加工)过程,用于对系 统的功能建模。主要图形元素:加工;外部实体;数据流;=*数据存储文件。-数据流图中的每个数据处理至少需要一个输入流和一个输出流。-画某系统的 DFD 时,顶层图有一张。6. 数据字典-数据流图与数据字典是密不可分的,两者结合起来构成软件的逻辑模型 (分析模型)-数据字典(Data Dictionary,DD)由字典条目组成,每个条目描述DFD中的一个 元素,包括:数据流、文件、数据项(组成数据流和文件的数据)、加工、源或宿。7. 判定表、判定树-判定表:适用于加工逻辑包含多个条件,而不同的条件组合

6、需做不同的动作。-判定树:判定表的变种,它本质上与判定表是相同的,只是表示形式不同。三 结构化设计和编码1. 模块化设计-模块(Module) “模块“又称”构件”一般指用一个名字调用的一段程序。 -模块化设计(modular design):按适当的原则把软件划分为一个个较小的、相关而 又相对独立的模块。2. 耦合和内聚-耦合:模块之间的相对独立性的度量。-内聚:模块功能强度的度量。-模块内聚性越强,功能独立性越好,对于形成的模块结构有比较好的作用。要求 模块结构达到高内聚,低耦合。3. 面向数据流的设计方法-结构化设计属于面向数据流的设计方法,任务就是在上述需求分析的基础上,将 DFD图映

7、射(Mapping)成软件体系结构。-基于数据流的设计方法也称为过程驱动的设计方法4. 变换流、事务流-变换流:变换型数据处理问题的工作过程大致分为3 步,即取得数据,变换数据 和给出数据。-事务流:数据流沿着输入路径到达一个事务中心,事务中心根据输入数据的类型在若干条动作路径中选择一条来执行。事务流变换流5. 作用范围和控制范围-模块的控制范围包括它本身及其所有的从属模块(即供它调用的模块)。-模块的作用范围是一个与条件判定相关联的所有模块,凡是受这个判定影响的所有模块都属于这个判定的作用范围。-模块的作用范围应在控制范围之内。6. 程序流程图程序流程图也称为程序框图,是软件开发者最熟悉的算

8、法表达工具C_DZ_/匸皺据辅入辅出处理唯蓊咸丙处理预定腿处理OlZZj匸_0 o_册幷丄界MM F 界文件或文档卄搜内卡虑拽并行方式沱斛曲注释7. “结构化”的意义 如果一个程序的代码块仅仅通过顺序、选择和循环这三种基本控制结构进行连接, 并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。四 测试1. 黑盒测试和白盒测试-黑盒测试:把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结 构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。-白盒测试:对程序模块的所有独立执行路径至少测试一次,对所有的逻辑判定, 取“真”与取“假”的两种情况都能至少测

9、试一次。在循环的边界和运行边界限内执行 循环体,测试内部数据结构的有效性。2判定覆盖、条件覆盖-语句覆盖:设计若干个测试用例,运行被测程序,使得每一个可执行语句至少执 行一次。-判定覆盖(又称分支覆盖):设计若干个测试用例,运行被测程序,使得程序中 每个判断的取真分支和取假分支至少经历一次。-条件覆盖:设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条 件的可能取值至少执行一次。-判定-条件覆盖:设计若干个测试用例,运行被测程序,使得判断中每个条件的所 有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。-条件组合覆盖:设计若干个测试用例,运行被测程序,使得每个判

10、断的所有可能的条件取值组合至少执行一次。-路径覆盖:设计足够的测试用例,覆盖程序中每一条可能的程序执行路径至少测试一次。3. 驱动模块和桩模块-桩模块:对顶层或上层模块进行测试时,所编制的替代下层模块的程序,用以模 拟被测模块工作过程中所调用的模块。桩模块由被测试模块调用,代替自顶向下的模块 作用。-驱动模块:对底层或子层模块进行(单元或集成)测试时所编制的调用被测试模 块的程序,用以模拟被测试模块的上级模块。驱动模块接受测试数据,调用被测模块, 在自底向上测试中代替调用模块作用。4. 等价类划分和测试用例等价类是指某个输入域的子集合在该集合中,各个输入数据对于揭露程序中的错误都是等价的。五

11、UML-用例图、顺序图、状态图、类图-顺序图和合作图适于描述单个用例中多个对象的行为。-状态图适于描述跨越多个用例中单个对象的行为。-活动图适于描述并发的、较复杂的行为。六 设计模式1. 策略模式(模拟鸭子的简单应用例子):针对接口编程,而非针对实现编程,多用组合,少用集成。2. 工厂模式(订购比萨例子):依赖于抽象,不要依赖于具体类。-抽象工厂:抽象工厂模式提供一个接口,创建相关或依赖的对象家族,而不指定 具体的类。3. 适配器模式(适配鸭子的火鸡例子):适配器模式将一个类的接口转换成客户期望的 另一个接口。适配器让原本不兼容的类可以合作无间。4. 观察者模式(气象监控应用系统例子):也称为

12、发布-订阅模式。观察者模式在对象之 间定义了一个一对多的依赖,如果一个对象改变了状态,就通知依赖于它的其它对象, 并自动地更新这些对象。5. 外观模式(家庭影院例子):外观模式提供了一个统一的接口,用来访问子系统中的 一群接口。外观定义了一个高层接口,让子系统更容易使用。6. 单件模式(巧克力工厂例子):也叫单例模式。单件模式确保一个类只有一个实例,并提供一个全局访问点。七 习题(仅供参考)1由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。(X)2由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。(X)3购买大多数计算机系统所需的硬件比软件更昂贵。(X)4大多数软件产

13、品在其生命周期中不需要增强功能。(V)5大多数软件系统是不容易变化的,除非他们在设计时考虑了变化。(V)6软件需求规格说明书在软件开发过程中具有重要作用,是软件可行性分析的依据。(X)7在需求分析过程中,分析员要从用户那里解决的最重要的问题是明确软件做什么。(V)8目前存在一个很普遍的现象,即不同的客户提出的需求是相互矛盾的,但每个人都争 辩自己是正确的。(V)9用例图是从程序员角度来描述系统的功能。(X)10. 活动图和状态图用来描述系统的动态行为。(V)11. 协作图的一个用途是表示一个类操作的实现。(V)12. 结构化分析中“结构化” 一词的含义是什么?这个词有其他可可替代的术语吗? 答

14、:结构化一词应来源于“结构化程序设计”,先有“结构化程序设计”的思想,后有 结构化设计及结构化分析,有时称传统的分析方法。13. 指出下面需求描述存在的问题,并进行适当的修改。1)系统用户界面友好。 答:问题:“友好”是不可验证的。改正:具有一年计算机使用经验的用户经过 3小时的培训就可以学会使用该系统。2)系统运行时应该占用尽量少的内存空间。答:问题:“尽量少”存在歧义。改正:系统所占用的最大内存空间为256MB。14. 数据流图中的文件和数据流的差异是什么? 答:数据流是暂时的(类似编程时的局部变量),经加工以后数据流就消失了,而文件 中的数据是持久性的。从数据量上讲,数据流只是一组待处理

15、的特定数据,而文件中保 护一个完整的数据集合。15. 在需求分析时,用户参加联合小组的应有哪些?答:软件系统的利益相关人,软件的操作用户代表,用户公司工厂部门人员,与软件直接相关部门主管或经理。16. 当你“编写”程序时你设计软件吗?软件设计和编码有什么不同吗?答:在“编写”程序时没有设计软件;软件设计包括概要设计和详细设计,编码是 将详细设计中的过程描述转换成程序设计语言。17. 将大的软件划分成模块有什么好处?是不是模块划分得越小越好?划分模块的依据 是什么?答:1)将大的软件划分成独立命名且可独立访问的模块,不同的模块通常具有不 同的功能或职责。这种方法有利于将复杂的问题简单化,是分而治之策略的具体表现。2)尽管模块分解可以简化要解决的问题,但模块分解并不是越小越好。当模 块数目增加时,每个模块的规模将减小,开发单个模块的成本确实减少了;但是,随着 模块数目增加,模块之间关系的复杂程度也会增加,

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

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号