您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 福州大学14年软件工程复习材料归纳1-8章
第一章软件和软件工程1.定义软件:(1).指令的集合,通过执行这些指令可以满足预期的特征、功能和性能需求(2).数据结构,使得程序可以合理利用信息(3).软件描述信息,它以硬拷贝和虚拟形式存在,用来描述程序操作和使用2.软硬件不同的特性:(1).软件是设计开发的,而不是传统意义上生产制造的(2).软件不会磨损(3).虽然整个工业向着基于构建的构造模式发展,然而大多数软件仍是根据实际的顾客定制的3.软件应用领域:系统软件,应用软件,工程、科学软件,嵌入式软件,产品线软件,Web应用软件,人工智能软件4.遗留软件原因:在几十年前开发,它们不断被修改以满足上也需要和计算平台的变化。这类系统的繁衍使得大型机构十分头疼,因为它们的维护代价高昂且系统演化风险较高。5.遗留软件演化原因:(1).软件需要进行适应性调整,从而可以满足新的计算环境或者技术需求(2).软件必须升级以满足新的商业需求(3).软件必须扩展使之具有与更多新的系统和数据库互操作能力(4).软件构架必须进行改建使之能适应多样化的网络环境6.软件工程定义:(1).将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程的方法应用于软件(2).在(1)中所述方法的研究7.软件过程是一种层次化的技术。根基:质量关注点;框架:过程;解决方法:方法;支持:工具8.软件过程框架活动:工作产品构建时所执行的一系列活动动作任务的集合:1.沟通2.策划3.建模4.构建5.部署(可迭代应用)9.利益相关者:可在项目成功中分享利益的人,包括业务经理、最终用户、软件工程师、支持人员等10.软件工程实践的精髓:理解问题(沟通和分析),计划解决方案(建模和软件设计),实施计划(代码生成),检查结果(测试和质量保证)。11.软件工程整体时间原则:存在价值,保持简洁,保持愿景,关注使用者,面向未来,计划复用,认真思考第二章软件过程1.过程模式:描述了软件工程工作中遇到的过程相关的问题、明确了问题环境并给出了针对该问题的一种或集中可证明的解决方案。即提供了一个模板2.几种惯用过程模型:a)瀑布模型:经典生命周期,提出一种系统的顺序的软件开发方法,从用户需求规格说明开始,通过计划、建模、构建和部署的过程,最终提供一个完整的软件并提供持续的技术支持(以及V模型)缺点:1.实际项目很少遵守瀑布模型提出的顺序2.客户难以描述清楚需求3.发布等待时间长b)增量过程模型:随着时间的推移,增量模型在每个阶段运用线性序列。每个线性序列以一种演化过程流声场增量类似的方法生产出一个软件的可交付增量。优点:人员需求少,规避技术风险等c)演化过程模型:随着时间推移演化,是迭代的过程模型i.原型开发:开始于沟通,与利益相关者会晤,定义软件整体目标,明确抑制需求,迅速策划一个原型开发迭代并进行建模(快速设计)。之后由利益相关者反馈后细化需求不断调整。优点:快速产生可执行的程序缺点:1.利益相关者未察觉到软件粗糙往往陷入失败2.使用这种手段使得不完美的选择成为系统组成部分避免:所有利益相关者必须承认原型是为定义需求服务的,实际的软件系统是以质量为第一目标开发的ii.螺旋模型:结合了原型的迭代性质和瀑布模型的系统性和可控性特点,具有快速开发越来越完善软件版本的潜力。适用:开发大型系统和软件的理想方法。优点:降低风险,能在风险变为问题之前化解风险去欸但:以来大量的风险评估专家来保证成功d)协同开发模型:允许软件团队表述任何模型中的迭代和并发元素适用:所有类型的软件开发,提供精确的项目当前状态图。3.UML统一建模语言,包含了大量用于面向对象系统建模和开发的符号。4.统一过程:a)起始阶段:客户沟通和策划活动b)细化阶段:沟通和通用过程模型的建模活动c)构建阶段:与通用软件过程中的郭建活动相同d)转换阶段:包括通用构建活动的后期阶段以及通用部署活动的第一部分。软件提交给最终用户进行Beta测试。e)生产阶段:与通用过程的部署活动一致第三章敏捷开发1.敏捷:鼓励能使沟通更便利的团队结构和协作态度,强调可运行软件的快速交付而不那么看重中间产品。2.极限编程(XP)五个要素:沟通、简明、反馈、鼓励和尊重3.极限编程过程:策划,设计,编码,测试4.工业极限编程(IXP)六个新实践:准备评估、项目社区、项目承租、测试驱动管理、回顾、持续学习5.对XP的批评意见:需求易变,矛盾的客户需求,需求的非正规表示,正规设计的缺乏6.其他敏捷模型a)自适应软件开发ASD:思考-协作-学习(循环)-发布b)Scrum:需求、分析、设计、演化、交付c)动态系统开发、Crystal、特征驱动开发、精益软件开发、敏捷建模、敏捷统一过程第四章理解需求1.需求工程:致力于不断理解需求的大量任务和技术。从软件过程的角度来看,需求工程是一个软件工程动作,开始于沟通活动并持续到建模活动。必须适应于过程、项目、产品和人员工作的需要2.质量功能部署:将客户要求转换成软件技术需求的质量管理技术。a)正常需求:实现了这些需求将满足客户b)期望需求:隐含在产品或系统中c)令人兴奋的需求:实现这些特点会使用户特别满意3.四种不同的交互模式:编程模式、测试模式、检测模式、故障检查模式(用例图)4.需求模型的元素:a)基于场景的元素:从用户的视角描述系统(活动图)b)基于类的元素:一个参与者与系统交互时所操作的一组对象,被分成具有相似属性和共同行为的事物集合(类图)c)行为元素:基于计算机系统的行为能够对所选择的设计和所采用的实现方法产生深远的影响(状态图)d)面向数据流的元素:信息在基于计算机的系统中流动时会被转换,系统接收多种形式的输入,用函数转换后,生成多种形式的输出第五章需求建模:场景、信息与类分析1.需求模型必须实现三个主要目标:1.描述客户需要什么2.为软件设计奠定基础3.定义在软件完成后可以被确认的一组需求2.域分析:可以被看作是软件过程的一个普适性活动3.需求建模的方法:a)考虑数据和处理的需求建模方法被称作结构化分析,处理将数据作为独立实体加以转换。数据对象建模定义了对象的属性和关系b)面向对象的分析,关注与定义类和影响客户需求的类之间的协作方式c)行为元素描述了外部事件如何改变系统或主流在系统里的类的状态d)面向流的元素表示信息转换的系统描述了数据对象在流过各种系统功能时是如何转换的4.数据对象:只封装数据,没有操作数据的引用,定义了一个符合的数据项5.面向对象:包含了数据属性和数据方法6.基于类的建模a)识别分析类:对第一次出现的名词加下划线,第一次出现的动词采用斜体,带有下划线的每个名词或词组可以确定为类,之后输入到一个表中标注出同义词潜在类应满足的特征:保留信息,所需服务,多个属性,公共属性,公共操作,必要需求(应全部满足)b)描述属性,定义操作:类图c)类-职责-协作者建模(CRC):(写法:上:类名;左:职责(类相关的属性于操作);右:协作者(完成职责所需要的信息))提供了方法可以识别和组织与系统或产品需求相关的类。P103d)关联和依赖、分析包7.需求模型为系统级表示层和软件设计之间的间隔构造了桥梁第六章需求建模:流程、行为和模式1.面向流程建模,数据流图DFD:使用分层的方式表示a)第0层DFD将软件或系统描述为一个泡泡,标记主要的输入和输出,通过吧选定的处理、数据对象和数据存储分离为下一层表示而开始精华过程b)当从一个层转到另一层时要保持信息流连续性,一次精化一个泡泡,将叙述中的名词与动词分离开来。c)名词是外部实体(方框),数据或控制对象(箭头)、数据存储(双横线),动词是处理泡泡2.状态图p115顺序图P119120第七章设计概念1.软件工程中的设计:P127三角形a)构建及设计:构造元素-软件构件b)接口设计:系统与使用成员之间通信c)体系结构设计:基于系统主要元素d)数据/类设计:类模型数据结构2.质量属性FURPS:功能性、易用性、可靠性、性能、可支持性3.设计概念:a)抽象:1.过程抽象是指具有明确和有限功能的指令序列2.数据抽象是描述数据对象的冠名数据集合b)体系结构:程序构建的结构或组织、这些构建交互的形式以及这些构建所用的数据的结构,也可以概括为表示主要的系统元素及其交互包括属性:结构特性,外部功能特性,相关系统族c)模式:描述了在某个特定场景与可能影响模式应用和使用方式的影响力中解决某个特定的设计问题的设计结构d)关注点分离:表明任何复杂问题如果被分解为可独立解决或优化的若干块,该复杂问题能够更容易地被处理e)模块化:软件被划分成独立命名的、可处理的构件i.随着模块数量增加,集成模块的工作量也在增加,的确存在一个模块数量M可以带来最小的开发成本,但是缺乏成熟的技术来精确地预测Mf)信息隐蔽:模块应该规定并设计成为在模块中包含的信息不被不需要这些信息的其他模块访问g)功能独立:关注点分离、模块化、抽象和信息隐蔽的直接产物i.通过开发具有专一功能和避免与其他模块过多交互的模块以实现功能独立ii.具有有效模块化的软件更容易开发,独立模块更容易维护和测试,模块复用成为可能iii.通过内聚性和耦合性进行评估:内聚性显示模块相关功能的强度,耦合性显示了模块间的相互依赖性iv.耦合性依赖于模块之间的借口复杂性、引用或进入模块所在的点以及什么数据通过接口进行传递h)求精:是一个细化过程,抽象和精华是互补的概念,精华有助于在设计过程中揭示底层细节i)方面:方面是一个横切关注点的表示j)重构:重新组织的技术,可以简化构建的设计而无需改变其功能或行为k)面向对象:OOl)设计类:通过提供设计细节精化分析类,设计细节促成类的实现;实现支持业务解决方案的软件基础设施i.用户接口类:定义人机交互所必须的抽象ii.业务域类:早期定义的分析类的精化iii.持久类:表示将在软件执行之外持续存在的数据存储(数据库)iv.系统类:实现软件管理和控制功能,使系统能够运行v.四个特征:完整性与充分性,原始性,高内聚性,低耦合性m)设计模型P139第八章体系结构设计1.体系结构设计:表示了建立计算机系统所需的数据结构和程序构件2.软件体系结构:系统的一个或者多个结构,包括软件构件、构件的外部可见属性以及它们之间的相互关系。a)对设计在满足既定需求方面的有效性进行分析b)再设计变更相对容易的阶段,考虑体系结构可能的选择方案c)降低与软件构造相关的风险3.体系结构AD:记录体系机构的产品集合,使用多视图表示,每个视图是从一组利益相关者关注点的角度观察的整个系统的一种表示4.体系结构风格:1.完成系统需要的某种功能的一组构件2.能使构件间实现通信合作协调的连接键3.定义构件如何集成为系统的约束4.语义模型,能使设计者通过分析系统组成成分的已知属性来理解系统的整体性质a)以数据为中心的体系结构:数据存储驻留在这种体系结构的中心,其他构件会经常访问该数据存储,并对数据增删改查(黑板机制)P151b)数据流体系结构:管道-过滤模式拥有一组称为过滤器的构建,通过管道连接,管道将数据从一个构件传送到下一个构件。若退化成单线的变换,则称为批序列。c)调用和返回体系结构:主程序/子程序体系结构;远程过程调用体系结构d)面向对象体系结构e)层次体系结构5.系统环境表示:用体系结构环境图ACD对软件与其外围实体的交互方式进行6.使用数据流进行体系结构映射:a)评审基本系统模型b)评审和精化软件的数据流图c)确定DFD是否含有变换流或事务流特征d)通过确定输入和输出流的边界,分离出变换中心e)完成第一级分解f)完成第二级分解g)实用提高软件质量的设计启发式方法,精化第一次迭代得到的体系结构
本文标题:福州大学14年软件工程复习材料归纳1-8章
链接地址:https://www.777doc.com/doc-5008190 .html