软件工程期末复习资料图文精.docx
- 文档编号:11281095
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:30
- 大小:59.94KB
软件工程期末复习资料图文精.docx
《软件工程期末复习资料图文精.docx》由会员分享,可在线阅读,更多相关《软件工程期末复习资料图文精.docx(30页珍藏版)》请在冰豆网上搜索。
软件工程期末复习资料图文精
软件工程
期末复习资料
考试时间:
2015-06-29(18周星期一13:
30-15:
30
考试地点:
中心205座位号:
10监考:
丁家满王晓东
考试题型
第一部分选择题(20分,共10题
第二部分判断题(10分,共10题
第三部分简答题(40分,共5题
第四部分设计题(30分,共1题
学院:
信息工程与自动化学院
专业班级:
计科122班
姓名:
邹华宇
学号:
201210405204
2015年6月27日
考点一软件及其特点
1.软件的定义(软件=程序+数据+文档
丁家满:
软件是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。
姜瑛:
计算机软件指计算机系统中的程序及其文档。
我:
软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。
软件是一种产品,包含下面三方面的含义:
在运行中能够提供所希望的功能和性能的指令集(即程序;使程序能够正确运行的数据结构;描述程序开发、维护和使
。
编写程序只是软件开发过程数据中的一个阶段,一般来说,其工作量仅是软件开发全部工作量的10%-20%。
2.软件的特点(课本P2
软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算;软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大;
软件的使用没有硬件那样的机械磨损和老化问题。
丁家满:
软件的本质特性:
复杂性:
软件在规模上可能比任何由人类创造的其他实体都要复杂,复杂性是软件的本质特性。
软件的复杂性是必要属性,开发问题也会增加复杂性;
一致性:
软件必须遵从人为的惯例并适应已有的技术和系统。
软件需要随接口的不同而改变,随时间的推移而变化,而这些变化是不同的人设计的结果。
许多复杂性来自保持与其他接口的一致,对软件的任何再设计,都无法简化这些复杂特性;
可变性:
软件产品扎根于文化的母体中,如各种应用、用户、自然及社会规律、计算机硬件等,后者持续不断地变化着,这些变化无情地强迫着软件随之变化。
所有成功的软件都会发生变更。
人们总是认为软件是容易修改的,但忽视了修改所带来的副作用,不断的修改最终导致软件的退化;
不可见性:
软件是不可见的和无法可视化的,软件的客观存在不具有空间的形体特征,定义“需要做什么”成为软件开发的根本问题。
人们一直试图使用不同的技术进行软件可视化(控制流程、数据流、依赖关系、UML…但这些技术仍然无法给出准确的、完整的描述,软件仍然保持着无法可视化的固有特性,从而剥夺了一些具有强大功能的概念工具的构造思
路。
这种缺憾不仅限制了个人的设计过程,也严重地阻碍了相互之间的交流。
。
我:
抽象性:
逻辑实体。
可记录。
看不到,开发过程可视化程度低,开发结果难以直观表示;可复制性:
与开发成本相比,复制成本很低;
无折旧:
软件不会被用坏、不存在磨损和消耗,但会过时;
受硬件制约:
软件的开发和运行常受到计算机硬件的限制,对计算机硬件有着不同程度的依赖性;
未完全摆脱手工工艺:
是脑力创造的结果,大部分是“定做”;
开发费用高:
软件生产成本集中在研制阶段,生产与维护费用不断增加。
3.(补充软件分类
丁家满:
按适用范围分:
——通用软件(产品软件:
通用软件是由软件开发组织开发,面向市场用户公开销售的独立运行系统,有时也被称为套装软件。
举例:
操作系统、数据库系统、字处理软件等。
——定制软件(项目软件:
定制软件是由某个特定客户委托,软件开发组织在合同的约束下开发的软件。
举例:
企业ERP系统、卫星控制系统、空中交通指挥系统等
姜瑛:
按软件功能分:
——系统软件:
位于计算机系统中最靠近硬件的一层,其它软件一般都通过系统软件发挥作用,它与具体的应用领域无关。
如操作系统、编译程序等。
——支持软件:
支持软件的开发和维护的软件。
如数据库管理系统、网络软件、软件开发环境等。
——应用软件:
特定应用领域专用的软件。
如实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件等。
姜瑛:
按工作方式分:
(1实时软件处理;(2分时软件;(3交互式软件;(4批处理软件;(5嵌入式软件。
4.(补充软件的发展过程
(120世纪50年代——60年代初:
程序设计阶段
特点:
个性化;只有程序清单;以硬件发展为主。
硬件通用,软件专用;程序规模小,编写者和使用者为同一人(同组人。
(220世纪60年代初——70年代初:
程序系统阶段
特点:
作坊式;软件数量剧增;软件维护费用惊人;提出“软件工厂”概念,出现软件危机。
(370年代——90年代:
软件工程阶段
软件开发成为一门新兴的工程学科——软件工程。
软件成本剧增,硬件技术日趋成熟。
(490年代至今:
现代信息技术飞速发展(并行计算机处理、三层处理模式、数据仓库、多媒体技术、网络技术、电子商务等称为:
网络时代。
考点二软件危机
丁家满:
软件危机出现于20世纪60年代末。
软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。
——软件开发的成本和进度难以准确估计,延迟交付甚至取消项目的现象屡见不鲜;——软件存在着错误多、性能低、不可靠、不安全等质量问题;
——软件维护极其困难,而且很难适应不断变化的用户需求和使用环境。
姜瑛:
许多软件项目不能满足客户的要求,许多软件项目超出预算和时间安排。
我:
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
主要表现:
成本高;软件质量得不到保证;进度难以控制,维护非常困难。
主要是两个问题:
(1如何开发软件,以满足对软件的不断增长、日趋复杂的需求;(2如何维护数量不断膨胀的已有软件。
产生原因:
逻辑产品,不同于物理产品;复杂性高;规模大;影响软件生产率和质量的因素比较复杂(人员的能力和水平,团队合作;缺乏有力的方法学和工具的支持。
考点三软件工程
1.软件工程的定义(课本P5(重点,预测简答题
(工程化思想运用到软件开发软件工程=技术+管理
丁家满:
IEEE:
软件工程是:
(1将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;(2对(1中所述方法的研究。
姜瑛:
计算机科学技术百科全书:
软件工程是:
应用计算机科学、数学及管理科学等原理,开发软件的工程。
软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。
我:
软件工程是用科学知识、技术、原理来定义、开发和维护软件的一门学科。
概括
地说,软件工程是知道软件开发和维护的一门工程学科。
其根本要求是:
采用工程的概念、原理、技术和方法来开发与维护软件,把好的管理技术和开发技术结合起来,追求可靠性、可维护性、满足用户需求、提高开发效率。
用工程学科中的观点进行费用估算、进度控制、制定计划和方案;用管理科学中的方法和原理进行软件生产过程的管理;用数学的方法建立软件开发中的各种模型和算法。
选择题预测:
针对“软件危机”1968年NATO会议上提出了(软件工程,希望用工程化的方法来进行软件的开发。
简答题:
什么是软件工程?
软件生存周期分哪几个阶段?
分别简述各个阶段的任务。
2.(补充软件工程的发展
(1传统软件工程
管理:
希望实现软件开发过程的工程化。
这方面最为著名的成果就是提出了大家都很熟悉的“瀑布式”生命周期模型。
它是在60年代末“软件危机”后出现的第一个生命周期模型。
如下所示:
分析→设计→编码→测试→维护
后来,又有人针对该模型的不足,提出了快速原型法、螺旋模型、喷泉模型等对“瀑布式”生命周期模型进行补充。
现在,它们在软件开发的实践中被广泛采用。
方法:
侧重与对软件开发过程中分析、设计的方法的研究。
这方面的重要成果就是在70年代风靡一时的结构化开发方法,即PO(面向过程的开发或结构化方法以及结构化的分析、设计和相应的测试方法。
(2现代软件工程
管理:
从企业管理的角度提出的软件过程管理。
即关注于软件生存周期中所实施的一系列活动并通过过程度量、过程评价和过程改进等涉及对所建立的软件过程及其实例进行不断优化的活动使得软件过程循环往复、螺旋上升式的发展。
其中最著名的软件过程成熟度模型是美国卡内基梅隆大学软件工程研究所建立的CMM(CapabiliMaturityModel,即能力成熟度模型。
方法:
面向对象的分析、设计方法(OOA和OOD的出现使传统的开发方法发生了翻天地覆的变化。
随之而来的是面向对象建模语言(以UML为代表、软件复用、基于组件的软件开发等新的方法和领域。
软件工程包括两个方面的内容:
软件开发技术:
软件开发方法学、软件工具和软件工程环境。
软件管理技术:
包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划等。
软件工程技术有两个明显的特点:
第一,强调规范化。
第二,强调文档化。
3.(补充软件工程的框架(课本P6
姜瑛:
软件工程的框架可概括为。
:
生产具有以及的产品。
过程:
生产一个最终满足需求且达到工程目标的软件产品所需要的步骤。
原则:
选取适宜的开发模型;采用合适的设计方法;提供高质量的工程支持;重视软件工程的管理。
4.软件工程的三要素(重点
软件工程的关注焦点:
软件质量与软件成本。
判断题预测:
运行正确的软件就是高质量的软件。
解析:
软件除了提供用户所需的功能以外,还应该具有一系列反映质量的属性,包括可维护性、可依赖性、有效性和可用性等。
——过程:
支持软件生命周期的所有活动;
——方法:
为软件开发过程提供“如何做”的技术;
——工具:
为软件开发方法提供自动的或半自动的软件支撑环境。
软件工程是目标,软件过程是步骤,方法和工具是辅助。
5.(补充软件生存周期
软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。
这个过程即为计算机软件的生存周期。
(从无到有,再到丢弃
软件生存周期大体可分为如下几个活动:
计算机系统工程、需求分析、软件设计、编考点四软件过程的定义(课本P8(重点
丁家满:
软件过程是指开发软件产品的一组活动及其结果。
软件过程的四个基本活动
——规格说明:
定义软件功能以及对其使用的限制;
——软件开发:
设计和实现满足规格说明的软件;
——软件确认:
验证软件以保证能够满足客户的要求;
——软件演化:
改进软件以适应不断变化的需求。
姜瑛:
软件过程指软件生存周期中的一系列相关的过程。
过程是活动的集合,活动是任务的集合。
它规定了完成各项任务的步骤。
软件过程有三层含义:
个体含义:
即指软件产品或系统在生存周期中的某一类活动的集合,如软件开发过程,软件管理过程等。
整体含义:
即指软件产品或系统在所有上述含义下的软件过程的总体。
工程含义:
即指解决软件过程的工程,它应用软件工程的原则、方法来构造软件过程模型,并结合软件产品的具体要求进行实例化,以及在用户环境下的运作,以此进一步提高软件生产率,降低成本。
考点五过程模型各自的特点及应用范围(课本P16-P21(重点,预测选择题
丁家满:
对实际过程的抽象描述。
包括软件过程的活动、软件产品以及参与人员的不同角色。
常见的软件过程模型:
瀑布模型;快速原型模型;增量模型;形式化方法模型;基于组件的开发模型。
姜瑛:
软件开发模型是描述软件开发过程中各种活动如何执行的模型。
因此又称为软件过程模型或软件生存周期模型。
典型的软件过程模型有:
瀑布模型、演化模型(增量模型、原型模型、螺旋模型、喷泉模型、基于构件的开发模型、形式方法模型。
(1瀑布模型(需求不能变化,比较稳定,缺乏灵活性
(试图一次就获得正确产品,太过理想化
(需求是可变的,需求是模糊的,用户与开发者难于沟通
需求定义与分析→软件设计→软件实现→软件测试→软件运行与维护
开发阶段严格按照线性方式进行,每一个阶段具有相关的里程碑和交付产品,每一个阶
段需要确认和验证,强调文档的作用。
适用:
在开发的早期阶段软件需求被完整确定。
挑战:
实际的项目开发很少是线性的过程,客户很难明确地描述软件需求。
缺点:
各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;缺乏灵活性,开发过程中很难响应客户的变更要求;早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果,维护代价大。
我:
特点:
瀑布模型具有阶段任务结束形成文档,并审核后方能进行设计任务,将程序的实现推迟进行。
文档评审,避免错误积累与放大效应。
致命缺点是只有做出精确的需求分析,才能取得预期的结果。
由于各种客观、主观的原因,需求分析往往不很精确,常常给日后的开发带来隐患。
(2快速原型模型(需求不好获取
丁家满:
快速原型需要迅速建造一个可以运行的软件原型,以便理解和澄清问题,使开
发人员与用户达成共识。
(快速开发工具,循环,低成本
目的:
减少开发风险和需求不确定性。
缺点:
原型系统的内部结构可能不好;开发人员需要掌握建立快速原型开发技术和工具。
适用:
小型或中等规模的交互式系统;大型系统的某些部分,例如用户界面;生命周期较短的系统。
(3增量模型(需求经常变化的软件开发
基本思想:
要开发一个大的软件系统,先开发其中的一个核心模块或子系统,然后再开
发其他模块或子系统,这样一个个的增加,就像搭积木一样,直到整个系统开发完毕为止。
采用瀑布模型或快速原型模型开发软件,目标都是一次就把一个满足所有需求的产品提
交给用户。
增量模型则与之相反,它分批地逐步向用户提交产品——非整体性开发。
增量模型强调每一个增量都发布一个可运行的产品。
优点:
可以同时进行多个部件的开发,效率高;整个产品被分解成若干个构件逐步交付,用户可以不断地看到所开发软件的可运行中间版本;将早期增量作为原型有助于明确后期增量的需求;降低开发风险;重要功能被首先交付,从而使其得到最多的测试。
分阶段地交付产品不需要大的资金支出。
需求经常变化,增量模型的灵活性使其具有更加优越的适用性。
缺点:
需要软件具备开放式的体系结构,方便构件的加入;需求难以在增量实现之前详细定义,因此增量与需求的准确映射以及所有增量的有效集成可能会比较困难;容易退化为边做边改方式,使软件过程的控制失去整体性。
我:
特点:
。
软件在该模型中是“逐渐”开发出来的,开发出一部分,向用户展示一部分,让用户及早看到部分软件,及早发现问题。
或者先开发一个“原型”软件,完成部分主要功能,展示给用户征求意见,然后逐步完善,最终后的满意的软件产品。
(迭代的思路
该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。
缺点:
要求软件具有开放的结构是这种模型固有的困难,可能会导致设计差、效率低、维护难。
(4螺旋模型(强调风险分析(瀑布模型+快速原型+风险分析
该模型将开发划分为制定计划(确定软件目标,选定实施方案,弄清项目开发的限制、风险分析(分析所选方案,考虑如何识别和消除风险、实施工程(实施软件开发和客户评估(评价开发工作,提出修正建议四类活动。
每个阶段之前:
确定目标,可供选择的办法及其限制条件;风险分析。
每个阶段之后:
评估,计划下一阶段。
丁家满:
优点:
关注软件的重用;关注早期错误的消除;将质量目标放在首位;将开发阶段与维护阶段结合在一起。
缺点:
契约开发通常需要事先指定过程模型和发布产品;需要风险评估的经验。
我:
优点:
允许并且鼓励用户反馈信息;在项目早期就消除严重的曲解;通过测试和质量保证,作出客观的评估;在项目早期就发现不一致的问题;在第一次迭代就开始测试;在早期就找出并关注风险。
缺点:
需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。
并非所有的风险都能规避,要求用户接受和相信这种风险分析,并做出相关反应是不容易的。
风险驱动既是优点也是缺点,螺旋模型仅适合大型软件,如果风险分析大大影响利润时,进行风险分析便毫无意义。
(5喷泉模型(支持面向对象开发的模型
(补充软件开发方法
软件开发方法可分为两大类:
(1面向过程的开发方法:
结构化开发方法;
面向数据结构的开发方法;
原型化开发方法。
(2面向对象的开发方法
(补充软件开发工具与环境
在软件工程活动中,软件工程师和管理员按照软件工程的方法和原则,借助于计算机及其软件工具的帮助,开发、维护、管理软件产品的过程,称为计算机辅助软件工程(CASE,ComputerAidedSoftwareEngineering。
为支持软件开发、维护、管理而研制的计算机程序系统称为软件工具。
软件工具种类繁多,涉及面广,如编辑、编译、正文格式处理,静态分析、动态跟踪、需求分析、设计分析、测试、模拟和图形交互等。
集成型开发环境是一种把支持多种软件开发方法和过程模型的软件工具集成到一起的软件开发环境。
集成型开发环境由环境集成机制和工具集组成。
考点六系统工程(课本P28(明确系统整体要求
系统工程的主要任务:
(1识别用户的要求;(2系统建模和模拟;(3成本估算及进度安排;(4可行性分析;(5生成系统规格说明。
1.(补充基于计算机的系统
所谓基于计算机的系统是指:
通过处理信息来完成某些预定义目标而组织在一起的元素的集合。
组成基于计算机系统的元素主要有:
软件、硬件、人员、数据库、文档和规程。
软件:
指计算机程序、数据结构和相关的工作产品,它们被用于实现所需的逻辑方法、规程或控制
硬件:
指提供计算能力的电子设备、使能数据流动的互连设备(如网络交换器、电信设备和提供外部世界功能的电子机械设备(如传感器、马达等
人员:
指硬件和软件的用户和操作者
数据库:
指通过软件访问并持久存储的大型的有组织的信息集合
文档:
指描绘系统的使用和/或操作的描述性信息(如模型、规格说明、硬复制手册、联机帮助文件、Web站点
规程:
指定义每个系统元素或其外部相关流程的具体使用步骤
2.可行性分析(课本P29
开发一个基于计算机的系统通常都受到资源(人力、财力、设备等和时间上的限制,可行性分析主要从经济、技术、法律等方面分析所给出的解决方案是否可行,能否在规定的资源和时间的约束下完成。
可行性分析的。
可行性分析的含义:
按照各种有效的方法和工作程序,对拟建工程项目在技术上的先进性、适用性,经济上的合理性、盈利性,以及项目的实施等方面进行深入的系统分析。
可行性分析的目的:
要用最小的代价在最短的时间内确定该项目是否值得去解决,是否存在可行的解决方案。
(1经济可行性分析
经济可行性主要进行成本效益分析,从经济角度,确定系统是否值得开发。
(2技术可行性分析
技术可行性主要根据系统的功能、性能、约束条件等,分析在现有资源和技术条件下系统能否实现。
技术可行性分析通常包括风险分析、资源分析和技术分析。
——风险分析:
分析在给定的约束条件下设计和实现系统的风险。
风险分析的目的是找出风险,评价风险的大小,并有效地控制和缓解风险。
——资源分析:
论证是否具备系统开发所需的各类人员、软件、硬件等资源和相应的工作环境。
——技术分析:
分析当前的科学技术是否支持系统开发的各项活动。
技术可行性分析时通常需进行系统建模,必要时可建造原型和进行系统模拟。
(3法律可行性分析
研究系统开发过程中可能涉及到的合同、侵权、责任以及各种与法律相抵触的问题可行性分析的结论:
可以立即开始进行;需要推迟到某些条件落实之后才能开始进行;需要对开发目标进行某些修改之后才能开始进行;因为某种原因不能进行。
简答题:
简述可行性分析的任务。
考点七需求分析(课本P33(做什么:
whattodo
本书将软件需求工程细分为:
需求获取、需求分析与协商、系统建模、需求规约、需求验证和需求管理六个阶段。
1.需求分析的定义(重点需求分析是对收集到的需求进行提炼、分析和认真审查,以确保所有的项目相关人员都明白其含义,并找出其中的错误、遗漏或其它不足的地方,形成完整的分析模型。
需求分析的核心在于建立分析模型。
——模型是现实世界某些重要方面的表示,是一项经过验证且被广为接受的工程技术。
——分析模型详细定义了系统需求而没有局限于具体技术。
常用的需求分析方法:
——面向数据流的结构化分析方法(SA
——面向数据结构的分析方法
——面向对象的分析方法(OOA需求分析的任务:
准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么。
用“需求规格说明书”规范的形式准确地表达用户的需求。
2.需求获取方法与策略定义了系统做什么(描述系统必须支持的功能和过程;(2非功能性需求(技术需求:
定义了系统工作时的特性(描述操
作环境和性能目标
需求获取的常用方法:
建立顺畅的通信途径;访谈与调查;观察用户操作流程;组成联
合小组;用况(UseCase。
(重点用况(UseCase:
当需求作为非正式会议、Fast的一部分而收集起来之后,分析员就可以创建一组标识一串待建造系统的使用场景。
创建用况模型的主要步骤如下:
(1确定谁会直接使用该系统,即参与者(Actor;
(2选取其中一个参与者;
(3定义该参与者希望系统做什么,参与者希望系统作的每件事将成为一个用况;
(4对每件事来说,何时参与者会使用系统,通常会发生什么,这就是用况的基本过程;
(5描述该用况的基本过程
3.需求规格说明书(SRS
需求规格说明(SRS,SoftwareRequirementSpecification精确地阐述一个软件系统必须提供的功能和性能以及它所要考虑的限制条件。
作用:
成为用户、分析人员和设计人员之间进行理解和交流的手段;支持系统测试活动;用于规划和控制系统的开发过程。
应该包括在SRS中的内容
功能:
软件应该提供什么功能?
外部接口:
软件如何与人、系统硬件和其他系统等进行相互作用?
性能:
软件系统在运行速度、可用性、响应时间、恢复时间等方面有什么要求?
特性:
软件系统在可移植性、可维护性、安全性等方面有什么考虑?
设计约束:
是否存在必要的标准、开发语言、数据库、资源限制、运行环境等因素的影响和策略?
需求规格说明的质量特性
可验证性:
需求规格说明中描述的需求都可运用一些可行的手段对其进行验证和确认。
一致性:
需求规格说明对各种需求的描述不能存在矛盾,如术语使用冲突、功能和行为特性方面的矛盾以及时序上的不一致等。
致。
可跟踪性:
每一项需求都能与其对应的来源、设计、源代码和测试用例联系起来。
4.需求建模
在软件需求分析阶段,所创建的模型,要着重于描述系统要做什么,而不是如何去做。
目标软件的模型不应涉及软件实现细节。
5.需求验证
需求验证是检验需求能否满足客户的意愿。
需求验证的技术:
——需求评审:
由不同代表(如分析员、客户、设计人员、测试人员组成的评审小组以会议形式对需求进行系统性分析。
——原型评价:
客户和用户在一个可运行的系统模型上实际检验系统是否符合他们的真正需要。
——测试用例生成:
通过设计具体的测试方法,发现需求中的许多问题。
需求验证主要围绕需求规格说明的质量特性展开。
6.需求管理
需求管理是分析变更影响并控制变更的过程,主要包括变更控制、版本控制和需求跟踪
等活动。
需求跟踪有两种方式,正向跟踪与逆向跟踪。
考点八软件设计(课本P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 期末 复习资料 图文