软件工程复习提纲
- 格式:doc
- 大小:176.50 KB
- 文档页数:12
CH11、软件危机概念软件危机是指在计算机软件开发和维护过程中所遇到的一系列严重问题。
2、软件危机体现在哪几方面?主要表现在软件的开发和维护两方面3、软件工程概念软件工程是知道计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
4、软件工程7条基本原理(1)用分阶段的生命周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用线代程序设计技术;(5)结果应能清楚地审查;(6)开发小组的人员应该少而精;(7)承认不断进取软件工程实践的必要性。
5、软件工程方法学包含的3个基本要素方法、工具和过程6、软件生命周期划分哪些阶段软件定义、软件开发和运行维护。
7、各阶段的基本任务软件定义:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。
软件开发:具体设计和实现定义的软件。
运行维护:使软件持久地满足用户的需要。
8、软件过程概念软件过程描述为了开发出客户需要的软件,什么人、什么时候、做什么事以及怎样做这些事以实现某一个特定的具体目标。
9、软件过程模型有哪些瀑布模型、快速圆形、增量模型、螺旋模型、喷泉模型10、瀑布模型有哪些特点(1)可强迫开发人员采用规范的方法;(2)严格地规定每个阶段必须提交的文档;(3)要去每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
11、在软件生产中为什么强调管理CH21、可行性研究的目的用最小的代价在尽可能短的时间内确定问题是否能够解决。
2、从那些方面进行可行性研究技术可行性、经济可行性、操作可行性、社会可行性。
3、系统流程图的作用4、数据流图的作用利用它作为交流信息的工具,作为分析和设计的工具。
1 软件开发模型,瀑布模型、原型、螺旋等。
说明它的构成和特点。
2 可行性研究内容(经济可行性、技术可行性、法律可行性)3 系统工程、软件开发、软件管理的概念和关系4 软件危机原因和现象(原因:缺乏有效的工程化方法的指导,现象:P2)5 CMM的几个级别构成,每级的主要特点(初始级→可重复级→已定义级→已管理级→优化级)6 基于面向对象、结构化的软件分析设计的基本步骤、制品(P153、P155)7 给出问题陈述,可以画出UC 、架构设计和类图8 用例图、时序图、活动图、类的定义和作用9 软件测试与调试概念(软件测试:P263、调试概念:P298)10 软件测试的基本任务;白盒测试、黑盒测试、α测试、β测试(白盒测试:逻辑覆盖测试、逻辑表达式错误敏感的测试、基本路径测试、数据流测试、循环测试;黑盒测试:等价类划分、边界值分析、比较测试、错误猜测、因果图)11 条件覆盖法、等价分类法、边界值分析法、错误推测法12 集成测试、自顶向下、自底向上步骤13 条件覆盖法设计测试用例14 给出一段程序(1)画出该程序的控制流图,并计算其环路复杂性。
(2)用基本路径覆盖法给出测试路径。
(3)为各测试路径设计测试用例。
15 软件项目管理的关注点概念16 软件质量17 一些,少人还是多人一组?(量化)18 程序复杂性19 计算FP(FP = CT *(0.65 + 0.01 * F))20 构建DFD元素;需要注意问题(数据流、数据源、数据存储、对数据的加工)21 数据字典,元素,概念和作用22 软件界面设计的黄金三原则(让用户拥有控制权、减少用户的记忆负担、保持界面一致)23 Macall、CoCoMo、Putnam、Macabe24 内聚、耦合,所有名称、每个含义。
《软件工程》复习提纲一一、、 授授课课的的主主要要内内容容11.. 基基本本概概念念((11)) 有有关关““软软件件工工程程””的的基基本本概概念念11))软软件件工工程程的的诞诞生生那是1968……22))软软件件危危机机计计算算机机软软件件开开发发和和软软件件维维护护过过程程中中所所遇遇到到的的一一系系列列严严重重问问题题统统称称为为““软软件件危危机机””。
概括地说,软件危机包含两方面的问题:一是如何开发软件,怎样满足人们对软件日益增长的需求?二是如何维护软件,使它们持久地满足人们的要求。
33))软软件件包含与数据处理系统操作有关的程序、规程、规则以及相关文档的智力创作称为软件(计算机)。
文档是描述程序开发过程的,是智力创作的真实记录,是创作活动的历史档案和结晶。
软软件件由由计计算算机机程程序序,,数数据据结结构构和和文文档档组组成成。
计算机程序执行特定的功能;数据结构是程序运行所需的数据;文档是描述程序开发、使用和维护的资料。
44)) 软软件件工工程程的的概概念念采采用用工工程程学学的的原原理理来来管管理理和和从从事事软软件件的的开开发发和和软软件件维维护护,,称称为为软软件件工工程程。
(工程学:系统化、规范化、数量化)55))软软件件质质量量的的基基本本概概念念(a )软件质量的定义与软件产品满足规定的和隐含的需求能力有关的特征和特性的全体。
具体来说:1)软件产品中能满足给定需求的性质和特性的总体;2)软件具有所期望的各种属性的组合程度。
(b )软件质量特性(1)功能性:当软件在指定条件下使用时,软件产品提供满足明确和隐含要求的功能的能力。
(2)可靠性:在指定条件下使用时,软件产品维持规定的性能级别的能力。
(3)易用性:在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。
(4)效 率:在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力。
(5)维护性:软件产品可被修改的能力。
软件工程复习提纲第一篇:软件工程复习提纲《软件工程》课程要点λ每章教学课件中的“本章小结”列出了需要掌握的内容λ教学过程中的例题和习题也是课程重点一、软件工程与软件过程概述1.概念:(1)软件的概念(组成成分、作用);(2)软件危机的含义、表现、产生原因(客观、主观)(3)软件工程学科包括的内容、解决的主要问题(4)软件生命周期的含义、组成阶段及各阶段主要任务2.需理解的问题:(1)软件与程序的区别和联系?(2)开发一个软件项目包括哪些基本的步骤?每一步骤完成哪些工作?(3)主要的软件过程模型(生命周期模型)有哪些?各自有什么特点?二、结构化分析-面向数据流的分析方法1.什么是软件需求?需求分析过程(步骤)?2.需求分析模型:(1)功能模型(数据流图DFD)的含义、描述符号、画法步骤及规则(2)数据模型(E-R图)的作用(3)行为模型(状态转换图)的作用(4)数据字典的作用三、结构化设计1.软件设计的任务?结构化设计与结构化分析的区别和联系?2.软件设计遵循的基本原理及规则:(1)模块化的含义、如何划分模块(降低成本、提高独立性)?(2)抽象与逐步求精的含义、二者间关系如何?(3)信息隐藏的含义(4)如何完善软件结构(深度、宽度、扇入、扇出、作用域、控制域)? 3.模块独立性:(1)模块独立性含义?(2)模块独立性的度量标准:耦合的分类、含义及应用;内聚的分类、含义及应用。
4.概要设计(面向数据流的设计方法)(1)概要设计的任务?(2)数据流图的类型及特征(变换型、事务型)(3)变换分析设计方法的应用(步骤)(4)事务分析设计方法的应用(步骤)4.详细设计(过程设计)(1)详细设计的任务(2)结构化程序(设计)的特征(3)详细设计结果的描述工具:程序流程图、N-S图、PAD图、PDL、判定表四、软件测试1.软件测试基础(1)软件测试的含义和目的?(2)测试用例的内容(输入数据、预期输出结果)?(3)主要测试方法(黑盒测试、白盒测试)的含义?2.主要的白盒测试技术及应用-------逻辑覆盖法?基本路径测试方法? 3.主要的黑盒测试技术及应用-------等价类法? 边界值分析法?4.软件测试的过程?(1)单元测试(采用的测试方法;测试内容)(2)集成测试(采用的测试方法;测试内容;模块组装策略)(3)确认测试(采用的测试方法;测试内容;α测试与β测试?)(4)辅助模块的含义及作用(驱动模块、存根模块?)五、面向对象方法学基础 1.基本概念:(1)对象的含义及特点?(2)类的含义?类与对象的关系?(3)消息及消息传递的含义及作用?(4)继承的含义?多态性机制?2.面向对象建模技术中的三种模型及各自作用?3.对象模型及描述(类图):对象(类)的图形表示;关系(关联、聚集、继承)的图形表示; 4.事件追踪图、状态图、用例图的作用六、面向对象分析与设计过程1.面向对象分析(OOA)的任务?OOA的基本过程?2.面向对象设计(OOD)的主要任务?OOD与OOA的区别和联系?3.OOD模型的组成(四部分)及内容?七、软件维护1.软件维护的含义及类型? 2.软件维护过程?--------------- 课堂练习题目一、填空题1.软件主要包括程序、和三部分内容。
1 软件危机产生的原因和方法(1)原因:一方面与软件本身的抽象性和复杂性有关,这是客观原因;另一方面则与软件开发和维护过程中使用的技术和方法有关,这是主观原因.(2)方法:既要有技术措施(包括方法和工具),又要有组织管理措施2 软件生命周期阶段(1)可行性研究(2)需求分析(3)软件设计(4)编码(5)软件测试(6)软件维护3 常见软件开发模型(1)瀑布模型(2)原型模型(3)增量模型(4)螺旋模型(5)统一软件开发过程4 软件需求分析目标和任务(1)目标:研究用户需求,得到目标系统的需求定义(2)任务:1确定目标系统的具体要求2建立目标系统的逻辑模型5 需求分析步骤(1)获取需求,识别问题(2)分析和描述系统的逻辑模型(3)需求分析的复审6数据流图有四种基本符号:(1).正方形或立方体表示数据的源点或终点;(2).圆角矩形或圆形代表数据处理;(3).开口矩形或两条平行横线代表数据存储;(4).箭头表示数据流,即数据流动得方向.7 实体-联系图(E-R图)的三个基本组成部分:(1).实体。
用矩形框表示实体;(2).关系。
用菱形框表示实体之间的关系;(3).属性。
用椭圆形或圆角矩形表示实体(或关系)之间的属性。
8 软件设计基本原则(1)抽象与分解(2)模块化和信息隐藏(3)模块独立性9 耦合和类聚的分类:(1)耦合:1数据耦合,2控制耦合,3特征耦合,4公共环境耦合,5内容耦合(2)内聚:1偶然内聚,2逻辑内聚,3时间内聚,4过程内聚,5通信内聚,6顺序内聚,7功能内聚10数据流图中数据流的分类: 变换型数据流和事务型数据流11 如何高质量的完成详细设计的目标和任务?(1)目标:设计目标系统,得出新系统软件的详细规格,同时要求设计出规格简明易懂,便于下一阶段用某种程序语言在计算机上的实现(2)任务:①算法过程的设计,②数据结构的设计,③数据库物理设计,④信息编码设计,⑤测试用例的设计,⑥其他设计,⑦编写详细设计说明书12结构化程序设计通常采用自顶向下, 逐步求精的设计方法13 软件测试的分类(1)根据程序是否运行分为:静态分析,动态分析(2)测试数据的设计依据分为:黑盒测试,白盒测试14 黑盒测试含义及分类(1)含义:又称功能测试,,是以用户的观点,从输入数据与输出数据的对应关系出发测试的,不涉及程序的内部结构(2)分类:等价类划分法,边界值分析法,决策表法,因果图法15 白盒测试含义及分类(1)含义:按照程序内部逻辑结构测试程序,检验是否程序能够按照规定正常运行(2)分类:覆盖测试,功能性测试,结构性测试(3)16 软件测试步骤(1)单元测试(2)集成测试(3)确认测试(4)系统测试17 软件维护的种类(1).改正性维护(2)适应性维护(3)完善性维护(4)预防性维护18 软件维护的策略(1) 改正性维护(2)适应性维护(3)完善性维护19 软件维护的过程(1)建立维护机构(2)用户提出维护申请并提交维护申请报告(3)维护人员确认维护类型并实施相应的维护工作(4) 整理维护记录并对维护工作进行评审(5)对维护工作进行评价20 决定软件可维护性的因素(1)可理解性(2)可测试性(3)可修改性21 统一建模语言UML是用一组专用符号描述软件规模的语言,这些符号统一、直观、规范,可以用于任何软件开发过程22. UML分为结构图和行为图,其中共有六种结构图和七种行为图。
软件工程复习提纲(年糕整理,不一定全)目录第一章概述 (1)第二章可行性研究 (4)第三章需求分析 (6)第五章总体设计 (8)第六章详细设计 (11)第七章实现 (13)第八章维护 (17)第十三章软件项目管理 (19)第一章概述概念软件危机:在计算机软件的开发和维护过程中遇到的一系列严重的问题。
包含如何开发软件,如何维护已有软件。
软件:计算机程序、方法、规则、相关文档资料以及在计算机上运行时必需的数据。
软件工程:①把系统的、规范的、可度量的途径应用到软件开发、运行和维护过程;②研究①中提到的途径。
软件工程方法学(范型):软件生命周期全过程中使用的一套技术方法的集合。
最广泛的有传统方法学、面向对象方法学。
传统方法学(生命周期方法学、结构化范型):采用结构化计数来完成软件开发的各项任务,使用适当的软件工具据或软件工程环境来支持结构化技术运用。
软件生命周期:从提出软件产品(项目)开始,直到该软件被淘汰的全过程。
软件过程:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件生命周期模型:跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。
简答软件危机的7个典型表现?1. 成本进度估计不足。
2. 客户需求经常变更或无法满足。
3. 软件质量无法保证或不可靠。
4. 软件维护无法进行或不可维护。
5. 软件文档缺少或不合要求。
6. 软件成本在总成本中占比逐年提升。
7. 开发生产率的提高速度比计算机应用普及深入速度慢。
软件危机出现的原因?(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。
(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。
(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。
软件工程的7个本质特性?1. 关注大型程序。
2. 中心课题是控制复杂性。
3. 软件经常变化。
软件工程第一章软件工程介绍1、软件的特性:P4软件是设计开发的,而不是传统意义上的生产制造;软件不会磨损;大多数软件仍是根据实际的客户需求制定的。
2、计算机软件的七大分类:P5系统软件、应用软件、工程/科学软件、嵌入式软件、产品线软件、Web应用软件、人工智能软件。
3、遗留系统发生系统演化的原因:P6软件需要修改其适应性,从而可以满足新的计算环境或技术的需求软件必须根据新的业务需求进行升级软件必须扩展以具有与更多现代系统和数据库的协作能力软件架构必须进行改建以适应多样化的网络环境4、软件神话:管理者,用户,从业者P105、软件的定义:P4软件是指令的集合,通过执行这些指令可以满足预期的特征,功能和性能需求;数据结构,它使得程序可以充分利用信息;描述程序操作和使用的文档。
第二章过程综述1、软件工程的三个要素:工具,过程,方法P17过程:软件过程将各个技术层次结合在一起,并实施合理地,及时地开发计算机软件方法:为建造软件提供技术上的解决方法。
工具:为过程和方法提供自动化或半自动化的支持。
2、通用软件过程框架:沟通,策划,建模,构建,部署P8沟通:这个框架活动包含了与客户之间大量的交流和协作,还包括需求获取以及其他相关活动策划:指为后续的软件工程工作制定计划。
建模:它包括创建模型和设计两方面。
创建模型有助于客户和开发人员更好得理解软件需求;设计可以实现它。
构建:它包括编码和测试。
部署:软件交付到用户,用户对其进行评测并给出意见3、能力成熟度模型:P22第0级:不完全级;第1级:已执行级;第2级:已管理级;第3级:已定义级;第4级:已定量管理级;第5级:优化级;第三章过程模型1、简述惯例框架包含的主要活动:P23沟通、策划、建模、构建、部署2、简述瀑布模型所包含的主要框架活动:P24沟通、策划、建模、构建、部署3、简述瀑布模型在实际运用中所面临的问题(缺点):P24实际的项目很少遵守瀑布模型提出的顺序客户通常难以清楚地描述所有的需求客户必须有耐心,因为只有在项目的后期,他们才能看到可执行的程序。
1.什么是软件?是一系列按照特定顺序组织的计算机数据和指令的集合,包括程序、数据和文档。
附:软件的特征:成本高、风险大、维护困难2.什么是软件危机,其内容主要是指什么?原因:1、与软件本身的特点有关;2、与软件开发人员有关;定义:在计算机软件开发和维护过程中所遇到的一系列严重的问题。
1)对软件开发成本和进度的估计常常不准确。
2)用户对“已完成”系统不满意的现象经常发生。
3)软件产品的质量不可靠。
4)软件的可维护程度非常之低。
5)软件通常没有适当的文档资料。
6)软件的成本不断提高。
7)软件开发生产率无法满足人们对软件的生产要求,软件开发生产率的提高落后于硬件的发展。
3.什么是软件工程?开发、运行和维护软件的系统方法•软件工程主要研究软件生产的客观规律性,建立与系统化软件生产有关的概念、原则、方法、技术和工具,指导和支持软件系统的生产活动,以期达到降低软件生产成本、改进软件产品质量、提高软件生产率水平的目标。
4.软件工程的目标(PP.41 )及其组成部分。
方法、工具和过程。
•软件工程的目标是:在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。
方法: 是指产生某些结果的形式化过程,•工具: 是用更好的方式完成某件事情的设备或自动化系统,如各种集成开发环境、编译工具、测试工具等。
•过程: 生产特定产品的工具和技术的结合•软件工程方法学包含3个要素:方法、工具和过程。
5.软件开发方法的定义。
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。
比如SASD方法、面向对象的软件开发方法。
6.好的软件的一些主要衡量指标。
例如McCall 的质量模型。
(1)质量,它的衡量:产品的质量、过程的质量、商业环境背景下产品的质量。
McCall 的质量模型:附:开发团队的成员•需求分析员: 与客户合作,确定并文档化客户需求•设计人员: 生成系统描述:系统要做什么•程序员: 编写事先指定需求的代码•测试人员: 发现错误•培训人员: 向用户说明如何使用这个系统•维护小组: 修复系统验收之后出现的错误•资料管理员: 准备和存储软件需求文档等•配置管理团队: 保持各工件之间的通信第二章1.什么是软件生命周期?主要分为哪些阶段?各个阶段的主要任务及产生的主要制品?定义:当过程是在开发软件产品时,把这种软件开发过程称为软件生命周期。
《软件工程》课程要点●每章教学课件中的“本章小结”列出了需要掌握的内容●教学过程中的例题和习题也是课程重点一、软件工程与软件过程概述1.概念:(1)软件的概念(组成成分、作用);答:计算机软件是程序、数据和相关文档的集合;用于实现计算机系统所需要的逻辑方法和控制过程(2)软件危机的含义、表现、产生原因(客观、主观)答:计算机软件开发和维护过程中遇到的一系列严重问题。
软件危机的表现:①对软件开发成本和进度的估计很不准确②已完成的软件不能满足用户需求③软件质量差④软件不可维护⑤软件没有开发文档⑥软件成本在计算机系统总成本中所占的比例逐年上升⑦软件生产率跟不上硬件的发展和计算机迅速普及的趋势与软件的特点有关(客观原因):①软件是计算机系统中的逻辑部件,缺乏“可见性”,管理和控制软件开发过程相当困难②软件在使用期间不存在机械磨损和老化问题,一旦发现错误,通常意味着修改原来的设计,因此软件难维护③软件规模庞大,程序复杂性增加,需多人分工合作(不能保证每个人完成的工作合在一起构成一个高质量的大型软件系统)与软件开发和维护的方法不正确有关(主观原因):①开发无计划②忽视软件需求分析的重要性③轻视软件维护④无过硬评测手段⑤缺乏有力的开发方法和工具⑥不重视开发文档等软件配置(3)软件工程学科包括的内容(三要素)、解决的主要问题答:(1)软件工程定义:1)软件工程是指导计算机软件开发和维护的工程学科 2)采用工程化的概念、原理、技术和方法来开发和维护软件3)将经过时间考验而证明正确的管理技术和开发技术结合起来,以较经济的手段开发出高质量的软件并有效维护它2)软件工程方法学的三要素:①方法:完成软件开发各项任务的技术方法②工具:为方法的高效运用,而提供的自动或半自动的软件支撑环境③过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤(4)软件生命周期的含义、组成阶段及各阶段主要任务答:软件生命周期:一个软件从定义、开发、运行维护,直到最终被废弃要经历一个漫长的时期,这个时期称为软件生命周期。
(1)问题定义阶段:通过调研,提出关于问题的性质、工程目标和工程规模的书面报告,并且需要得到客户的确认。
●回答“要解决的问题是什么?”●文档:问题定义报告(2)可行性研究阶段:用最小的代价在尽可能短的时间内确定问题是否能够解决。
①进一步了解用户需求②提出若干种可能的系统实现方案③分析每种方案的技术、经济、社会可行性④最终确定这项工程的可行性●回答“是否有行得通的解决方法?”●文档:可行性研究报告,项目开发计划(3)需求分析阶段:对目标系统提出完整、准确、清晰、具体的要求。
①得出经过用户确认的系统需求②用正式文档(需求规格说明)准确表达系统需求回答“系统必须做什么?”文档:需求规格说明书(4)概要设计阶段:①设计系统实现方案②设计程序的体系结构,即确定程序由哪些模块组成以及模块间的关系。
概括地回答“怎样实现目标系统?”文档:概要设计说明书5)详细设计阶段:设计实现每个模块功能所需要的算法和数据结构回答“应该怎样具体地实现这个系统?”文档:详细设计说明书(6)编码和单元测试:写出正确的、易理解、易维护的程序模块代码;测试编写出的每一个模块文档:经过测试的程序源代码、程序开发记录(模块开发卷宗)(7)综合测试阶段:通过各种类型的测试(及相应的调试)使软件达到预定的要求。
①集成测试(组装测试)。
②验收测试测试文档:测试计划、详细测试方案、实际测试结果(8)软件维护阶段:通过各种必要的维护活动使系统持久地满足用户的需要。
四类维护活动:改正性维护、适应性维护、完善性维护、预防性维护文档:软件维护申请、软件修改报告2.需理解的问题:(1)软件与程序的区别和联系?答:计算机软件是程序、数据和相关文档的集合;程序:能够完成特定功能和性能的可执行的指令序列(2)开发一个软件项目包括哪些基本的步骤?每一步骤完成哪些工作?答:(3)主要的软件过程模型(生命周期模型)有哪些?各自有什么特点?答:软件生命周期模型也称为软件过程模型,它直观地描述了把软件生命周期划分成哪些阶段及各个阶段的执行顺序主要有:瀑布模型、增量模型、螺旋模型、喷泉模型、统一软件过程。
(2)瀑布模型的特点①阶段间具有顺序性和依赖性②推迟实现的观点③阶段质量保证观点(文档驱动)瀑布模型的优点:强迫采用规范方法开发软件;严格规定了各阶段提交的文档;各阶段结束前必须经过技术审查和管理复审。
瀑布模型缺点:分析和设计阶段只考虑逻辑模型;过分依赖文档,可能导致最终的软件产品不能完全满足用户需求瀑布模型适用的软件项目:规模小、需求明确、无须维护2)快速原型模型的优点:通过原型获得准确的用户需求;通过原型积累了开发经验,软件开发时期的各阶段基本上是线性顺序过程、提高了总开发效率。
快速原型模型适用的软件项目:规模小、需求不够明确、无须维护3)增量模型的优点:①便于并行完成开发工作;②逐步提交软件产品;③软件的可维护性和可扩充性较好增量模型适用的软件项目:强调开发进度、可维护性要求高、可扩充性要求高螺旋模型是一个演化的软件过程模型,是在每个阶段之前都增加了风险分析过程的快速原型模型。
在螺旋模型中,螺旋线的每个周期对应一个软件生命周期的开发阶段。
每个阶段包括四个方面的活动:①制定计划-确定目标,选定方案,设定约束条件②风险评估-评估所选方案,识别风险,考虑如何消除风险③实施工程④评估工程-评价开发工作,提出修正建议。
使用螺旋模型需要丰富的风险评估经验和专门知识;螺旋模型适用于内部开发的大型软件项目1、喷泉模型也称为面向对象的生命周期模型2、软件开发过程阶段之间是迭代的、无间隙的对象概念贯穿整个开发过程,只用对象类及其关系表达分析、设计、实现等活动在分析、设计和编码等开发活动之间并不存在明显的边界,开发各阶段同步进行、可以提高开发效率3、各开发阶段重叠、可能随时增加新的需求和各种信息,因此喷泉模型要求严格管理文档,审核难度加大,对项目管理要求较高。
RUP首先建立整个项目的不同时间阶段,体现开发过程的动态结构,包括:初始阶段、细化阶段、构造阶段、移交阶段。
同时以内容来组织项目的活动,体现开发过程的静态结构。
RUP融入了瀑布模型的线性结构和演化模型的增量及迭代思想(3)有哪些主流的软件工程方法?答:①传统方法学(生命周期方法、结构化方法):●从时间角度对软件问题进行分解,将软件开发维护过程划分成若干阶段。
②面向对象方法学:面向对象方法学的出发点和基本原则:尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,使问题空间与实现空间在结构上尽可能一致。
(4)如何消除软件危机(如何解决软件危机?)一、概念:软件过程,软件生命周期,软件生命周期模型6、具体说明:针对不同的软件项目,应该如何选择软件生命周期模型7、你如何理解RUP的特点8、敏捷过程的主要特点和优势1.什么是软件生命周期,分哪几个阶段、各阶段的任务是什么?2.常用的软件生命周期模型有哪些?总结它们的特点。
3.谈谈下列三者之间的区别和联系:软件工程、软件过程、软件生命周期模型二、结构化分析-面向数据流的分析方法1.什么是软件需求?需求分析过程(步骤)?答:软件需求:软件系统必须符合的条件和具备的功能需求分析的任务(过程):1.准确了解用户情况和需要解决的问题:◆与用户沟通的途径:访谈、参考类似系统、快速原型技术2.对需求反复求精和细化,得出对目标系统完整、准确和具体的要求3.需求建模:对获得的需求做出抽象、即进行无歧义描述。
◆模型是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。
4.编制需求规格说明书5.进行需求分析的评审2.需求分析模型:(1)功能模型(数据流图DFD)的含义、描述符号、画法步骤及规则(2)数据模型(E-R图)的作用(3)行为模型(状态转换图)的作用(4)数据字典的作用三、结构化设计1.软件设计的任务?结构化设计与结构化分析的区别和联系?2.软件设计遵循的基本原理及规则:(1)模块化的含义、如何划分模块(降低成本、提高独立性)?(2)抽象与逐步求精的含义、二者间关系如何?(3)信息隐藏的含义(4)如何完善软件结构(深度、宽度、扇入、扇出、作用域、控制域)?3.模块独立性:(1)模块独立性含义?(2)模块独立性的度量标准:耦合的分类、含义及应用;内聚的分类、含义及应用。
4.概要设计(面向数据流的设计方法)(1)概要设计的任务?(2)数据流图的类型及特征(变换型、事务型)(3)变换分析设计方法的应用(步骤)(4)事务分析设计方法的应用(步骤)4.详细设计(过程设计)(1)详细设计的任务(2)结构化程序(设计)的特征(3)详细设计结果的描述工具:程序流程图、N-S图、PAD图、PDL、判定表一、理解以下问题:1、什么是软件需求?软件需求如何分类?2、需求分析的作用和重要性3、需求分析阶段需要完成的工作4、结构化分析模型的内容5、E-R图的内容和作用;数据流图的内容和作用;状态转换图的内容和作用;数据字典的内容和作用二、掌握以下建模技术和工具:1、使用E-R图建立软件系统的数据模型2、使用分层数据流图建立软件系统的功能模型3、使用状态转换图建立软件系统的行为模型4、使用数据字典定义结构化分析模型中的数据对象1、某高校选课系统的功能包括:教师提交开课申请,系统根据开课计划审核教师的开课申请,审核通过后向教师下发开课通知。
学生可以通过系统进行选课,首先提交选课单,系统进行审核通过后,告知学生选课结果。
教师可以查询本人任教课程的选课名单。
请使用分层数据流图描述选课系统的功能。
2、某运动会管理系统的功能为:接受来自运动员的报名单,生成运动员号码单发送给运动员,产生参赛人员报表发送给裁判。
接受来自裁判的比赛项目及成绩,产生比赛结果发送给发布台。
请用分层数据流图表示上述系统的功能。
四、软件测试1.软件测试基础(1)软件测试的含义和目的?(2)测试用例的内容(输入数据、预期输出结果)?(3)主要测试方法(黑盒测试、白盒测试)的含义?2.主要的白盒测试技术及应用-------逻辑覆盖法?基本路径测试方法?3.主要的黑盒测试技术及应用-------等价类法? 边界值分析法?4.软件测试的过程?(1)单元测试(采用的测试方法;测试内容)(2)集成测试(采用的测试方法;测试内容;模块组装策略)(3)确认测试(采用的测试方法;测试内容;α测试与β测试?)(4)辅助模块的含义及作用(驱动模块、存根模块?)一、理解以下概念:1、模块、模块化、抽象、信息隐藏;2、模块独立性、耦合、内聚;二、理解以下问题:1、软件设计阶段的任务?2、概要设计和详细设计的区别和联系?3、结构化分析为结构化设计提供了哪些信息?4、指导软件设计的基本原理和启发规则有哪些?理解这些原理的具体含义和作用。