第一篇:软件工程考点总结
关类组成一个层次结构的系统;
4、对象彼此间只能通过发送消息相互联系。
面向对象另一个优点是软件可重用。(6):软件生命周期?
1、问题定义
2、可行性研究
3、需求分析
4、总体设计
5、详细设计
6、编码和单元测试
7、综合测试
8、软件维护
(7):几个模型优缺点
1、瀑布模型
优点:可强迫开发人员采用规范的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
缺点:瀑布模型是由文档驱动的这个事实也是它的一个主要缺点。由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需求。
2、快速原型模型
优点:是不带反馈环的,软件产品开发基本上是线性顺序进行的。缺点:快速原型的本质是“快速”,开发人员应尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本,原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。
3、增量模型
优点:能在较短时间内向用户提交可完成部分工作的产品,是增量模型的一个优点,另一个优点是逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
缺点:把每个新的增量构件集成到现有的软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计的便于按这种方式进行扩充,软件体系结构必须是开放的。
4、螺旋模型
优点:对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;减少了过多测试或测试不足所带来的风险;更重要的是,在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。
缺点:是风险驱动的。软件开发人员具有丰富的风险评估经验和这方面专门的知识,否则项目实际上正在走向灾难时,开发人员可能还认为一切正常。
5、喷泉模型
优点:体现了面向对象软件开发过程迭代和无缝的特征。缺点:开发软件是会产生无序现象。
目的:就是用最小的代价在尽可能短的时间内确定问题是否能够解决。任务:在较高层次上以较抽象的方式进行的系统分析和设计的过程。以便于对以后的行动方针提出建议。
过程:
1、复查系统规模和目标
2、研究目前正在使用的系统
3、到处新系统的高层次逻辑模型
4、进一步定义问题
5、导出和评价供选择的解法
6、推荐行动方针
7、草拟开发计划
8、书写文档提交审查
(2):数据字典4类元素
1、数据流
2、数据流分量
3、数据存储
4、、处理
(3):成本估计技术
1、代码行技术
2、任务分解技术
3、自动估计成本技术
(4):成本效益分析方法,考虑方面?
1、货币的时间价值
2、投资回收期
3、纯收入
4、投资回收率
(1):设计过程的9个步骤
1、设想供选择的方案
2、选取合理的方案
3、推荐最佳的方案
4、功能分解
5、设计软件结构
6、设计数据库
7、制定测试计划
8、书写文档
9、审查和复审(2):软件设计的原理
1、模块化
2、抽象
3、逐步求精
4、信息隐藏和局部化
5、模块独立(3):启发规则
1、改进软件结构提高模块独立性
2、模块规模应该适中
3、深度、宽度、扇出和扇入都应适当
4、模块的作用域应该在控制域之内
5、力争降低模块接口的复杂程度
6、设计单入口单出口的模块
7、模块功能应该可以预测
(4):面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法,信息流有变换流和事务流两种类型。
(1):程序设计语言的标准
1、系统用户的要求
2、可以使用的编译程序
3、可以得到的软件工具
4、工程规模
5、程序员的知识
6、软件可移植性要求
7、软件的应用领域(2):编码遵循的规则
1、程序内部的文档
2、数据说明
3、语句构造
4、输入输出
5、效率
(3):软件测试的准则
1、所有测试都应该能追溯到用户需求。
2、应该远在测试开始之前就制定出测试计划。
3、把Pareto原理应用到软件测试中。
4、应该从”小规模“测试开始,并逐步进行”大规模“测试。
5、穷举测试是不可能的。
6、为了达到最佳的测试效果,应该由独立的
第二篇:软件工程考点总结
第一章
1.软件是程序和所使程序正确运行所需的相关文档和配置信息.软件工程是一门工程学科,涉及软件生产的各个方面.软件过程是指制作软件产品的一组活动及其结果。
2.软件过程的4项基本活动有:软件描述:客户和工程师定义所要生产的软件以及对其操作的一些约束软件开发软件得以设计和编程实现软件有效性验证软件经过检查以保证它就是客户所需要的软件进化软件随不同的客户和变化的市场需求而修改.3.软件工程人员的工作不仅仅是技术的应用,还要承担很多责任.保密:工程人员必须严格保守雇主或客户的机密,而不管是否签署了保密协议.工作能力 工程人员应实事求是地表述自己的工作能力,不应有意接受超出了自己能力的工作.知识产权工程人员应当知晓控制专利权、著作权等知识产权使用的地方法律,必须谨慎行事,确保雇主和客户的知识产权受到保护.计算机滥用 软件工程人员不应该用自己的技能滥用他人的计算机,滥用计算机有时对他人影响不大(如在雇主的计算机上玩游戏),但有时后果非常严重(传播病毒).第二章
1软件工程模型瀑布模型软件描述和开发,分成独立和不同的阶段.增量式开发描述、开发和有效性验证交错进行.面向复用的软件工程基于已存在的很多可复用的组件.2.瀑布模型:1需求分析和定义,通过咨询系统用户建立系统的服务、约束和目标。2系统和软件设计系统设计过程通过建立系统的总体体系结构将需求分为硬件需求和软件需求。3实现和单元测试将软件设计实现为一组程序或程序单元,单元测试是检验每个单元是否符合其描述。4集成和系统测试集成单个的程序单元或一组程序,并对系统整体进行测试以确保其满足了软件需求。5运行和维护
3瀑布模型的问题1将项目分成不同阶段,难以应付不断变化的客户需求.2当需求十分明确,软件开发中只做有限修改时才适合使用该模型.3很少有业务系统有稳定的需求。瀑布模型主要是用于大型系统工程项目,且软件项目是大型工程项目的一部分时尤为适用.4增量式开发优点:
1、降低了适应用户需求变更的成本
2、容易得到用户及时的反馈
3、为及时交付用于的系统提供了可能问题1过程不可见;2系统结构通常较差;3需要专业技能(如快速原型语言等).5过程活动包括:软件描述、软件设计和实现、软件有效性验证及软件进化.6软件描述(需求工程)软件描述或需求工程主要是理解并定义系统需要哪些服务以及找出开发和运行期间受到哪些约束.可行性研究:指明现有的软件硬件及能否实现用户对新系统的要求需求导出和分析:通过对现有系统分析、与潜在用户和购买者讨论、进行任务分析等导出系统需求的过程需求描述:把在分析活动中收集的信息以文档的形式确定下来。需求有效性验证:检查需求的现实性、一致性和完备性。
7软件设计和实现把系统描述转化为一个可运行的系统的过程。软件设计,实现软件的结构、系统的数据等描述。实现,把软件结构转化为可执行的程序。体系结构设计识别系统总体结构、基本组件、它们之间的关系以及它们是怎样分布。接口设计定义系统结构的借口组件设计针对每个系统组件设计它的运行方式数据库设计设计系统数据结构,以及如何在数据库中表示这些数据结构
8软件有效性验证也称检查和有效性验证,是为了表明系统符合其描述,满足了客户的需求.包括检查和审查过程,还有系统测试.组件或单元测试由开发系统的人员对组成系统的组件进行测试系统测试集成组件形成完整的系统。并测试是否满足需求。接收测试系统在接受并运行之前的最后阶段测试
9软件进化软件本质是灵活的,可以改变的.由于业务环境的不断变化,客户需求也随之发生变化,该软件支持的业务也必须不断更新和修改.10.Rational统一过程来自于UML上的工作和相关的软件开发过程.开端建立一个业务案例细化增进对问题域的理解,建立系统的体系框架,给出项目计划、风险构造系统设计、编程和测试转换在其操作环境部署这一系统.过程工作流:业务建模;需求;分析和设计;实现;测试;部署;支持工作流:配置和变更管理;项目管理;环境RUP 好的实践:反复地开发软件;对管理需求;使用基于组件的体系结构;可视化模型软件;验证软件质量;控制对软件的变更
第三章
1.XP和敏捷方法的原则1增量式开发是通过系统的小的频繁开发的版本来支持的;2客户的参与是通过全时雇佣到开发团队的方式;3人(而不是过程)是通过结对编程、集体对系统代码的所有权、可以忍受的开发过程而无需超额的工作小时来运作的;4变更是通过经常性的系统版本来支持的;5通过持续的再分解来维护系统的简洁性。
2问题:1很难将兴趣保持在参与到开发的客户身上。2团队成员个人可能从性格上不太适应激烈的投入,这是敏捷方法的典型特征。3对变更做出优先级排序可能是极困难的,尤其是对那些有很多参与者的系统。4维护简洁性需要额外的工作。5许多机构很难向另一种工作模型转换。6随着其他迭代方法的发展,合同可能也是极限方法的一个问题。优点1极限编程将增量式开发推向极致。2极限编程将软件进行再分解(refactoring),使得当新情节实现的时候软件总是容易理解和改变的。3.在创建程序特征之前开发自动测试。
3结对编程优点:1它支持共同拥有软件和共同对系统负责2它担当了非正式的复查过程3有助于支持重构
第四章
1需求工程过程包括可行性研究、需求导出和分析、需求描述、需求有效性验证及需求管理。2功能需求对系统应该提供的服务、如何对输入做出反应以及系统在特定条件下的行为的描述。非功能需求对系统提供的服务或功能给出的约束。时间约束、开发过程的约束、标准等。3功能需求描述系统所预期提供的功能或服务。取决于开发的软件类型、软件未来的用户以及开发的系统类型。理论上,系统的功能需求应该既全面又具有一致性。全面用户所需的所有服务都应该给出描述;一致性在对系统功能需求进行描述时,不能前后矛盾。在实际过程中,对大型而又复杂的系统而言,要做到需求描述既全面又一致几乎是不可能的。
4非功能需求它们定义系统的属性和约束。非功能性需求比功能性需求更关键。产品需求这些需求定义或约束软件的行为。机构需求很广泛的系统需求,起源于客户所在的机构和开发者所在的机构中的政策和规定。外部需求包括所有来自于系统外部因素和开发过程的需求。非功能性需求可能是很难精确描述的,并且不精确的需求可能也难以得到检验。系统目标用户的一般的要求,比如系统的易用性。可检验的非功能需求应用某些度量进行描述,它们可以客观的得到验证。
5需求导出和分析(4个活动):1需求发现这是一个与系统的信息持有者交流从而收集他们的需求的过程。来自信息持有者和文档的领域需求是在这个活动中得以发现的。2需求分类与组织所收集的需求是无序的,需要对其重新组织和整理,将其分为相关的几个组。3需求优先排序和协商对需求进行优先权排序,并通过协商发现且解决这些冲突。4需求描述记录需求并将它作为螺旋下一个循环的输入,产生形式化和非形式化的需求文档。系统需求导出和分析是困难的:1信息持有者表述泛泛2需求工程师没有领域知识3不同的信息持有者需求不同4政治上的因素影响系统需求5经济和业务环境是动态的6需求发现是一个收集准备建立的系统和正在使用的系统的信息,并从这些信息当中提取用户和系统需求的过程。信息源包括已有文件、系统信息持有者以及类似系统的相关内容。7脚本(场景)是对交互实例片段的描述。一个场景可能包扩以下内容:1在场景的开始部分有一个系统状态描述;2一个关于标准事件流的描述;3一个关于哪儿会出错以及如何处
理错误的描述;4有关其他可能在同一时间进行的活动的信息;5在场景完成后系统状态的描述。
第五章
活动图,表示一个过程或数据处理中所涉及的活动用例图,表示一个系统和它所处的环境之间的交互。时序图,表示参与者系统之间以及系统各部分之间的交互类图,表示系统中对象类以及这些类之间的联系状态图,表示系统是如何响应内外部事件的。
第六章
1明确设计和文档化软件体系结构好处:1信息持有者之间的沟通体系结构可以作为不同的项目相关人员之间讨论的焦点2系统分析系统分析对体系结构的设计决策,对系统能否满足非功能需求具有很大的影响3大规模复用体系结构能在相似需求的系统之间互用,以支持大规模的软件复用。
2分层体系结构分层模型用来把系统组织成一系列的层次,每一层提供一组服务。
3容器体系结构系统所有数据在一个中央容器中管理,该容器可被所有系统组件访问组件通过容器交互。优点它是共享大量数据的一个高效方法;子系统不必关心数据是如何集中进行的这些活动;共享模型能通过容器模式而看得见。缺点子系统一定要与容器数据模型一致,不可避免地,每个专用的工具之间要做出妥协;数据进化变得很困难和昂贵;容器模型迫使所有的子系统使用相同的策略;很难将容器有效的分配到多台机器上。4客户机/服务器体系结:优点数据的分布式最直接的;可以更有效地使用网络系统,从而降低了对硬件的要求;很容易就添加一台新的服务器或更新现有的服务器。缺点没有共享数据模型,子系统以不同的方式组织它们的数据。数据交换效率就可能很低;每个服务器上出现冗余数据管理;没有中央寄存器的名字和服务,这可能很难找出哪个服务器和哪些服务可用。5管道和过滤体系结优点:易于理解并支持变换的复用。缺点:通信变换间所传输的数据格式必须协商好。
第七章
1复用 1抽象层:不直接复用,运用软件设计中的成功抽象。2对象层:直接复用库中对象,代替自己编写代码3组件层:通常需要添加自己的代码对组件进行调成和扩展 4系统层:复用整个系统
2配置管理管理变更中软件系统的一般过程1版本管理对软件不同版本的追踪提供支持2系统集成提供支持帮助开发人员定义在创建每个系统版本时所用的组件版本 3问题追踪提供支持允许用户报告缺陷及其他问题,并允许开发人员谁在修复这些问题,以及何时完成修复。
第八章
1检验: “我们是否在正确地构造一个产品”。软件应该符合设计规格。有效性验证: "我们是否在构造一个正确的产品”。软件应该满足用户所需要的。
2商业软件测试3阶段:1开发测试2发布测试3用户测试
3开发测试:1.单元测试,对单独的程序单元活对象类进行测试(功能)。2组件测试,多个程序单元整合创建一个合成的组件(接口)3系统测试,一些或所有组件作为整体(交互)。4选择单元测试案例:1划分测试,识别具有共同特征和以同样方法处理的一组数据。2基于准则测试,使用测试准则来选择测试案例。
5准则:用一个只有单个值的序列来测试软件;在不同的测试中使用不同规模的多个序列;导出一个测试,让序列的第一个、中间一个和最后一个元素得到测试;测试序列的长度为零。原则:选择能强制系统生成的所有错误信息输入;设计能够使系统的输入缓冲溢出的输入;重复相同的输入或一系列输入很多次;使产生无效的输出;迫使输出结果太大或者太小。6组件测试:1参数接口数据从一个过程传到另外一个过程2共享内存接口内存块为过程或函数所共享3程序接口子系统封装一组程序,这些程序为其他子系统调用4消息传递接口子
系统通过传递消息请求其他子系统上的服务。接口错误3类:接口误用调用者组件在调用其他组件时因接口使用不当而发生接口错误。接口误解调用者组件误解了被调用组件的接口描述而产生错误,对呗调用组件进行了错误的假设。时序错误调用和被调用组件以不同的速度运行,中间过时的数据无法得到正确的处理.7用户测试:α测试:软件用户和开发小组一起在开发小组一起在开发者的地点测试这个软件。β测试:该软件的版本是提供给用户让他们进行测验,并向开发者提供发现的文题。接受测试:客户测试系统决定他们是否愿意从系统开发者哪里接收系统并在客户环境中部署。接收测试六个阶段:1.定义接受准则(合同)2.计划接受测试 3导出接收测试 4.运行接受、测试 5协商测试结果 6 拒绝/接收系统
第九章
1软件进化:变更请示、影响分析、版本规划(缺陷修补、平台适应、系统增强)、变更实现、系统发布。变更实现:提议的变更、需求分析、需求更新、软件开发紧急修补过程:变更请求、分析源代码、修改源代码、移交修改的系统。
2软件维护:
1、修补软件缺陷(纠正性)
2、是软件适应不同操作系统(适应性)
3、增加或修改系统功能(完善性)
3投入后代价增加原因:1团队稳定性2糟糕的开发实践3人员技术水平4程序年龄和结构。
第25章
1配置管理包括:变更管理:包括跟踪来自客户和开发者的软件变更请求,计算做出这些变更的花费并估计其影响,决定是否变更,何时完成变更。版本管理:包括跟踪系统组件的多个版本,确保由不同开发者对组件做出的变更不会彼此干涉。系统构建:是一个组装程序组件,数据和库的过程,然后把这些组件编译连接成一个可以执行的系统。发布管理:包括准备对完发布的软件,持续跟踪已经发布以供客户使用的系统版本。
2配置项(软件配置项):与配置管理控制下的软件项目有关的任何事物。配置项会存在多个不同的版本,每个配置项都有一个唯一的名字。
3变更管理确保系统的进展是一个可管理的过程。主要关心的是对提建议的变更的成本收益分析,保证变更值得做,并记录系统的哪些组件已经改变。变更请求考虑的因素:不做变更会引起的后果,变更的益处,变更影响的用户数,变更所需花费,产品发布循环。
4版本管理是跟踪软件组件或配置信息以及使用这些组件系统的不同版本的过程。版本管理系统通常提供一系列特征:版本和发布版本识别被管理版本提交给系统时给他们分配标识符存储管理为了减少存储空间,版本管理系统会提供存储管理工具变更历史记录记录并列出所有对系统或组件作出的变更独立开发确保由不同的开发者对组件做出的变更互不影响项目支持一个版本管理系统可能支持共享组件的几个项目的开发。
第三篇:软件工程总结
软件工程课程总结
摘要:
计算机是20世纪最重大的科学技巧成就之一,使当代社会的经济、军事、科研、教育、服务等方面在概念和技巧上发生了性的变化,对人类社会的进步已经并还将产生极为深刻的影响。目前,计算机是世界各发达国度剧烈竞争的科学技巧领域之一。
电子计算机早期功效主要是计算,后来已远远超越单纯计算的功效,还可模拟、思维、进行自适应反馈处理等等,把它叫做“电脑”更为合实际。由于电子计算机功效的飞跃性发展,应用于生产和生活的各个方面,直接和显著地提高了生产、工作和生活的效率、节奏和水平,在软科学研究和应用中它也起着关键作用,因此它已被公认是现代技巧的神经中枢,是未来信息社会的心脏和录魂。计算机学科分为四个领域,分别是计算机科学,计算机工程,软件工程和信息系统。
正文:
软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。包括项目管理,分析,设计,程序的编写,测试和质量控制。它涉及到程序设计语言、数据库、软件开发工具、系统开发平台、标准、设计模式等方面。
学了《软件工程》这门课程和一些有关资料后,感觉一些东西都曾经接触过,但在实际工作中有些理论要完全遵循可能还有些障碍,软件工程只是提供了理论上的一些结论,但对项目的具体可操作性的规范的制定方面却做的很少,《软件工程》发展了几十年,光是开发模型就达到了10多种,对不同的项目采用合适的开发模式,有些项目在不同的开发阶段可能还要转换开发模式,把它们灵活的应用到实际中还是很困难的。
软件技术是信息技术产业的核心之一,软件技术的发展是与信息技术产业的发展互相促进的。当今世界,信息技术正处于新一轮重大技术突破的前夜。预计今后 20~30 年是信息科学技术的变革突破期,可能导致 21 世纪下半叶一场新的信息技术革命。近年来,从 IT 界到一些国家首脑,都高度关注以物联网为标志的新一轮信息技术的发展态势,认为这是继 20 世纪 80 年代 PC 机、90 年代互联网、移动通信网之后,将引发 IT 业突破性发展的第三次 IT 产业化浪潮。每一次重大的技术变革都会引起企业间、产业间甚至国家间竞争格局的重大变化,也促进了软件技术与软件产业的重大变革与发展。
近年来,信息技术、软件技术、软件系统与软件产业的发展备受关注,已有不少论述、分析与判断。近10 年内网络技术经历宽带化、移动化和三网融合将走向基于 Ipv6 的下一代互联网,2010 年 1 月,国家 863 计划信息技术领域办公室和国家 863 计划信息技术领域专家组,在上海举办“信息-物理融合系统 CPS发展战略论坛”,提出“信息-物理融合系统 CPS 是一个综合计算、网络和物理环境的多维复杂系统,是信息和物理世界的深度的融合交互,可实现大型工程系统的实时感知、动态控制和信息服务,使系统更加可靠、高效与实时协同,使得人类物理现实和虚拟逻辑逐步融合,具有重要而广泛的应用前景。业界关于软件工程的代表性观点创立与使用健全的工程原则,以便经济地获得可靠且高效率的软件。应用系统化,遵从原则,可被计量的方法来发展、操作及维护软件;也就是把工程应用到软件上。与开发、管理及更新软件产品有关的理论、方法及工具。一种知识或学科,目标是生产品质良好、准时交货、符合预算,满足用户所需的软件。实际应用科学知识在设计、建构电脑程序,与相伴而来所产生的文件,以及后续的操作和维护上。
6使用与系统化生产和维护软件产品有关之技术与管理的知识,使软件开发与修改可在有限的时间与费用下进行。
7建造由工程师团队所开发之大型软件系统有关的知识学科。对软件分析、设计、实施及维护的一种系统化方法。系统化地应用工具和技术于开发以计算机为主的应用。
10软件工程是关于设计和开发优质软件。
《软件工程》是一门综合性和实践性很强的核心课程,它属于是一门交叉学科,包含有:软件开发技术(软件开发方法学、软件开发过程、软件工具和软件工程环境)、软件工程管理(软件管理学、软件经济学、软件心理学)。主要内容包括软件工程概述、可行性分析、需求分析、概要设计、详细设计、面向对象分析与设计、编码、软件测试、项目计划与管理。
本课程是面向准备从事软件开发的毕业生而开设的一门专业课程。针对计算机教学中软件工程这一薄弱环结,结合目前软件开发商对人才的要求,对计算机专业的毕业生进行软件工程强化培训,目的是使毕业生能够了解和掌握软件工程的基本理论和方法,并在实际软件开发中运用这些方法。
我理解,软件工程是按照工程学的管理方式,有组织、有计划的,在一定的质量基础、时间限度和成本范围内,实现功能明确的软件系统。而且,软件工程在企业范围内运行,一定需要企业资源的支持,要与企业的经营、决策、管理体系联系在一起,才能够被踏踏实实的落实下来。
软件工程项目是一个需要一步一步的计算,分析思考而来的,需要不断思考,研究不断进步,软件业作为一个服务业,要想得到发展,首先必须形成一个对软件服务有迫切需要的市场。其次,这个市场中的消费者必须具备足够的购买力。软件的消费群体简单一点,可以分为个体消费和企业消费。中国的企业群体,数量庞大,但是质量不高。上规模的企业极少。国内目前能够形成比较大规模的独立市场的,肯定是小规模的软件系统。
随着信息化时代的到来其地位越来越受到人们的重视,软件工程从一个学科,或是某一个研究方向来说,人员仅仅是过程,方法的执行者,所以人员素质往往被忽略,软件工程是一门实践性很强的学科,所以在实际的软件研究过程中,人员的素质占有很重要的地位。要有出色的软件问世,研发人员的素质至关重要!
作为软件工程的学习者应该不断创新,不断尝试、实践,不断研究和学习,中国的软件工程技术依旧滞后于国外一些软件工程技术,作为新一代的学习者应该担当起振兴起中国软件事业,使中国科技得到高速发展!
现在已经是信息化时代,信息化潮流不断涌现,想要掌握主动权就是掌握信息化的发展方向,这就需要我们不断学习,时间,研究,学习国外的先进技术,转变自己的技术,然后融合,创新。
软件技术不是一成不变的,是随着社会的进步的不断进步,不需要不断的创新,不断的改善的,需要我们不断的学习,不断的研究,不断进步。
第四篇:软件工程总结
1.Software is a product and can be manufactured using the same technologies used for other engineering artifacts Answer: b 2.WebApps are a mixture of print publishing and software development, making their development outside the realm of software engineering practice.Answer: b 3.Software engineering umbrella activities are only applied during the initial phases of software development projects.Answer: b 4.Planning ahead for software reuse reduces the cost and increases the value of the systems into which they are incorporated.Answer: a 5.The essence of software engineering practice might be described as understand the problem, plan a solution, carry out the plan, and examine the result for accuracy.Answer: a 6.In agile process models the only deliverable work product is the working program.Answer: b 7.A most software development projects are initiated to try to meet some business need.Answer: a 8.In general software only succeeds if its behavior is consistent with the objectives of its designers.Answer: b 9.Software processes can be constructed out of pre-existing software patterns to best meet the needs of a software project.Answer: a 10.Process technology tools allow software organizations to compress schedules by skipping unimportant activities.Answer: b 11.It is generally accepted that one cannot have weak software processes and create high quality end products.Answer: a 1.Requirements engineering is a generic process that does not vary from one software project to another.Answer: a 2.A stakeholder is anyone who will purchase the completed software system under development.Answer: b 3.It is relatively common for different customers to propose conflicting requirements, each arguing that his or her version is the right one.Answer: a 4.Developers and customers create use-cases to help the software team understand how different classes of end-users will use functions.Answer: a 5.Use-case actors are always people, never system devices.Answer: b 6.Analysis patterns facilitate the transformation of the analysis model into a design model by suggesting reliable solutions to common problems.Answer: a 7.In win-win negotiation, the customer’s needs are met even though the developer’s need may not be.Answer: b 8.In requirements validation the requirements model is reviewed to ensure its technical feasibility.Answer: b
1.Object-oriented domain analysis is concerned with the identification and specification of reusable capabilities within an application domain.Answer: a 2.In structured analysis models focus on the structure of the classes defined for a system along with their interactions.Answer: b 3.Creation and refinement of use cases if an important part of scenario-based modeling.Answer: a 4.It is important to consider alternative actor interactions when creating a preliminary use case.Answer: b 5.Brainstorming is one technique that may be used to derive a complete set of use case exceptions.Answer: a 6.In many cases there is no need to create a graphical representation of a usage scenario.Answer: a 7.One or more attributes of a data object must be defined as a key to allow the location of an instance of the data object.Answer: a 8.Attributes are chosen for an object by examining the problem statement and identifying the entities that appear to be related.Answer: b 9.An analysis package involves the categorization of analysis model elements into useful groupings.Answer: a 10.The data flow diagram must be augmented by min-spec that can serve as a guide the design of the software component that will implement the process.Answer: a 11.The UML sequence diagram show the order in which system events are processed.Answer: b 12.Analysis patterns are discovered, they are not explicitly created.Answer: a 13.It is not possible to justify the time required for WebApp requirements analysis.Answer: b 14.UML activity diagrams can be used to represent the user observable functionality delivered by the WebApp as well as the operations contained in each analysis class.Answer: a 15.Configuration analysis focuses on the architecture of the user’s web browsing environment.Answer: b 16.Content objects are extracted from use cases by examining the scenario description for direct or indirect content references.Answer: a 1.With thorough testing it is possible to remove all defects from a program prior to delivery to the customer.Answer: b 2.Program flow graphs are identical to program flowcharts.Answer: b 3.The cyclomatic complexity of a program can be computed directly from a PDL representation of an algorithm without drawing a program flow graph.Answer: a 4.Graph-based testing methods can only be used for object-oriented systems Answer: b 5.Equivalence testing divides the input domain into classes of data from which test cases can be derived to reduce the total number of test cases that must be developed.Answer: a 6.Boundary value analysis can only be used to do white-box testing.Answer: b 7.Orthogonal array testing enables the test designer to maximize the coverage of the test cases devised for relatively small input domains.Answer: a 8.Client/server architectures cannot be properly tested because network load is highly variable.Answer: b 1.The best representation of system architecture is an operational software prototype.Answer: b 2.The architectural representations can be an enabler for communication among project stakeholders.Answer: a 3.An architectural description is often documented using an architecture template.Answer: b 4.An architectural genre will often dictate the architectural approach that may used for the structure to be built.Answer: a 5.Before an architectural pattern can be chosen for use in a specific system it must have a code implementation to facilitate its reuse.Answer: b 6.Once selected, archetypes always need to be refined further as architectural design proceeds.Answer: a 7.Quantitative methods for assessing the quality of proposed architectural designs are readily available.Answer: b
Chapter 10 Self-Check Quiz
1.In the most general sense a component is a modular building block for computer software.a.True b.False
Answer: a(Section 10.1)
2.In the context of object-oriented software engineering a component contains
a.attributes and operations b.instances of each class c.roles for each actor(device or user)d.set of collaborating classes
Answer: d(Section 10.1.1)
3.In traditional software engineering modules must serve in which of the following roles?
a.Control component b.Infrastructure component c.Problem domain component d.All of the above
Answer: d(Section 10.1.2)
4.Software engineers always need to cerate components from scratch in order to meet customer expectations fully.a.True b.False
Answer: b(Section 10.1.3)
5.Which of the following is not one of the four principles used to guide component-level design?
a.Dependency Inversion Principle b.Interface Segregation Principle c.Open-Closed Principle d.Parsimonious Complexity Principle
Answer: d(Section 10.2.1)
6.The use of stereotypes can help identify the nature of components at the detailed design level.a.True b.False
Answer: a(Section 10.2.2)
7.Classes and components that exhibit functional, layer, or communicational cohesion are relatively easy to implement, test, and maintain.a.True b.False
Answer: a(Section 10.2.3)
8.Software coupling is a sign of poor architectural design and can always be avoided in every system.a.True b.False
Answer: b(Section 10.2.4)
9.WebApp content design at the component level focuses on content objects and the manner in which they interact.a.True b.False
Answer: b(Section 10.4.1)
10.A WebApp functional architecture describes the key functional components and how they interact with each other.a.True b.False
Answer: a(Section 10.4.2)
11.Which of these is a graphical notation for depicting procedural detail?
a.box diagram b.decision table c.ER diagram d.flowchart
Answer: d(Section 10.5.1)
12.A decision table should be used
a.to document all conditional statements b.to guide the development of the project management plan c.only when building an expert system d.when a complex set of conditions and actions appears in a component
Answer: d(Section 10.5.2)
13.A program design language(PDL)is often a
a.combination of programming constructs and narrative text b.legitimate programming language in its own right c.machine readable software development language d.useful way to represent software architecture
Answer: a(Section 10.5.3)
14.In component-based software engineering, the development team examines the requirements to see which are amenable to composition, rather than construction, before beginning detailed design tasks.a.True b.False
Answer: a(Section 10.6)
15.Which of the following is not one of the major activities of domain engineering?
a.analysis b.construction c.dissemination d.validation
Answer: d(Section 10.6.1)
16.Which of the following factors would not be considered during component qualification?
a.application programming interface(API)b.development and integration tools required c.exception handling d.testing equipment required
Answer: d(Section 10.6.2)
17.Which is the following is a technique used for component wrapping?
a.black-box wrapping b.clear-box wrapping c.gray-box wrapping d.white-box wrapping
Answer: b(Section 10.6.2)
18.Which of the following is not one of the issues that form a basis for design for reuse?
a.object-oriented programming b.program templates c.standard data d.standard interface protocols
Answer: a(Section 10.6.3)
19.In a reuse environment, library queries are often characterized using the ________ element of the 3C Model.a.concept b.content c.context d.all of the above
Answer: c(Section 10.6.4)
1.The importance of software design can be summarized in a single word a.b.c.d.Answer: d(Section 8.1)
2.Which of the following is not a characteristic common to all design methods?
a.configuration management b.functional component representation c.quality assessment guidelines d.refinement heuristics
Answer: a(Section 8.2.2)
3.Which of the following can be used to represent the architectural design of a piece of software?
a.Dynamic models b.Functional models c.Structural models d.All of the above
Answer: d(Section 8.3.2)
4.Design patterns are not applicable to the design of object-oriented software?
a.True b.False
Answer: b(Section 8.3.3)
5.Since modularity is an important design goal it is not possible to have too many modules in a proposed design.a.True b.False
Answer: b(Section 8.3.5)
6.Information hiding makes program maintenance easier by hiding data and procedure from unaffected parts of the program.accuracy complexity efficiency quality
a.True b.False
Answer: a(Section 8.3.6)
7.Cohesion is a qualitative indication of the degree to which a module
a.can be written more compactly.b.focuses on just one thing.c.is able to complete its function in a timely manner.d.is connected to other modules and the outside world.Answer: b(Section 8.3.7)
8.Coupling is a qualitative indication of the degree to which a module
a.can be written more compactly.b.focuses on just one thing.c.is able to complete its function in a timely manner.d.is connected to other modules and the outside world.Answer: d(Section 8.3.7)
9.When using structured design methodologies the process of stepwise refinement is unnecessary.a.True b.False
Answer: b(Section 8.3.8)
10.Software designs are refactored to allow the creation of software that is easier to integrate, easier to test, and easier to maintain.a.True b.False
Answer: a(Section 8.3.10)
11.Which of the following is not one of the five design class types
a.Business domain classes b.Entity classes c.Process classes d.User interface classes
Answer: b(Section 8.3.13)
12.Which design model elements are used to depict a model of information represented from the user’s view?
a.Architectural design elements b.Component-level design elements c.Data design elements d.Interface design elements
Answer: c(Section 8.4.1)
13.Which design is equivalent to the floor plan of a house?
a.Architectural design b.Component-level design c.Data design d.Interface design
Answer: a(Section 8.4.2)
14.Which design model is equivalent to the detailed drawings of the access points and external utilities for a house?
a.Architectural design b.Component-level design c.Data design d.Interface design
Answer: d(Section 8.4.3)
15.Which design model is equivalent to a set of detailed drawings for each room in a house?
a.Architectural design b.Component-level design c.Data design d.Interface design
Answer: b(Section 8.4.4)
16.The deployment design elements specify the build order for the software components.a.True b.False
Answer: b(Section 8.4.5)
第五篇:软件工程总结
第一章软件与软件工程的概念
软件的概念:软件是计算机系统中与硬件相互依存的另一部分,软件包括程序,数据,及其相关文档的完整集合。程序是按事先设计的功能和性能要求执行的指令序列。数据是使程序能够正确地处理信息的数据结构。文档是与程序开发,维护和使用有关的图文资料。
程序的最小单位是函数及子程序,程序与数据是分离的,在面向对象程序设计时代,程序的最小单位是类,在类中封装了相关的数据及指令代码。
软件的特性,判断正误:1.软件是无形的、不可见的逻辑实体,因此,软件是无法描述的。(错)
2、软件的开发特性是指软件需要大量手工劳动,难以自动化生产。(对)
3、有缺陷的软件就是废品。(错)
4、软件的生产指的是软件的复制。(错)
5、由于软件的开发充满人的个性特点,因此管理并不决定软件开发的成败(错)。
6、软件的开发环境往往就是软件的运行环境,或者与其兼容。(对)
7、合格的软件产品不需要维护,软件需要维护说明其质量不合格。(错)
8、软件可以不断改进,因此软件不需要废弃。(错)
软件的分类:1,系统软件:能与计算机硬件紧密配合在一起,使计算机系统各个部件,相关的软件和数据协调,高效的工作的软件。2,应用软件,是在系统软件的支持下,在特定区域内开发,为特定目的服务的一类软件。3,支撑软件,也叫工具软件,是协助用户开发软件的工具性软件。4,可复用软件,最初实现的典型的可复用软件是各种标准函数库,通常是由计算机厂商提供的系统软件的一部分。
IEEE给出的定义:软件工程是开发,运行,维护和修复软件的系统方法。软件的定义:计算机程序,方法,规则,相关的文档资料一集在计算机上运行时所必需的数据。
软件危机的典型表现
1、成本太高,预算不准
2、超过预计时间
3、软件质量标准不明确
4、生产率低
5、缺乏文档资料,难以维护。原因:1,缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作的计划很难制定。2.软件人员与用户的交流存在障碍,除了知识背景的差异,缺少合适的交流方法及需求描述工具。3,软件开发过程不规范,缺少方法和规范的指导。4,随着软件规模的增大,其复杂性往往会呈指数级升高。5,缺少有效的软件评测手段,提交用户的软件质量差。
软件危机发生的主要原因有:
1、遇到了无法解决的高难度技术问题(不是)
2、无法招聘到足够的编程高手(不是)
3、软件人员与用户互相不理解(是)
4、计划和管理不科学、落实不力(是)
5、软件质量标准不明确(是)
软件的质量特性包括(选择)问题1:
1、功能性
2、可靠性
3、使用性
4、经济性(不包括)
软件的质量特性包括(选择)问题2:
1、效率
2、可维护性
3、可移植性
4、经济性(不包括)
软件工程的目标是运用先进的软件开发技术和管理方法来提高软件的质量和生产率,也就是要以较短的周期,较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。软件生存期:软件的孕育,诞生,成长,成熟,衰亡的生存过程。软件生存期由软件定义,软件开发和运行维护三个时期组成,每个时期又可划分为若干个阶段。
2、软件定义时期的任务主要任务是解决“做什么”的问题,确定工程的总目标和可行性;实现工程目标的策略及系统功能;估计需要的资源和成本;制订工程进度表。通常又分为3个阶段:问题定义,可行性研究,需求分析。
3、软件开发时期的任务和包含阶段主要任务是解决“如何做”的问题,设计和实现定义的软件。由概要设计、详细设计、编码和测试4个阶段组成。
4、软件运行维护时期的主要任务是使软件持久地满足用户的需要,通常有4类维护活动:改正性维护;适应性维护;完善性维护;预防性维护。开发过程中的典型文档:软件需求规格说明书。项目计划。软件测试计划。软件设计说明书。用户手册。软件工程各个阶段的基本任务
1、问题定义与可行性研究:解决什么问题?能否解决问题?是否值得做?”
2、需求分析:做什么
3、软件设计:如何实现
4、程序编码和单元测试:实现设计
5、集成和系统测试:组装连接测试、功能验证测试
6、软件运行和维护:修改 第二章软件工程方法与工具
软件工具:是指能支持软件生存周期中某一阶段(如系统定义,需求分析,设计,编码,测试,维护等)的需要而使用的软件工具。
需求分析工具
1、结构化图形工具箱。通过数据流程图DFD进行功能分析。包括DFD图形工具,实体-关系图(E-R)图形工具,Jackson图形工具,Warnier图形工具,Visio综合工具,2、面向对象工具,Rational Rose,PowerDesigner,Visio 设计工具(1)概要设计工具:设计目标软件的体系结构、控制结构和数据结构。软件的体系结构通常用模块结构图来描述。模块的数据结构通常用实体-关系图来描述。Visio。Rational Rose 详细设计工具。设计模块的算法和内部实现细节。详细设计描述方法有输入-处理-输出(IPO)图。问题分析图(PAD)。盒图(NS图)。流程图(FC)。程序设计语言(PDL)。结构化语言。判定表。判定树
第三章软件需求获取与结构化分析方法 需求获取的主要任务是与用户沟通,了解系统或产品的目标是什么,客户或用户想要实现什么,系统和产品如何满足业务的要求,最终系统或产品如何用于日常工作。获取并理解用户的需求是软件工程师所面对的最困难的任务之一。
需求分析的困难体现:系统的目标或范围问题;需求不准确性问题;需求的易变问题
需求获取的任务:发现和分析问题,并分析问题的原因,结果关系。与用户进行各种方式的交流,并使用调查研究方法收集信息。按照三个成分即数据,过程和接口观察问题的不同侧面。将获取的需求文档化,形式有用例,决策表,决策树等。需求获取的原则:深入浅出,以流程为主线。
获取具体的需求的途径1,与用户交流。2,现有产品或竞争产品的描述文档。3,系统需求规格说明。4,当前系统的问题报告和改进要求。5,市场调查和用户问卷调查。6,观察用户如何工作。
关于需求获取问题的认识辨析:
1、没有与用户交流就不可能获取系统需求。(不能获取准确、全面的系统需求)
2、没有经过与用户交流而获取的需求都是不真实的需求。(一些需求从用户以外的途径获取)
3、系统开发必须独立完成,参考类似系统及技术文档属于抄袭行为,应予避免。(系统开发包含研究行为,应了解对手产品,取长补短)
4、系统开发包含改进当前系统的缺陷和不足。(对)
5、需求调查时,用户所说的需求未必是真实、准确的需求,因此需求分析需要依赖用户,但是不能过分迷信用户。(对,需求描述是困难的)
6、观察用户如何工作也是一种需求调查行为。(对)
软件需求分析阶段的任务:需求获取,需求分析,需求定义,需求验证。完整性,正确性,合理性,可行性,充分性。
结构化分析方法:是一种建模技术。核心是数据字典。
功能模型用数据流图(DFD)来描述使用实体—关系图(ER图)建立数据模型。使用状态转换图(简称状态图)建立系统行为模型。数据字典。加工规格说明。需求建模的依据是需求描述
数据建模,ER图,需要认真看。
第四章结构化设计方法
结构化设计方法是在模块化,自顶向下逐步细化及结构化程序设计技术基础上发展起来的,结构化设计方法可分为两类:一类是根据系统的数据流进行设计,称为面向数据流的设计,或称过程驱动设计,另一类是根据系统的数据结构进行设计,称为面向数据结构的设计,或称数据驱动的设计。
软件的体系结构设计,模块化设计都是分而治之策略的具体表现。模块化是将整体软件划分为独立命名且可独立访问的模块,不同的模块通常具有不用的功能或指责,每个模块可独立开发,测试,最后组装成完整的软件。模块是构成软件的基本构件。模块并不是越小越好,当模块数目增加时,每个模块的规模将减小,开发单个模块的成本确实减少了,但是随着模块数目增加,模块之间关系的复杂程度也会增加,设计模块间接口所需要的工作量也将增加。
模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而与软件系统中其他模块的接口是简单的,若一个模块只具有单一的功能且与其他模块没有太多的联系,那么称此模块有独立性。
自顶向下,逐步细化:抽象是指忽视一个主题中与当前目标无关的方面,以便更充分地注意与当前目标有关的方面,当我们进行软件设计时,设计开始时应尽量提高软件的抽象层次,按抽象级别从高到低进行软件设计,将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确定整个系统的体系结构,这就是自顶向下逐步细化过程。
复用是指同一事物不做修改或稍加修改就可以多次重复使用,将服用的思想用于软件开发,称为软件复用。1是尽量使用已有的构件。2是如果确实需要创建新的构件,则在设计时应该考虑将来的可重复使用性。软件设计的阶段与任务:从工程管理的角度,可以将软件设计分为概要设计阶段和详细设计阶段。从技术的角度,传统的结构化方法将软件设计划分为体系结构设计、数据设计、接口设计和过程设计4部分;概要设计包括体系结构设计、数据设计、接口设计。详细设计即过程设计,对结构表示进行细化,得到软件详细的数据结构和算法。
软件设计各项设计工作的依据:体系结构设计,定义软件模块及其之间的关系,依赖于数据流图。数据设计,依赖于ER图。接口设计,依赖于顶层数据流图。过程设计:依赖于加工规格说明、状态图
基于数据流方法的设计过程:1.复查并精化数据流图。2.确定数据流图中数据流的类型,典型的数据流类型有变换型数据流和事务型数据流。3.导出初始的软件结构图。4.逐级分解。5.精化软件结构。6.导出接口描述和全局数据结构。
软件模块结构的改进方法:1,模块功能的完善化。2,消除重复功能,改善软件结构。3,模块的作用范围应在控制范围之内。4,尽可能减少高扇出结构,随着深度增大扇入。5,避免或减少使用病态连接。6,模块的大小要适中。接口设计的依据是数据流图中的自动化系统边界。
自顶向下,逐步细化的设计过程主要包括两个方面:一是将复杂问题的解法分析和细化成由若干个模块组成的层次结构,二是将每个模块的功能逐步分解细化为一系列的处理。第五章编码
编码容易出现的风格不足
1、变量或函数名字缺乏具体含义
2、变量或函数名字与其用途不符
3、变量或函数未加上必要的注释
4、函数未说明其功能、参数的意义
5、引用的符号未加以解释和说明
6、对循环等重要的程序语句未注释
7、对用到的重要库函数没有解释说明
8、对结构体等复杂数据结构的组成成分没有解释说明
9、缺乏必要的提示语句 第六章软件测试方法
软件测试是在软件投入生产性运行之前,对软件需求分析,设计规格说明和编码的最终复审,是软件质量控制的关键步骤。软件测试是为了发现错误而执行程序的过程。