《2022年软件工程复习 .pdf》由会员分享,可在线阅读,更多相关《2022年软件工程复习 .pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件工程复习第一章1、软件配置主要包括程序、文档和数据等成分。因此,软件开发不一定是写代码。2、程序能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。3、软件工程是指导电脑软件开发和维护的一门工程学科。4、软件工程的基本原理1)用分阶段的生命周期计划严格管理2)坚持进行阶段评审3)实行严格的产品控制4)采用现代程序设计技术5)结果应能能清楚地审查6)开发小组的人员应该少而精7)承认不断改变软件工程实践的必要性5、软件生命周期有哪几个阶段1)问题定义2可行性研究3需求分析4总体设计5详细设计6编码和单元测试7综合测试8
2、软件维护软件维护有哪些:1)改正维护:也就是诊断和改正在使用过程中发现的软件错误;2)适应性维护:即修改软件以适应环境的变化;3)完善维护:即根据用户的要求改良或扩充软件使它更完善;4)预防性维护:即修改软件,为将来的维护活动预先做准备。6、模型瀑布模型最重要的特点:只有当一个活动完成、交付相应的文档、通过审查小组的审查合格后,才能开始下一个活动。瀑布模型的优点:1为项目提供了按阶段划分的检查点;2当前一活动完成后,只需要去关注后续活动;3它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。瀑布模型的缺点:1由于开发模型是线性的,用户只有等到整个过程
3、的末期才能见到开发成果,从而增加了开发的风险;精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 17 页2各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;3早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。特点:本质是开发出系统的原型,以便让用户确认什么是真正的需求,一旦用户确认了需求,原型将被抛弃。优点: 1客户和开发者可以通过原型快速对需求达成一致,明确一致的需求对软件设计和实现具有重要作用;2克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险。缺点:有时开发组织对快速建立的原型舍不得抛弃,
4、由此可能带来快速原型化模型的两个缺点: 1所选用的开发技术和工具不一定符合主流的发展;2快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。特点: 从一组给定的需求开始,通过构造一系列可执行的软件构件来实施开发活动,以增量方式逐步完善待开发的软件。当一个新的构件被编码和测试后,并入到软件系统结构中,然后将该结构作为一个整体进行测试。这个过程不断循环往复直到软件系统到达要求的功能为止。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 17 页优点: 1)能在较短时间内向用户提交可完成一些有用的工作产品,即从第 1 个构件交付之日起,
5、用户就能做一些有用的工作。2)逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给用户组织带来的冲击。3)对系统的可维护性是一个极大的提高,因为整个系统是由一个个构件集成在一起的,当需求变更时只变更部分构件,而不必影响整个系统。缺点: 1)增量模型要求设计者必须站在整个系统的角度,对系统的构架进行良好的设计,否则,可能会出现各个构件不能集成在一起的风险。(2)至始至终开发者和客户必须在一起,直到完全版本出来。6.4 螺旋模型简化的螺旋模型完整的螺旋模型特点:沿螺旋线自内向外每旋转一圈便开发出更为完善的一个新的软件版本。优点: 1对于大型系统及软件的开发,这种
6、模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。2需要相当的风险分析评估专门技术,比较复杂。缺点:螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 17 页面的专门知识, 否则将出现真正的风险:当项目实际上正在走向灾难时,开发人员可能还以为一切正常。优点: 该模型的各个阶段没有明显的界限,开发人员可以同步进行开发,可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。缺点: 1由于该模型在各个开发阶段是重叠的,在开发过程
7、中需要大量的开发人员,因此不利于项目的管理。2该模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。7、V 模型8、模型练习题练习题 1:假设要求你开发一个软件,该软件的功能把读入的浮点数开平方,所得到的结果精确到小数点后4 位,一旦实现并试用后,该产品将被抛弃。你打算用哪种软件生命周期模型?对这个软件的需求很明确,实现开方功能的算法也很成熟,因此, 既无须通过原型来分析需求也无须用原型来验证设计方案。此外,一旦实现并测试完之后,该产品将被抛弃,因此也用户需求需求分析与系统概要设计详细设计验收测试系统测试集成测试单元测试编码精选学习资料 - - - -
8、- - - - - 名师归纳总结 - - - - - - -第 4 页,共 17 页无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。综上所述,为了开发这个简单的软件,使用大多数人所熟悉的瀑布模型就可以了。练习题 2:假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发,由于市场竞争激烈, 公司规定了严格完成的期限并对外发布。你打算用哪种软件生命周期模型?对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此, 选择生命周期模型时应该着重考虑哪种模型有助于加快产品开发的进度。使用增量模型开发软件时可以并行完成开发工
9、作,因此能够加快开发进度。这个项目是开发该公司已被广泛使用的字处理软件的新版本,从上述事实至少可以得出3点结论:第一, 旧版本相当于一个原型,通过收集用户对旧版本的反映,较容易确定对新版本的需求, 没必要再专门建立一个原型系统来分析用户的需求;第二, 该公司的软件工程师对字处理软件很熟悉,有开发字处理软件的丰富经验,具有采用增量模型开发新版字处理软件所需要的技术水平;第三,该软件受到广阔用户的喜爱,今后很可能还要开发更新的版本,因此,应该把该软件的体系结构设计成开放式的,以利于今后的改良和扩充。综上所述,采用增量模型来完成这个项目比较恰当。第二章可行性研究1、目的可行性研究的目的,就是用最小的
10、代价在尽可能短的时间内确定问题是否能够解决。2、包括哪几个部分1)技术可行性2)经济可行性3)操作可行性3、研究过程1)复查系统规模和目标2)研究目前正在使用的系统3)导出新系统的高层逻辑模型4)进一步定义问题5)导出和评价供选择的解法6)推荐行动方针7)草拟开发计划8)书写文档提交审查4、系统流程图基本思想:用图形符号以黑盒子形式描绘组成系统的每个部件程序、文档、数据库、人工过程等。练习题:5、数据流图 DFD是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变化。它只是描绘数据在软件中流动和被处理的逻辑过程。练习题 1:假设一家工厂的采购部每天需要一张订货报表,报表按零件
11、编号排序,表中列出所有需要再次订货的零件。对于每个需要再次订货的零件应该列出下述数据:零件编号, 零件名称,订货数量,目前价格,主要供给者,次要供给者。零件入库或出库称为事务,通过放在仓库中的CRT 终端把事务报告给订货系统。当某个零件的库存数量少于库存量临界值时就应该再次订货。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 17 页表 1 组成数据流图的元素可以从描述问题的信息中提取源点 /终点处理采购员仓库管理员产生报表处理事务数据流数据存储订货报表零件编号零件名称订货数量目前价格主要供给者次要供给者事务零件编号事务类型数量订货信息
12、库存清单零件编号库存量库存量临界值0 层图 1 订货系统的功能级数据流图1 层1 处理事务2 产生报表采购员事务D2 订货信息D1 库存清单库存清单订货信息订货信息仓库管理员精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 17 页图 2 把处理事务的功能进一步分解后的数据流图2 层练习题 2:银行电脑储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员输入系统,如果是存款则系统记录存款人、住址或号码、身份证号码、存款类型、存款日期、到期日期、利率及密码可选等信息,并印出存单给储户;如果是取款而且存款时留有密码, 则系统首先核对储
13、户储户密码,假设密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。以下仅供参考(1) 识别外部实体及输入输出数据流。外部实体:输入数据: 如果需要储户输入密码,储户才直接与系统进行交互。储户填写的存款或取款信息通过业务员键入系统,可以将存款及取款信息抽象为事务。输出数据:存款单、利息清单(2) 画出环境图顶层数据流图业务员银行储蓄系统事务存款单储户利息清单储户密码(3) 画出一层数据流图订货报表仓库管理员接收事务1.2 更新库存清单处理订货2 产生报表采购员事务库存信息D1 库存清单库存清单D2 订货信息订货信息订货信息精选学习资料 - - - - - - - - - 名师归纳总结
14、 - - - - - - -第 7 页,共 17 页(4) 画出二层数据流图对一层图中的“处理存款”及“处理取款”进行进一步分解,得到二层数据流图,即处理存款的数据流图和处理取款的数据流图。存款业务2.1 记录存款信息2.2 打印存款单存款信息存款单存款信息处理存款的数据流图处理取款的数据流图6、数据字典数据字典最主要的用途是供人查阅对不了解的条目的解释。基本元素: 1数据流2数据流分量即数据元素3数据存储4处理练习题 :北京某高校可用的号码由以下几类:校内号码由 4 位数字组成, 第一位数字不是零;校外又分为本市和外地两类,拨校外先拨 0,假设是本地再接着拨精选学习资料 - - - - -
15、- - - - 名师归纳总结 - - - - - - -第 8 页,共 17 页8 位数字固话第一位不是0或 11 位数字移动第一位为1 ;假设是外地,则拨 3位区码再拨8 位号码固话第一位不是0 , 或拨 0 再拨 11 位数字移动第一位为 1 。请用数据定义的方法,定义上述号码。高校=校内| 校外 校内=非零数字 +3 位数字校外=本市| 外地 本市=0+非零数字 +7 位数字外地=0+3 位区码 +非零数字 +7 位数字3 位区码 =3数字 3 7 位数字 =7数字 7 非零数字 =1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 数字 =0 | 1 | 2 | 3 |
16、 4 | 5 | 6 | 7 | 8 | 9 7、成本效益练习题 :设计一个成本开发为50000 元,寿命为3 年。未来3 年的每年收益预计为22000元、 24000 元、 26620 元。银行年利率为10%,不计复利 。试对此项目进行成本效率分析,以决定其经济可行性。存银行: 50000 1+310%=65000 开发软件: 22000 1+210%+24000 1+110%+26620=79420 第三章需求分析1、需求分析的任务1)确认对系统的综合要求?功能需求?性能需求?可靠性和可用性需求?出错处理需求?接口需求?约束?逆向需求?将来可能提出的要求2)分析系统的数据要求?导出系统的逻
17、辑模型?修正系统开发计划2、与客户沟通获取需求的方法1)访谈2)面向数据流自顶向下求精3)简易的应用规格说明技术4)快速建立软件原型3、状态转换图3.1 在状态图中定义的状态主要有初态即初始状态、终态即最终状态和中间状态。在一张状态图中只能有一个初态,而终态则可以有0 至多个。3.2 事件触发条件:练习题复印机工作过程:未接到复印命令处于闲置状态 ,一旦接到复印命令进入复印状态 ,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 17 页没纸, 则进入
18、缺纸状态 ,发出警告, 等待装纸, 装满纸后进入闲置状态,准备接受复印命令;如果复印机发生卡纸状态 , 发出警告, 等待维修人员来排除故障,故障排除后回到闲置状态。第五章总体设计1、目的:总体设计的基本目的就是答复“概括地说,系统该如何实现”这个问题,因此总体设计又称概要设计或初步设计。2、必要性:可以站在全局高度上,花较少成本,从较抽象的层次上分析比照多种可能的系统实现方案和软件结构,从中选出最正确方案和最合理的软件结构,从而用最低成本开发出较高质量的软件系统。3、总体设计过程通常由两个主要阶段组成:1)系统设计阶段:确定系统具体实现方案2)结构设计阶段:确定软件结构4、设计原理1)模块化2
19、抽象3逐步求精4抽象信息隐藏和局部化5模块独立高内聚和低耦合?耦合?内聚耦合度按从强到弱的顺序可分为几种类型:6独立耦合:模块间没有信息传递时,属于非直接耦合5数据耦合:指两个模块彼此交换数据(两个模块间的通讯信息是假设干参数,其中每一个参数都是一个数据元素) 4控制耦合:一个模块在界面上传递一个信号如开关值、标志量等控制另一个模块,接收信号的模块的动作根据信号值进行调整,称为控制耦合。3特征耦合:介于数据耦合与控制耦合之间。当把整个数据结构作为参数传递而被调用的模块是需要其中一部分数据元素时。2公共耦合:两个以上的模块共同引用一个全局数据项1内容耦合: 当一个模块直接修改或操作另一个模块的数
20、据或者直接转入另一个模块时,就发生了内容耦合。内聚度按强度从低到高有以下几种类型:闲置复印do 复印卡纸Do 警告缺纸Do 警告复印命令完成命令装满纸排除故障精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 17 页1偶然内聚:模块内的各个任务没有什么有意义的联系,它们之所以能构成一个模块完全是偶然的原因。2逻辑内聚:几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。3时间内聚: 如果一个模块完成的功能必须在同一时间内执行如系统初始化,但这些功能只是因为时间因素关联在一起,则称为时间内聚。4过程内聚:如果一个模块内部的处理成份是相关
21、的,而且这些处理必须以特定的次序执行,则称为过程内聚。5通信内聚:如果一个模块的所有成份都操作同一数据集或生成同一数据集,则称为通信内聚。6顺序内聚:如果一个模块的各个成份和同一个功能密切相关,而且一个成份的输出作为另一个成份的输入,则称为顺序内聚。7功能内聚:模块的所有成份对于完成单一的功能都是必须的,则称为功能内聚。题型:以下哪种内聚最强,耦合最弱?5、启发规则1)改良软件结构提高模块独立性2)模块规模应该适中3)深度、宽度、扇出和扇入都应该适当4)模块的作用域应该在控制域之内5)力争降低模块接口的复杂程度6)设计单入口单出口的模块7)模块功能应该可以预测6、数据仪表板系统的数据流图精选学
22、习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 17 页具有边界的数据流图第六章详细设计1、目标:详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成某种程序设计语言书写的程序。2、N-S 图和 PAD 图练习题START IF A THEN X1 DO UNTIL B ELSE X2 Y END IF Z STOP N-S 图精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共
23、 17 页X1 X2 UNTIL B Y Z PAD 图第七章实现测试人员要及早介入,测试计划/用例要早点写1、通常把 编码和测试 称为实现。2、编码是对设计的进一步具体化,因此程序的质量主要取决于软件设计的质量。一个程序的测试与什么有关?设计3、测试的目的:在软件投入生产性运行之前,尽可能多地发现软件中的错误。4、测试没问题后不能立即给用户使用。测试之后还要试运行,在试用时发现问题再修改。5、编码风格都用全局变量好还是都用临时变量好注释越多越好,越详细越好。6、软件测试基础V 模型 :描述软件开发各阶段与测试策略之间的对应关系。测试分类:单元测试,集成测试,白盒测试,黑盒测试7、白盒测试7.
24、1 适用场合:T F A START Z STOP A UNTIL B X2 Y T F X1 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 17 页白盒测试主要用于对模块的测试,包括:?程序模块中的所有独立路径至少执行一次?对所有逻辑判定的取值“真”与“假” 都至少测试一次?在上下边界及可操作范围内运行所有循环?测试内部数据结构的有效性等7.2 分类:常用的白盒测试方法有:?逻辑覆盖测试?基本路径覆盖测试?数据流测试?循环测试语句覆盖重点掌握8、黑盒测试8.1 适用场合:黑盒测试可用于各种测试,它试图发现以下类型的错误:?不正确或
25、遗漏的功能?接口错误,如输入/输出参数的个数、类型等?数据结构错误或外部信息(如外部数据库 )访问错误?性能错误?初始化和终止错误8.2 分类:主要的黑盒测试方法有:?等价类划分?边界值分析?比较测试?错误猜测?因果图9、测试用例会写测试数据和预期的输出结果称为测试用例。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 17 页练习题:这个是黑盒测试注册测试用例功能描述:注册编号输入 /动作期望的输出 /相应实际情况1 用户名和密码在【最小值,最大值】之间,进行注册注册成功2 用户名和密码为【最大值】进行注册注册成功3 用户名和密码为【
26、最小值】进行注册注册成功4 必填项分别为空注册显示必填项提示信息5 用户名长度【最大值】+1,进行注册显示用户名长度验证提示信息6 用户名长度【最小值】-1,进行注册显示用户名长度验证提示信息7 密码长度【最大值】+1,进行注册显示密码长度验证提示信息8 密码长度【最小值】-1,进行注册显示密码长度验证提示信息9 用户名含有非法字符注册显示用户名字符验证提示信息10 密码含有非法字符注册显示密码字符验证提示信息11 两次输入秘密不一致进行注册显示两次输入密码不一致提示信息12 以已经注册的用户名进行注册显示用户名已存在提示信息13 改变已存在用户的用户名的大小写进行注册根据需求量看是否区分大小
27、写登录测试用例功能描述:登录编号输入 /动作期望的输出 /相应实际情况1 使用合法用户名和密码登陆登陆成功2 使用错误的用户名和密码登陆显示用户名或密码错误信息精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 17 页3 改变合法用户名或密码的大小写登陆显示用户名或密码错误信息4 用户名为空登陆显示输入用户名或密码5 在合法用户或密码前插入空格显示用户名或密码错误信息6 在合法用户名或密码中间插入空格显示用户名或密码错误信息7 在合法用户名或密码后插入空格显示用户名或密码错误信息8 使用已被禁用的帐号登陆显示帐号被禁用等相应提示信息9
28、使用已删除的帐号登陆显示不存在此用户等相应提示符10 登陆界面是否支持快捷键,如Tab,Enter 健Tab 健能按照顺序切换焦点,Enter 健能焦点于登陆按钮上11 密码为空进行登陆显示输入密码,密码不能为空提示信息12 用户名和密码均为空登陆显示请输入用户名和密码提示符13 用户名中含有全角字符登陆显示用户名或密码错误提示信息14 密码中含有全角字符登陆显示用户名或密码错误提示信息修改密码测试用例功能描述:修改密码编号输入 /动作期望的输出 /相应实际情况1 新密码长度在【最小值,最大值】之间,进行修改修改成功2 新密码长度为【最大值】,进行修改修改成功3 新密码长度为【最小值】,进行修
29、改修改成功4 不输入旧密码进行修改显示未输入旧密码提示信息5 输入错误的旧密码进行修改显示旧密码输入错误提示信息6 新密码输入为空进行修改显示未输入新密码提示信息7 重复新密码输入为空进行修改显示旧密码输入错误提示信息8 新密码与重复密码不一致进行修改显示两次密码输入不一致提示信息9 新密码长度为【最大值】+1,进行修改显示密码长度验证提示信息10 新密码长度为【最小值】-1,进行修改显示密码长度验证提示信息11 新密码中输入非法字符进行修改显示密码字符验证提示信息10、软件可靠性和可用性区别软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。软件可用性是程序在给定的时间
30、点,按照规格说明书的规定,成功地运行的概率。第八章维护1、软件维护的定义:所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。2、分类:非结构化维护和结构化维护。第九章 面向对象方法学引论精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 17 页概念:1、对象:在应用领域中有意义的、与所要解决的问题有关系的任务事物都可以作为对象, 它既可以是具体的物理实体的抽象,也可以是人为的概念, 或者是任何有明确边界和意义的东西2、类类就是对具有相同数据和相同操作的一组相似对象的定义,也就是说,类是对具有相应属性和行
31、为的一个或多个对象的描述,通常在这种描述中包括对怎样创建该类的新对象。3、实例实例是由某个特定的类所描述的一个具体的对象4、消息消息就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。通常,一个消息由下述3 部分组成。?接收消息的对象?消息选择符也称为消息名?零个或多个变元5、方法方法就是对象所执行的操作,也就是类中所定义的服务。6、属性属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。7、封装从字面上理解,所谓封装就是把某个事物包起来, 使外界不知道事物的具体内容。在面向对象的程序中, 把数据和实现操作的代码集中起来放在对象内部。一个对象是一个不透明的黑盒子,表四
32、对象状态的数据和实现操作的代码与局部数据,都被封装在黑盒子里面, 从外面是看不见的, 更不能从外面直接访问或修改这些数据和代码。8、继承图广义地说, 继承是指能够直接获得已有的性质和特征,而不必重复定义它们。 在面向对象的软件技术中继承是子类自动地共享基类中定义的数据和方法的机制。9、多态性多态是指子类对象可以像父类对象那样使用,同样的消息即可以发送给父类对象也可以发送给子类对象。也就是说,在类等级的不同层次中可以共享公用一个行为方法的名字,然而不同层次中每个类却自动按自己的需要来实现这个行为。当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法。10、重载有两种重载:函数重载是指在同一作用域内的假设干个参数特征不同的函数可以使用相同的函数名字; 运算符重载是指同一个运算符可以施加于不同类型的操作数上面。当然,当参数特征不同或被操作数的类型不同时,实现函数的算法或运算的语义是不相同的。题目是参考软件设计师历年真题精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 17 页