




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程复习资料 仅供参考 信本0802第一章 概述1.什么是软件?(软件=程序+数据+文档)软件是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。2.软件开发面临着过分依赖人工、软件难以重用、开发大量重复和生产率低下等问题,而导致这些问题的关键在于软件本身的特性: (1)复杂性; (2)不可见性;(3)可变性(成功的软件都会发生演化,没有任何变化的软件一定是没有用的);(4)可移植性。3.什么是软件危机? 所谓软件危机,是指在计算机软件的开发和维护过程中遇到的一系列严重问题。 软件危机表现在哪些方面?软件开发的成本和进程难以准确估计,延迟交付甚至取消项目的现象屡见不鲜;软件存在着错误多,性能低,不可靠,不安全等质量问题软件成本在计算机系统的整个成本中所占的比例越来越大,软件维护极其困难,而且很难适应不断变化的用户需求和使用环境4.什么是软件工程? 软件工程是:(1)将系统性的,规范化的,可定量的方法应用于软件的开发,运行和维护,即将工程化应用到软件上;(2)对(1)中所述的方法的研究。5.软件工程的三要素:过程,方法,工具6.软件工程将计算机科学、数学、工程学和管理学等基本原理应用于软件开发的工程实践中,(软件工程学的基础)并借鉴传统工程的原则和方法,以系统的、可控的、有效的方式产生高质量的软件。7.软件工程人员的职业道德建设:(1)遵纪守法(2)服务客户,造福社会(3)诚实信用(核心)习题1.3软件工程的方法为软件开发提供“如何做”的技术。现在最广泛的两种方法:结构化方法,面向对象方法。软件工程的过程 定义了技术方法的采用、工程产品的产生、里程碑的建立、质量的保证和变更的管理。其作用是实现在规定时间和预算内开发高质量软件的目标。软件工程的工具 为软件工程方法提供了自动的或半自动的软件支撑环境,辅助软件开发任务的完成。其作用是提高开发效率和软件质量,降低开发成本。第二章 软件过程软件项目失败的主要原因几乎与技术和工具没有任何关系,更多的是由于缺少过程规范。1软件过程的概念 软件过程是软件工程人员为了获得软件产品而在软件工具的支持下实施的一系列软件工程活动。软件过程的基本元素由一系列软件工程活动和活动之间的关系组成。2软件过程的基本活动有哪些? 1.问题提出;2.软件需求规格说明(specification);3.软件设计;4.软件实现;5.软件确认;(文档形式)(程序代码形式)6.软件演化(evoluation)。3软件过程模型包含哪些? 瀑布模型;(适用于软件需求被完全确定的情况。自上而下,相互衔接的固定次序,按线形方式进行,强调稳当的作用,并要求每个阶段都要仔细验证。) 快速原形模型;(适用于可户需求难以清楚定义的情况。) 增量模型;(是一种非整体开发模型,它将整个产品分解成若干个构件进行逐步交付。) 螺旋模型;(适合于大型复杂的软件系统。) 形式化方法模型;(适合于那些对安全性,可靠性和保密性要求极高的软件系统开发,它采用形式化的数学方法将系统描述转换成可执行的程序。) 基于组件的开发模型。(这种方法依赖于可复用的软件组件及其相应的集成框架,提高了开发效率和产品质量。)软件项目管理什么叫软件项目管理?软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。软件项目的特征:软件产品的不可见性;项目的高度不确定性;软件过程的多变化性;软件人员的高流动性。软件项目管理的“4P“包括:人员(people),产品(product),过程(process),项目(project)软件项目管理的核心内容在于项目的规划和跟踪控制。项目沟通是软件工程中最耗时的活动。软件项目的实践表明 项目团队成员的数量应该保持在37人之间。4软件项目规划是项目管理的核心工作,其关键是项目管理者对资源、成本和进度作出合理的估算,进一步指定出切实可行的软件项目计划。 一般情况下,软件项目规划过程包括以下步骤:确定项目的目的和范围;分解和定义工作活动和任务;估算和所需资源;指定软件项目计划。5. 软件规模估算常用方法有:代码行技术和功能点技术。代码行技术是一种简单只管的饿软件规模估算方法,它从过去开发类似产品的经验和历史数据出发,估算出所开发软件的代码行书。(P50计算)功能点技术适合于在团件开发初期进行估算,并以功能点为单位度量软件规模。6.软件风险管理包含哪些内容?:风险识别,风险分析,风险规划,风险监控。7.软件配置管理的基本概念:软件配置管理是一种标识,组织和控制修改的技术,它作用于整个软件生命周期,其目的是使错误达到最小并最有效地提高生产率。软件配置项是为了配置管理而作为单独处理的一个工作产品或软件。基线是已经通过了正式复审的规划说明或中间产品,它可以作为进一补开发的基础,并且只有通过正式的变化控制过程才能改变。版本是确定的时间点上某个配置项的状态。基线是指软件配置项通过正式复审而进入正式受控的一种状态。基线标志着软件开发过程的各个里程碑,有利于阶段成果的检查和确认。第四章 需求工程1.什么是软件工程?软件需求包含哪些内容?软件需求一定要文档化 1)拥护解决问题或达到目标所需的条件和能力。2)系统或系统部件要满足合同、标准、规范或其他正式规定文档所需要具有的条件和能力。3)一种反映1)或2)所描述的条件或能力的文档说明。软件需要包含业务需要、用户需要、功能需要和非功能需要、系统需要。2.什么是需求工程?需求工程的过程包括哪些内容?需求工程是应用已证实有效的原理和方法,并通过合适的工具和符号,系统地描述出待开发的系统及其行为特征和相关约束。需求工程的过程包括 需求获取,需求分析,需求规划说明,需求验证和需求管理。获取需求的一个必不可少的结果是 对项目中描述的客户需求的普遍理解。需求验证是一个针对那些已经编写成文档的需求进行验证,而对于那些存在于用户或开发人员思维中的没有表露的、含蓄的需求则不予验证。需求规格说明的质量特性包括正确性、无二义性、完整性、可验证性、一致性、可修改性和可跟踪性。P823.需求获取技术有哪些?面谈,需求专题讨论会,观察用户工作流程,原形化方法,基于用例的方法。在用例模型中,只是关心系统所应该实现的功能,而不关心内部的具体实现细节。4.以“小型图书资料管理系统”为例,使用启发式方式获取用户需求,并建立系统用例模型。1)确定系统参考者2)确定场景3)确定用例之间的关系4)编写用例描述文档习题4.2 (1)系统界面友好。 违背可验证性(2)系统运行时应该占用尽量少的内存空间。 违背无二义性(3)即使在系统崩溃的情况下,用户数据也不能受到破坏。 违背可验证性(4)ATM系统允许用户查询自己银行账户的现存余额。 ()(5)ATM系统应该快速响应用户的请求。 违背可验证性(6)ATM系统需要检验用户存取的合法性。问题:“如何验证合法性”是存在歧义的。 改正:ATM系统将通过用户名和口令验证其存取的合法性。(7)所有命令的响应时间小于一秒;BUILD命令的响应时间小于五秒。 违背一致性(8)软件应该用JAVA语言实现。问题:该描述不是功能需求或非功能需求,应该是对设计实现的一个约束条件。违背完整性习题4.3需求获取的主要工作内容包括:聆听用户的需求;分析和整理所获取的信息;形成文档化的描述。需求分析的主要工作内容包括:定义系统的边界;建立软件原型;分析需求可行性;确定需求优先级;建立需求分析模型;创建数据字典。需求规格说明精确地阐述一个软件系统必须提供的功能和性能以及它所要考虑的限制条件。需求验证是通过评审的方式发现需求规格说明书中存在的错误或缺陷,开发人员及时进行更改和补充,并对修改后的需求规格说明文档进行再评审。需求管理的任务是分析变更影响并控制变更过程,主要包括变更控制、版本控制和需求跟踪等活动。习题4.8 P97 画用例图 第六章 面向对象基础什么是面向对象(Object Oriented)?面向对象=对象+类+继承+通信如果一个软件系统采用这些概念来建立模型并予以实现,那么它就是面向对象的。面向对象的基本概念: 对象(Object)是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单由一组属性和对这组属性进行操作的一组服务组成。类(Class)是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。统一建摸语言UML(Unified Modeling Language)UML是一种直观化、明确化、构建和文档化软件系统产物的通用可视化建模语言。4.UML由哪些部分组成?(1)视图(Views)UML使用5个互连的视图来描述软件系统的体系结构,即用例视图(Use-case View),设计视图(Design View),进程视图(Process View),实现视图(Implementation View),分布视图(Deployment View)。(2)图(Diagrams)UML中包含9种图,对整个系统而言,其功能由用例图描述,静态结构由类图、对象图描述,动态行为由状态图、顺序图、协作图和活动图描述,而物理架构则是由组件图和分布图描述。(3)模型元素(Model Elements)(4)语义规则(5)公共机制(General Mechanisms)(6)扩展机制5、常用的UML图(用例图、类图、状态图、顺序图) 用例图(Use-case Diagram)是从用户的观点描述系统的功能,它由一组用例、参与者以及它们之间的关系组成。 类图(Class Diagram)表示系统中的类、类与类之间的关系以及类的属性和操作 顺序图表示完成某项行为的对象和这些对象之间传递消息的时间顺序。 状态图用来描述对象所经过的对外部事件做出响应的状态序列。习题6.1(1)属性和服务是对象的两个基本要素 属性是用描述对象静态特征的一个数据项。 服务是用来描述对象动态特征的一个操作序列。(2)关联是一种结构关系,说明一个事物的对象与另一个事物的对象间的联系。在用例图中,参与者之间存在子类与父类的泛化, 用例之间存在一般与特殊的泛化在类图中,使用一条连接在两个类之间的实线表示这两个类之间的关联关系。(3)泛化是一种一般事物(父类)和特殊事物(子类)之间的关系。 在用例图中,参与者之间存在子类与父类的泛化,用例之间存在一般与特殊的泛化。在类图中,若类与类之间存在一般与特殊的关系,则建模为泛化关系,用一个带空心三角形的连线表示。(4)聚合是特殊的关联关系,表示“整体部分”关系。(部分) (整体)在UML语言中,聚合(聚集)用一条带有菱形的直线来表示,菱形在整体端。(类图中)(5)依赖关系描述一个类的修改有可能导致另一个修改的一种关系。(依赖对象)在UML语言中,依赖关系使用带箭头的虚线表示,箭头指向依赖对象。(类图中)习题6.5 画类图面向对象分析1.在前面第四章提到,在软件需求分析阶段的主要工作内容包括建立需求分析模型。面向对象的分析模型由三个独立的模型组成:a 功能模型:由用例和场景表示;b 分析对象模型:由类图和对象图表示;c 动态模型:由状态图和顺序图表示 2.分析类的概念,分析类包括哪三种类型?:分析类是概念层次上的内容,用于描述系统中效高层次的对象。分析类划分为实体、边界类和控制类 实体类entity表示系统存储和管理的永久信息; 边界类boundary表示参与者与系统之间的交互; 控制类control表示系统在运行过程中的业务控制逻辑。3.面向对象分析的活动:理解用例模型识别分析类(建立顺序图,发现可能遗漏的对象类)定义交互行为(定义分析类的重要属性和行为)建立分析类图评审分析模型4.为什么要定义交互行为?顺序图可以将用例和分析对象联系在一起,实现将用例的行为分配到所识别的分类中,并且帮助开发人员发现和补充前面遗漏的分析类。5.建立分析类图 画类图 egP151 第八章 面向对象分析1.面向对象设计的主要活动:系统设计,详细设计2.面向对象设计的原则:1)模块化2)耦合度和内聚性(高内聚 低耦合) 3)复用性(把大部分的时间用在小比例的创新工作上,把小部分的时间用在大比例的成熟工作中。)3.软件体系结构包括哪些结构?它们分别有何优缺点? 1)仓库体系结构(适用于由一个子系统产生而由其他子系统使用的情形)优点:仓库体系结构无需在子系统间进行数据转换,因而是一种共享大量数据的高效法。缺点:A子系统为了与共享模型保持一致势必在性能上会受到影响; B由于每一个子系统和共享数据的耦合度高,因此共享数据结构的修改将在很大程度上影响外部子系统。 2)分层体系结构 优点:良好的层次结构可以易于系统的扩展与维护,不同的层次之间通过接口进行通信。 3)MVC体系结构优点:MVC结构适合于交互式系统,特别是同一个模型需要多个视图的情况。缺点:与仓库体系结构一样,MVC结构同样也会产生性能瓶颈问题。4)客户机/服务器体系结构 客户机 数据表示 瘦客户机模型 数据管理服务器应用处理(缺点:由于繁重的处理负荷全部集中在服务器和网络上,有可能造成性能上的问题。) 数据表示客户机胖客户机模型 应用处理服务器 数据管理(优缺点:应用逻辑处理和数据表示都放在客户机上,更好地适应了分布式处理的要求,但却使系统管理更加复杂)客户机 数据表示三层C/S体系结构应用服务器 应用处理数据服务器 数据管理5)管道和过滤器体系结构 过滤器 过滤器 过滤器数据在不同的子系统之间流动,每一个子系统处理输入的一组数据,并将处理结构输出给其他子系统。这、时,子系统称为过滤器,子系统之间的联系称为管道。 该体系结构适用于现实数据流的变换而不需要用户干涉的系统,一般不适用于用户交互比较复杂的系统。4.用户界面设计的原则:用户控制式;一致性;个性化;宽容性;反馈;审美和可用性。第九章 软件实现软件实现是软件产品由概念到实体的一个关键过程,它将详细设计的结果翻译成用某种程序设计语言编写的并且最终可以运行的程序代码。第十章 软件测试1什么是软件测试?软件测试是软件质量保证的一项关键活动,它是通过对需求规格说明、软件设计说明和程序代码等进行复审,以保证在软件产品交付前,尽可能发现软件中潜伏的问题。Glen Myers 对软件测试提出了以下观点:测试是一个程序的执行过程,其目的在于发现错误;一个好的测试用例很可能是发现至今尚未察觉的错误;一个成功的测试用例是发现至今尚未察觉的错误的测试。2软件测试的基本原则有哪些?(1)应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭;(2)程序员应该避免检查自己的程序;(3)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件;(4)测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成;(5)充分注意测试中的集群现象;(6)严格执行测试计划,排除测试的随意性;(7)应当对每一个测试结果做全面检查;(8)妥善保存一切测试过程文档,为维护提供方便。3软件测试步骤(策略):单元测试(为测试模块开发一个驱动模块Driver和若干个桩模块Stub)集成测试(增量式集成方法包括自顶向下集成和自底向上集成)自顶向下集成从主控模块开始,以深度优先和广度优先的策略,逐步把各个模块集成在一起;自底向上集成是从软件结构最底层的模块开始组装测试。确认测试 (主要检查软件能否按合同要求进行工作,即是否满足软件需求说明书中的确认标准)测试是指软件开发公司组织内部人员模拟各类用户对即将面市的软件产品(版本)进行测试,试图发现错误并且修正。经过测试调整的软件产品称为版本。测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用版本,并要求用户报告异常情况,提出批评意见。系统测试 (系统测试应该由若干个不同测试组成,目的是充分运行系统,验证系统各部件是否都能正确工作并完成所赋予的任务。恢复测试,安全测试,强度测试,性能测试4.什么叫软件调试?:软件测试成功的标志是发现了错误。软件调试则是在软件测试成功后,根据错误迹象确定错误的原因和准确位置,并加以改正。5.软件测试的方法:从是否要执行被测软件的角度来看,分静态测试和动态测试;从测试是否针对系统的内部结构和具体实现算法的角度来看,分为百盒测试和黑盒测试6黑盒测试(功能测试或数据驱动测试)黑盒测试完全不考虑程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 知识产权双创题目及答案
- 区块链技术在能源领域的应用研究报告
- 轻工行业技术规范探讨
- 嵌入式系统试卷及答案
- 2025年粤菜模拟考试试题及答案
- 2025年小学自主招生题库及答案
- 2025年上半征兵工作完成落后检讨表态发言
- 2025年山东省新闻系统事业单位人员招聘考试题库及答案解析
- CN222992914U 一种rto多室蓄热氧化燃烧处理设备 (广东和炫环保智能科技有限公司)
- CN120150828B 高压隔离控制系统 (苏州博众仪器科技有限公司)
- APP融资方案模板
- 初中自我介绍课件
- 劳动教育读本中职版专题一崇尚劳动学习资料
- 教学查房流程
- 《员工行为准则培训》课件
- 仓管员晋升组长述职报告
- 《付出总有收获》课件
- 方剂学知到智慧树章节测试课后答案2024年秋安徽中医药大学
- 《慢性乙型肝炎防治指南(2022年版)-》解读
- 《蚕丝微观结构》课件
- 《公路养护安全培训》课件
评论
0/150
提交评论