软件工程半开卷资料

上传人:daj****de2 文档编号:171665996 上传时间:2022-11-28 格式:DOCX 页数:7 大小:42.13KB
收藏 版权申诉 举报 下载
软件工程半开卷资料_第1页
第1页 / 共7页
软件工程半开卷资料_第2页
第2页 / 共7页
软件工程半开卷资料_第3页
第3页 / 共7页
资源描述:

《软件工程半开卷资料》由会员分享,可在线阅读,更多相关《软件工程半开卷资料(7页珍藏版)》请在装配图网上搜索。

1、专题一 软件工程导论软件、软件危机、软件工程软件开发模型 软件的概念特点与分类:软件是与计算机系统操作有关的程序、数据以及相关文档的完整集合。 文档的作用:促进对软件的开发、管理和维护;便于各种人员的交流。软件的特点:尚未摆脱手工方式,软件移植的需要,复杂(问题复杂性,程序结构复杂性),软件开发的性质难以估计控制,维 护困难,可复用性差。软件的发展:程序设计、程序系统、软件工程、00 工程阶段。 产生软件危机的原因:软件的规模与复杂性、软件需求的描述存在问题、软件开发人员与用户的愿望有差异、协同工作的困难 性、缺乏方法学和工具、人类智力的局限性。(解决途径:以工程化的原则和方法组织软件开发)

2、软件生命周期:软件定义(可行性研究,需求分析)软件开发(概要设计,详细设计,实现,集成测试,确认测试)维护(使 用与维护,退役)软件开发模型:软件开发模型是从软件项目需求定义直至软件使用后废弃为止,针对系统开发、运作和维护所实施的全部过程活动和任务的结构框架。瀑布樟型喷泉樟型概念按照生命周期各个阶段执行,从可行性研究通 过确认测试(又称牛存周期樟型)。软件复用与生命周期多开发活动集成优(特)点相邻阶段紧密联系,环环相扣;每阶段完成后,要通过评审后再到下阶段; 提供了软件开发的基本框架。软件系统可维护性较好;各阶段相互重叠,表明了面向对象开发方法各阶段间的交 叉和无缝过渡;整个模型是一个迭代的过

3、程,包括一个阶段内部的迭代和 跨阶段的迭代;模型具有增量开发特性,即能做到分析一点、设计一点、 实现一点,测试一点,使相关功能随之加入到演化的系统 中。模型由对象驱动,对象是各阶段活动的主体,也是项目管 理的基本内容。该模型很白然地支持软部件的重用。缺点初期获得全部需求困难,不现实;周期长,最早的错误最晚发现,损失大。喷泉模型本身不是以面向过程为背景的,过程在喷泉模型 中已被弱化-代替的是无间隙的阶段过渡与重复迭代一适用场合大型软件开发过程中人员组织、管理,相应方法、工具的研究与使用;用户需求稳定、全面。面向对象的开发方法原型樟型螺旋模型概念根据用户需求快速构建原型,并通过与用户的交 流不断完

4、善直至达到一致。是瀑布模型与原型模型相结合,并增加两者所忽略的风险 分析。优(特)点利用原型便于统一客户与软件人员对需求的理解 和定义;整个过程是迭代的过程;适合初期需求不全、或需求动态变化;尽早发现错误;开发费用降低.开发时间缩短。支持需求的动态变化有助于获取用户需求,便于用户对需求的理解尽早发现软件中的错误支持风险分析,可降低或者尽早消除软件开发风险适合于需求动态变化、开发风险较大的系统缺占容易忘记用户环境和原型环境的差异;需要相当丰富的风险评估经验和专门的知识。需要原型开发工具支持;不支持风险分析。适用场合需求动态变化的场合。指导大型软件项目的开发。软件工程的目标:正确性(满足客户的需求

5、)可靠性(防止因概念、设计与结构等方面的不完善而造成的系统失效,具有挽回 因操作不当而造成软件系统失效的能力)有效性(充分利用时间和空间资源)可维护性(便于增加新功能、改进性能、修改错 误)可重用性(软件易于被再次使用)可追踪性(对软件进行正向和反向追踪的能力)可移植性(从一个环境搬迁到另一个环 境的难易程度)可互操作性 软件工程的原则:抽象,模块化,信息隐藏,局部化,确定性,一致性,完备性,可验证性。专题二 需求分析(软件需求是软件开发的基础和前提,是最终目标软件系统验收的标准)需求分析基本思想: 自顶向下,逐步/求精 , 抽象分解掌握面向数据流的分析方法需求分析的任务:通过对问题及其环境的

6、理解和分析准确、一致和完全地刻画用户需求。(应具备准确性和一致性,清晰性和无 二义性,直观、易读、易于修改)需求获取的技术:需求的类型:功能性需求:对数据的处理要求非功能性需求:实际环境所决定的,性能要求,可靠性要 求,安全保密要求。需求规格说明书:目的:进一步理解需求,软件设计的基础,软件测试的根据;方法:自上而下,由粗到细,多次循环, 逐步完善的方法。数据流图的主要图形符号长方形:数据源点或终点;圆形:数据加工;一:数据流;=:对数据的储层。 数据字典:用数据项、数据流和数据文件来对数据进行描述。每个数据条目包含:名字,数据类型,使用说明,解释性说明, 其他补充说明,以它作为输入流或输出流

7、转换的列表。小说明(加工说明):准确、详细地对数据流图中的各转换的功能、性能和设计约束等解释说明需求分析的过程:抽取现实问题的本质改进和优化需求分析的验证(原则:支持各方共同参与评审工作,保证需求分析 的一致性、全面性、准确性)附:专题二作业,需求分析说明报告。专题三 软件设计原理软件设计基本原则软件设计的任务:软件设计的依据和基础是软件需求规格说明书,设计出的软件包括软件结构,算法,数据结构。 实际工作的误区:需求分析的缺失或者软件设计的缺失直接进行编码。软件设计的步骤:两种设计思路(“由底向上”从局部到整体;“自顶向下,逐步求精”从顶层开始分解,分解成各个易 于理解的小模块);易于修改和扩

8、展,整体测试较易通过,需要进行详细的可行性论证可能导致较大的重新设计,模块接口 间发现不一致,较早发现可行性问题。软件设计的构成:概要设计过程设计数据设计设计评审 概要设计:整体实现框架,定义模块划分和之间的关系。结构化(模块:过程、函数;关系:函数调用)面向对象(模块:对象类;关系:继承、聚集、消息传递) 过程设计:模块内部细节设计,底层抽象,局部角度。 (过程设计属于详细设计)结构化(过程和函数) 00:类的每个操作和实现算法 数据设计:信息描述一数据结构,包括数据库、数据文件(配置文件)、网络消息包。(总体结构设计和数据设计属于概 要设计) 界面设计:系统响应时间、用户帮助、出错处理、命

9、令交互 设计评审:总体结构,数据结构,结构间界面,模块过程细节。错误的扩大模型:本阶段检出错误的百分比=未扩大的上一阶段的错误+扩大的上衣阶段的错误(乘X倍)+本阶段新的错误。软件设计的模块化思想:模块化分解(抽象)信息隐藏与局部化模块独立性 模块化论据:C(x):表示问题x的复杂性函数若C (pl+p2) C (p2),则E(pl)E(p2)E(x):解决问题 x 所需要工作量的函数。C(pl+p2)C(pl)+C(p2) E(p1+p2)E(p1)+E(p2)模块设计原则:信息隐藏,高内聚低耦合。 抽象:过程抽象(计算)数据抽象(表示)抽象 1:用问题域本身的语言来描述问题抽象 2:总体结

10、构层次上的抽象抽象 3:过程层次抽象 信息隐藏与局部化信息隐藏的优点:支持模块并行开发,独立性更好,便于系统功能的扩充,便于测试和维护。局部化:将一些关系密切的软件元素物理地放得靠近非直外部独立性:衡量标准:耦合,内聚功能传息通传过程时间逻辑侑然 内聚内聚内聚内聚内聚内聚内聚模块m 数量,联系方式,信息结构)執功能汗降低模块间耦合度:选择适当的耦合类型降低模块接口的复杂性 软件设计的原则:提高模块独立性,调整模块的大小,适当的模块深度、宽度、扇出和扇入,模块的作用范围应在控制范围之内,简化模块的借口的复杂程度,设计单入口单出口的模块偶然内聚:一个模块内各成分为完成一组功能二组合在一起 逻辑内聚

11、:一个模块完成的诸任务逻辑上相关时间内聚:模块包含的诸任务都要在同一时间内完成。过程内聚:模块内成分彼此相关,并且必须按特定的次序执行 通信内聚:模块中各成分都降对数据结构的同一区域进行操作,以达到通信的目的。 顺序内聚:如果一个模块内的各处理成分均与同一同能相关,且这些处理必须顺序执行 功能内聚:如果模块内所有成分形成一个整体,完成单个功能。非直接耦合:两个模块红人一个都能不依赖对方独立工作数据耦合:两模块通过参数交换信息,而信息仅限于数据 特征耦合:介于数据耦合与控制耦合之间控制耦合:若传递信息中包含控制信息外部耦合:若干模块均与同一个外部环境关联公共耦合:若干模块通过全局的数据环境互相作

12、用时内容耦合:一个模块使用另一模块内部的数据或控制信息,一个模块直接转移到另一模块内部模块的控制范围:包括它本身及其所有的从属模块 模块的作用范围:指模块内一个判定的作用范围,凡是受这个判定影响的所有模块都属于这个判定的作用范围 如果一个判定的作用范围包含在这个判定所在模块的控制范围之内,则这种结构简单,否则,不简单。专题三作业:为各种耦合各举一个实例。为各种内聚各举一个实例。列举参考书。部分参考:非直接耦合:AR之间没有必然联系就是非直接耦合。数据耦合例:一个求三角形面积的函数fun(int aint b,int c),参数a, b, c是三角形的三条边;主函数求三角形面积时, 传递三角形的

13、三条边。标记耦合:如果在函数或过程调用时传递的参数是结构变量(如记录名、数组名、文件名等),但是被调用模块只操作参数中的 一部分数据。例如 C 语言中参数传递结构体变量名。控制耦合例:一个函数 fun(int a, int b, int c, int flag) 实现两个功能,一个是求三角形面积,一个是求一元二次方程的根,根据 主函数传递的 flag 的值来决定是实现的哪一个功能。外部耦合例:C语言程序中各个模块都访问被说明成extern类型的外部变量。公共耦合:两个模块可以访问同一个数据库并且读写同一条记录。 内容耦合:一个模块使用另一模块内部的数据或控制信息。偶然内聚:程序员在写程序时,发

14、现一组不同语句分别在多个子程序中出现,于是将这组语句单独组成一个模块,这样的模块 便是偶然内聚模块。逻辑内聚:一个模块完成所有与类型无关的输出。根据输入的控制信息,或从文件中读入一个记录,或向文件写出一个记录。C 语言中在一个函数中读写相同文件,在函数参数中增加一个标志变量进行判定。时间内聚:初始化模块和终止模块。例如FORTRAN中提供的BLOCK DATA子程序是初始化模块。过程内聚:在用程序流程图设计模块时,若将程序流程图中的一部分单独组成模块,便形成过程内聚。例如将循环部分组成模 块。通信内聚例:比如打印检验结果模块、计算A模块、计算B模块都要从同一个文件中读信息作为输入。信息内聚:多

15、个功能内聚模块的组合,且达到信息隐蔽。即把某个数据结构、资源或设备隐蔽在一个模块内,不被别的模块知 晓。顺序性内聚:如果一个模块内的各个组成部分顺序执行几个处理动作,前一个处理动作产生的输出数据是下一个处理工作的输 入数据。功能内聚:模块内所有成分形成一个整体,完成单个功能。如求三角形的面积的模块。专题四 软件设计方法掌握结构化的软件设计方法概要设计工具 :HIPO 图,结构图HIPO图:1输入+P处理+0输出软件结构的层次图:扇入、扇出、高度、宽度 结构图中的四种模块:传入模块:从下属模块取得数据,经过某些处理,再将其传送给上级模块传出模块:从上级模块获得数据,进行某些处理,再将其传送给下属

16、模块 变换模块:从上级模块取得数据,进行特定的处理,转换成其他形式,再传送回上级模块 协调模块:对所有下属模块进行协调和管理的模块,在系统的输入/输出部分或数据加工部分可以找到这 样的模块:选择调用,曲线:循环调用结构化软件设计方法:数据流图一软件结构一软件设计说明书数据流的类型:变换流,事务流变换流:输入流一变化流一输出流事务流:事务f事务处理中心f动作路径面向数据流的软件设计过程:确据定数流的类型;划定流界;将数据流图转换为软件结构;细化后,得到初始结构图;通过设 计复审和启发式策略精化,得到最终软件结构图(一)变换分析:变换型数据流图f面向数据流的软件设计方法f软件总体结构【基本原则:保

17、持高内聚、低耦合,尽量减少 模块数】步骤一:复审【为什么需要对基本系统模型进行复审:以确保系统的输入和输出数据符合实际】步骤二:理解和精化数据流图【获得DFD】【确保DFD中每个转换代表一个子功能】步骤三:确定类型步骤四:划分输入流、输出流的边界步骤五:执行一级分解(二)事务分析步骤一:复审基本系统模型步骤二:复审和精化数据流图步骤三:确定数据流图的类型:变换流还是事务流步骤四:将事务型DFD划分为:接受事务的输入一事物处理中心一动作路径步骤五:将事务型DFD映射为软件结构 启发式设计策略:降低耦合度,提高内聚度【提取共有的子功能,以提高模块的独立性;合并具有较多控制信息传递的模块,以 降低模

18、块之间的耦合度】减少扇出,追求高扇入 使任一模块的作用域在其控制域内【作用域是指受模块内部判定影响的所有模块;控制域是指其所有的下属模 块】详细设计概述:任务:设计每一个模块,概要设计说明书是详细设计阶段的依据和基础。方法:结构化程序设计 SP 结构化程序设计的好处:成功率和生产率显著提高清晰的层次结构、易阅读和理解程序静态结构和它的动态执行情况一致控制结构有确定的逻辑模式,易读易懂易测试软件可重用的代码量增大有利于程序正确性证明缺点:内存和运行时间有所增加详细设计工具:图形工具,表格工具,语言工具。【基本要求:准确性、完整性、易理解性、简明性】程序流程图,N-S图(盒图),PAD (问题分析

19、图)判定树PDL 语言:用于描述功能模块的算法设计和加工细节的语言,是一种伪码专题六 界面设计界面设计的原则和风格UI 的特征:可使用性,灵活性,复杂性和可靠性UI 的设计考虑:系统响应时间(越短越好)良好界面设计应具有的特性可使用性(使用简单;术语的标准化,一致化;Help;能快速响应;有容错能力):Windows均提供Help,使用简单,有容错能力等。灵活性(能满足不同层次用户;提供不同详细程度的响应信息;定制、修改菜单的方式): Windows 上的开始菜单可以定制,修改,可为不同用户定义各自的桌面(工作环境)。可靠性(完成功能的前提下,尽可能简单;安全无故障): Windows 可连续

20、安全使用 25 天无故障(不宕机)。专题七 程序设计编码风格如何选择程序设计语言基本原理:程序设计语言的演化:机器语言,汇编语言,高级语言,第四代语言(4GL),第一代结构化设计的基本原则:使用顺序、选择、循环三种基本控制结构复杂结构用基本控制结构进行组合嵌套实现单入口和单出口严格限制 GOTO 语句程序自顶向下,逐步细化程序设计风格:源程序文档化【注释分为序言性注释和功能性注释】 数据说明【首要考虑清晰性,可读性,做到结构第一,效率第二】 语句结构输入输出方法语言选择:C:系统软件、驱动模块Fortran:工程、科学计算领域专题八 测试【测试有其特殊性和规律:软件是逻辑产品】测试的基本概念重

21、点掌握基本路径覆盖法 软件测试的基本概念:软件系统的功能和性能和预期的功能和性能不一致;软件测试是发现软件错误的过程 目标:发现软件中的错误,提高软件质量【测试只能查找程序中的错误,而不能证明程序没有错误。证明程序没有错误程序正确性证明】 原则:尽早和不断地进行测试,测试用例由测试输入数据和与之对应的预期输出数据组成,程序员应避免自己检查程序,测试 用例应包含合理输入和不合理输入。严格执行测试计划,注意排除测试中的随意性。方法:黑盒测试和白盒测试 【白盒测试】已知程序内部工作流程,通过测试检验程序内部动作是否按规格说明书的规定正常运作。依据:针对程序的内部 逻辑结构设计测试用例。特点:必须了解

22、程序的内部工作流程。【黑盒测试】根据已知程序的功能和性能(不是内部性能),通过测试检验每个功能和性能是否正常。依据:程序的功能和性能 特点:知道程序的功能和性能,不必了解程序的内部结构和处理细节。过程:确认测试需求分析(黑盒),集成测试概要设计(黑盒+部分白盒),单元测试详细设计(白盒) 软件测试过程与策略【步骤、方法】 单元测试:【内容】模块接口测试,局部数据结构测试,路径测试,错误处理测试,边界测试 排错方法:【原始法:在程序中安排若干输出】【回溯法:从错误处往回追踪,知道发现出错根源】【排除法:收集与出错有关的 所有数据,假象一组出错的原因,用这组数据证明或者反驳之】 设计测试方案:【测

23、试方案:包括预定要测试的功能,应该输入的测试数据和预期的结果。】【测试方案的目标:确定一组最可能发 现某个错误的测试数据】【设计白盒测试用例】覆盖准则:语句覆盖,分支覆盖(判定),路径覆盖 逻辑覆盖的类型:【语句覆盖:设计数据使每一可执行语句至少执行一次,也为点覆盖】,【判定覆盖:使得程序中每个判断的取 真和取假分支至少经历一次,也为边覆盖】,【条件覆盖:每个判断的每个条件的可能取值至少执行一次】,【判定-条件覆盖:判 断中每个条件的所有可能取值至少执行一次,每个判断中的每个条件的可能取值至少执行一次】,路径覆盖 条件测试路径选择:【嵌套型分支结构,若有 n 个判定语句,需要 n+1 个测试用

24、例】【连锁型分支结构,若有 n 个判定语句,需 要有2An个测试用例,覆盖它的2An条语句】基本路径测试的思想:至少引入一个新语句或者新判断的程序执行通道。流程图一流图一基本路径一测试用例STEP1:根据程序的逻辑结构画出流程图STEP2:根据流程图画出流图【节点:过程块,结合点,判定点。有向边】STEP3:确定基本路径的集合【流图的复杂度V(G)正好是基本路径的数量V(G)=E-N+2, V(G)=P+1, E= 边数,=节点数,P=流程图中谓词节点数】STEP4 :对每条基本路径设计测试用例。【主要的黑盒测试技术】等价分类法、边界分类法、错误猜测法 等价分类法,将测试数据分为等价类,为每个

25、等价类设计一个测试用例基于CASE的软件测试和排错:【静态分析器:异常情况】【代码审查器:代码标准】【断言处理器】【测试用例生成器】专题九 维护维护的概念、分类、过程影响可维护性的因素 如何提高可维护性维护的副作用名词解释: 模块化而就是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集中起来组成一个整体,从而完成指定的功能, 满足问题的要求。软件测试是指为了发挥软件中的错误而执行软件的过程。它的目标是尽可能多地发现软件中存在的错误,将测试结果作为纠错 的依据。语句覆盖是设计一组测试用例,是的程序中的灭一条语句至少执行一次 条件覆盖是设计测试用例,是的程序中条件判断语句中的各个条件成

26、分都为真和为假一次 判定条件覆盖是分支覆盖和条件覆盖的复合体,即除了要使判定 表达式中的哥哥条件都为真和为假一次之外,还要保证让判定 表达式为真和为假一次。路径覆盖就是要设计足够多的测试用例,是的程序中的所有可能路径均被执行一遍。 适应性维护是指为了使软件系统适应计算机运行环境的不断变化而修改软件的过程。 完善性维护是为了扩充软件的功能,提高原油软件性能而开展的软件工程活动。 结构化分析方法是面向数据流进行需求分析的方法,适合于数据处理类型软件的需求分析。由于利用图形来表示需要,所以显 得清晰、简明、避免了冗长、重复、难于阅读和修改等缺点,易于学习和掌握。数据流图是结构化分析的核心,是描述数据处理过程的有力工具。它从数据传递和加工的角度,以图形的方式刻画数据处理系 统的工作情况。数据字典对数据流图中出现的所有数据元素给出逻辑定义,有了这些定义,才使得数据流图上的数据流加工、和数据存储得到 确切的解释、健壮性是只在约定的意外环境下系统能适当的给予预期的响应。 依靠一个或多个专家对项目做出估算,其精度主要取决于专家对估算项目的定性参数的了解和他们的经验。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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