山东大学-软件工程复习重点整理

合集下载

(完整word版)软件工程复习重点

(完整word版)软件工程复习重点

三大块内容:软件危机与软件工程传统软件开发方法面向对象方法一、软件危机与软件工程:软件、软件危机、软件生存期、软件开发模型、软件管理1、软件:软件是能够完成预定功能和性能的可执行的计算机程序+使程序正常运行所需要的数据+描述软件开发过程及其管理、程序的操作和使用的有关文档。

文档:分开发、管理、用户、维护文档,作用是记录及解决不可视性、通信与交流、管理与维护、用户服务2、软件危机a)表现:软件成本高、难于控制开发进度、软件工作量估计困难、软件质量低、软件修改维护困难b)原因:需求问题(描述不精确、理解不一致)、管理问题、方法和工具问题、软件本身的特点3、软件生存期:a)三个时期:定义时期(软件计划、需求分析)—>开发时期(软件设计、编码实现、测试)—>使用和维护时期(维护)b)六个阶段:软件计划需求分析设计编码测试使用与维护c)生命周期方法特点:顺序性、依赖性,推迟程序的物理实现、质量保证的观点(利于尽早发现错误,如阶段文档、评审)4、软件开发模型a)瀑布模型:文档驱动i.阶段划分、分而治之、控制开发过程的复杂性ii.自顶向下、由抽象到具体,顺序进行优点:规范管理开发过程、文档驱动缺点:初期系统的需求难以完全确定、文档驱动、周期长b)原型模型:i.针对:软件开发初期需求难以确定ii.基本思想:快速建立原型,完善用户需求iii.优点:用户参与、快速iv.缺点:快速弱功能、对开发环境要求高c)螺旋模型(风险驱动)d)增量模型(模块、功能驱动)e)迭代模型f)喷泉模型5、软件管理a)区别于其他工业产品生产管理的特点b)主要内容:开发计划与进度管理、文档管理、人员组织管理、成本管理、质量管理二、传统软件工程方法:a)软件计划i.问题定义ii.可行性研究1.经济可行性2.技术可行性3.法律可行性b)需求分析i.结构化分析SAii.面向数据流的分析方法1.DFD四个组成部分(表示方法、命名)2.DFD作图:需求描述DFD3.层次分解法(保持父图和其子图的平衡)4.数据字典(符号)c)软件设计i.总体设计1.模块独立性:高内聚2.作用域是控制域的子集3.单入单出4.规模、深度、宽度、扇入、扇出适当ii.传统设计方法1.面向数据流的设计方法(数据流图)a)结构化设计SD-对应有SD结构化需求分析、SP结构化实现b)DFD软件结构(层次图)i.变换设计ii.事务设计c)优缺点2.面向数据结构的设计方法a)Jackson方法b)Jackson图i.三种元素间的逻辑关系:顺序、选择、重复ii.可描述两种数据结构:数据结构、程序结构c)思想:数据结构与程序处理过程相互转换d)步骤:I/O DS对应关系Program Structure细化求精e)优缺点:i.数据入手ii.简化数据处理程序的设计iii.模块与独立性原则没有给予应有的重视iv.求提供对复杂系统设计过程的支持3.Parnas方法iii.详细设计1.结构化程序设计SPa)高效率---良结构b)三种基本控制结构、单入单出2.过程设计的工具d)实现/编码i.语言1.功能等价2.描述问题方便性有差异a)例如:OOPL---非OOPLii.程序设计风格e)软件测试i.目标ii.方法1.正确性证明2.静态测试3.动态测试a)黑盒(功能)测试i.等价类划分ii.边界值分析iii.错误推测b)白盒(结构)测试i.语句覆盖ii.判定覆盖iii.条件覆盖iv.判定—条件覆盖v.条件组合覆盖iii.步骤f)软件维护i.四种类型1.校正性2.适应性3.完善性4.预防性ii.提高可维护性的措施三、面向对象方法(Object-oriented Method)a)OOM与CM对比:区别—优点i.思维方式iv. 稳定性ii.可重用性v. 可维护性iii.大型软件b)OOSE方法i.三个阶段、五个模型、E CASE第二章.传统软件工程方法:软件计划具体任务:项目定义、可行性分析、软件计划其中:可行性分析:1、可行性研究实质:可行性研究试一次大大压缩和简化了的系统分析和设计过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计过程。

软件工程基础知识点整理版

软件工程基础知识点整理版

软件工程基础知识点整理版1.软件生命周期:软件工程将开发和维护软件的过程划分为不同的阶段,包括需求分析、设计、编码、测试、部署和维护。

这些阶段构成了软件生命周期。

2.软件需求:软件需求工程是对软件需求进行分析、规划和定义的过程。

它包括对用户需求的收集、分析和确认,以及对系统功能和性能的详细规范。

3.软件设计:软件设计是定义软件的结构和组成部分的过程。

它包括对软件系统的整体架构和各个模块的设计。

4.软件编码:软件编码是将设计好的软件系统转化为具体的程序代码的过程。

编码过程需要使用编程语言,并遵循编码规范和最佳实践。

5.软件测试:软件测试是验证软件是否满足需求规格的过程。

它包括对软件的功能、性能和安全性进行测试,并发现和修复软件中的错误。

6.软件配置管理:软件配置管理是对软件开发过程中各个组成部分的控制和跟踪。

它包括版本控制、配置项管理和变更控制等活动。

7.软件质量保证:软件质量保证是确保软件达到高质量标准的一系列过程和活动。

它包括质量计划、质量评审、质量度量和缺陷管理等。

8.软件项目管理:软件项目管理是规划、组织和控制软件开发和维护活动的过程。

它包括项目计划、进度管理、团队管理和风险管理等。

9.软件工具和环境:软件工程使用各种工具和环境来辅助软件开发和维护。

这些工具包括集成开发环境、版本控制工具、测试工具和项目管理工具等。

10.软件工程伦理:软件工程伦理是软件工程师在工作中需要遵循的道德准则和原则。

它包括保护用户隐私、遵守知识产权法律和保持专业水平等方面。

以上是软件工程的一些基础知识点,但软件工程领域非常广泛,还有很多其他的知识点值得深入学习和研究。

尽管有一些基础知识点可以帮助我们理解和实践软件工程的基本原理和方法,但要成为一名优秀的软件工程师,还需要不断学习和提升自己的技能和知识。

软件工程复习要点

软件工程复习要点

软件工程复习要点软件工程是一门研究如何高效地开发、维护和管理软件的学科。

对于学习软件工程的同学来说,熟练掌握复习要点是非常重要的。

本文将为大家总结并分享软件工程的复习要点,希望能够帮助大家更好地掌握和应用软件工程知识。

一、软件开发过程软件开发过程是指从需求分析到交付软件产品的整个过程。

常用的软件开发过程模型有瀑布模型、迭代模型、敏捷模型等。

要理解和掌握软件开发过程,需要熟悉各个阶段的任务和活动,包括需求分析、设计、编码、测试、交付等环节。

1. 需求分析:确定用户需求,明确软件系统的功能和性能要求。

2. 设计:根据需求分析的结果,进行软件系统的整体设计和详细设计。

3. 编码:将设计好的软件系统转化为具体的实现代码。

4. 测试:对编码完成的软件系统进行测试,发现和纠正其中的问题。

5. 交付:经过测试合格的软件系统交付给用户使用。

二、软件工程方法与工具为了提高软件开发的效率和质量,软件工程使用了一系列方法与工具。

掌握软件工程方法与工具的使用对于软件开发人员来说是非常重要的。

1. 需求管理工具:用于帮助开发团队和用户共同管理和追踪需求,常用的有JIRA、TFS等。

2. 设计工具:用于辅助进行软件系统的设计,常用的有UML工具、Axure等。

3. 编码工具:用于提高编码效率和质量,常用的有IDE集成开发环境、代码托管平台等。

4. 测试工具:用于自动化测试和代码覆盖率分析,常用的有Junit、Selenium等。

5. 配置管理工具:用于管理和控制软件系统的配置,常用的有Git、SVN等。

三、软件质量保证软件质量保证是指通过一系列的措施和活动来确保软件产品的质量。

在软件工程中,软件质量保证是一个非常重要的环节,它直接关系到软件系统能否满足用户的需求。

1. 静态质量保证:通过代码审查、代码规范等手段来预防和发现问题。

2. 动态质量保证:通过测试等手段来发现和解决软件系统中的问题。

3. 配置管理:通过配置管理工具来确保软件系统配置的正确性和一致性。

软件工程知识点总结

软件工程知识点总结

软件工程知识点总结软件工程知识点总结1.软件工程概述1.1 软件工程定义1.2 软件工程的重要性1.3 软件生命周期2.需求分析与规格说明2.1 需求分析过程2.2 需求获取方法2.3 需求规格说明的要素2.4 需求跟踪与变更管理3.软件设计3.1 软件设计原则3.2 结构化设计方法3.3 面向对象设计方法3.4 数据库设计3.5 用户界面设计4.软件开发4.1 编码规范4.2 编程语言选择4.3 软件构建工具4.4 软件测试4.5 版本控制5.软件项目管理5.1 项目计划与进度管理 5.2 软件开发过程模型 5.3 团队协作与沟通5.4 风险管理6.质量保证与软件维护6.1 质量保证方法6.2 软件维护类型6.3 软件维护活动6.4 软件退役与替换附件:________本文档涉及的附件(请附上相关文档、图表等)法律名词及注释:________1.软件工程:________指将系统化的、规范化的、可量化的方法应用于软件的开发、运行和维护的工程学科。

2.需求分析:________确定用户对软件系统需要的功能、性能和约束等方面的要求,并以此为基础进行系统的分析和设计。

3.软件设计:________根据需求分析的结果,制定软件系统的总体结构和各组成部分的详细设计方案。

4.软件开发:________根据软件设计的方案,进行编码和调试,最终可执行的软件系统。

5.软件项目管理:________对整个软件项目进行计划、协调、控制和有效地管理,确保项目顺利完成。

6.质量保证:________通过不同的方法和技术,提高软件产品的质量,确保其满足用户的需求和要求。

7.软件维护:________对已投入使用的软件进行修复性、适应性、完善性和预防性等各方面的修改和改进。

山东大学-软件工程复习重点整理

山东大学-软件工程复习重点整理

第一章1.1软件工程〔SE〕的定义、向、作用:SE:在将有关软件开发与应用的概念科学体系化的根底上,研究如有方案、有效率、经济的开发和利用能在就算机上正确运行的软件的理论和技术的工程法学,一些开发和维护软件的法、过程、原那么。

是一个系统工程,既有对技术问题的分析与综合,也有对开发过程和参与者的管理。

SE的向:面向对象模式,构造化模式,基于过程的模式等SE的作用:付出较低的开发本钱,到达要求的软件功能,取得较好的软件性能,开发的软件易于移植,需要较低的维护费用,能按时完成开发工作,及时交付使用。

1.2开发模式:软件开发的全部过程,活动和任务的构造框架,它能直观的表达的表达软件开发全过程,明确要完成的主要活动,任务和开发策略。

1.3说明错误、故障和失效的含义及联系〔并举例〕:错误:是在软件生产过程中人为产生的错误〔需求说明中的错误,代码中的错误〕故障:是在功能实现过程中产生的问题;是错误导致的结果,是在软件中一个错误的表现〔一个错误可能产生多个缺陷,静态存在的〕失效:是相对于系统指定行为的偏离,系统违背了它应有的行为〔动态存在的〕联系:当一个开发者编写程序时,会在代码中出现错误。

当这个程序被编译或集成到一个系统中时,系统就存在故障。

当你运行这个系统时,可能会导致失效,即人们产生错误,故障是错误的结果〔部观角:从开发者的角度对待问题〕,当故障执行时出现失效〔外部视角:从用户角度看到的问题〕。

并不是所有的错误会导致故障,并非每个缺陷都对应相应的失败。

1.4软件质量应从哪几个面衡量,论述之:〔1产品的质量〕〔2过程的质量〕〔3商业环境背景下的质量〕〔1〕产品的质量:用户从失败的数目和类型等外部特征进展评价,如果软件具有足够的功能并且易于学习和使用,用户就断定软件是高质量的;开发者从缺陷的数目和类型等部特征来作为产品质量的依据。

〔2〕过程的质量:有很多过程都会影响到最终的产品质量,只要有活动出了过失,产品的质量就会受到影响;开发和维护过程的质量与产品的质量是同等重要的。

软件工程基础知识点总结(2023版)

软件工程基础知识点总结(2023版)

软件工程基础知识点总结软件工程基础知识点总结
1.软件工程概述
1.1 软件工程定义
1.2 软件工程的历史与发展
1.3 软件工程的特点和目标
1.4 软件工程的生命周期
2.软件需求工程
2.1 软件需求定义和分类
2.2 需求获取与分析
2.3 需求规格说明
2.4 需求验证和确认
3.软件设计
3.1 软件设计原则和概念
3.2 结构化设计方法
3.3 面向对象设计
3.4 软件设计工具和标记语言
4.软件开发
4.1 编码规范与规范检查
4.2 编程技术与方法
4.3 集成开发环境(IDE)和调试工具
4.4 软件测试和调试
5.软件项目管理
5.1 软件项目规划和组织
5.2 项目进度和资源管理
5.3 项目风险管理
5.4 质量管理与配置管理
6.软件工程度量与评估
6.1 软件度量概述
6.2 软件度量指标与度量方法
6.3 软件质量评估与改进
7.软件维护与演化
7.1 软件维护概述
7.2 维护过程与维护方法
7.3 软件重构与演化
8.软件工程的伦理和专业责任
8.1 软件工程的伦理问题
8.2 软件工程的专业责任
附件:
本文档涉及的法律名词及注释:
1.版权:一种法律保护措施,确保作品的原创性和独立性。

2.知识产权:指由人们的智能活动所创造的权利,包括专利权、著作权等。

3.商标:用以区别商品或服务来源的记号,被注册后获得权益
保护。

4.隐私保护:保护个人信息和隐私不被非法或未经授权的使用、泄漏、外传等。

软件工程期末复习重点

软件工程期末复习重点

1.软件危机的介绍在计算机软件的开发和维护过程中所遇到的一系列严重问题。

2.产生软件危机的原因与软件本身特点有关:软件开发与维护的方法不正确有关:3.消除软件危机的途径4.软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。

5.软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。

这个时期的工作通常又称为系统分析,由系统分析员负责完成。

软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。

6.开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。

其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。

7.维护时期的主要任务是使软件持久地满足用户的需要。

8.软件生命周期每个阶段的基本任务:问题定义、可行性研究,需求分析,总体设计,详细设计,编码和单元测试,综合测试。

9.常用软件模型区别原理:(1)瀑布模型:按照传统的瀑布模型开发软件,有下述的几个特点。

a)阶段间具有顺序性和依赖性:两重含义:段的输出文档正确,后一阶段的工作才能获得正确的结果。

①必须等前一阶段的工作完成之后,才能开始后一阶段的工作;②前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶b) 推迟实现的观点瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现。

c)质量保证的观点:软件工程的基本目标是优质、高产。

为了保证所开发的软件的质量,在瀑布模型的每个阶段都应坚持两个重要做法。

每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。

每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。

软件工程基础知识点总结

软件工程基础知识点总结

软件工程基础部分知识点总结知识点一软件工程的基本概念1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合.1程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令语句序列.2数据是使程序能够正常操作信息的数据结构.3文档是与程序开发、维护和使用有关的图文资料.国标GB计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据. 2、软件特点:1软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分;2软件的生产与硬件不同,它没有明显的制作过程;3软件在运行、使用期间不存在磨损、老化问题;4软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;5软件复杂性高,成本昂贵;6软件开发涉及诸多的社会因素3、软件的分类:按照功能可以分为:应用软件、系统软件、支撑软件或工具软件1应用软件是为解决特定领域的应用而开发的软件.2系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件.3支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件.4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题. 软件危机主要体现在以下几个方面:①软件开发的实际成本和进度估计不准确②开发出来的软件常常不能使用户满意③软件产品的质量不高,存在漏洞,需要经常打补丁④大量已有的软件难以维护⑤软件缺少有关的文档资料⑥开发和维护成本不断提高,直接威胁计算机应用的扩大⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长5、软件工程:此概念的出现源自软件危机.软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科.1研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统高质量是指错误率低、好用、易用、可移植、易维护等.2软件工程的三个要素:方法、工具和过程.①方法:完成软件工程项目的技术手段;②工具:支持软件的开发、管理、文档生成;③过程:支持软件开发的各个环节的控制、管理.3软件工程的核心思想:把软件产品看作是一个工程产品来处理.知识点二软件的生命周期1、软件生命周期概念:将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期.2、软件生命周期一般划分为定义、开发和维护3个阶段:1定义阶段:可行性研究、需求分析2个阶段;软件定义阶段:包括制定计划和需求分析.①制定计划:确定总目标;可行性研究;探讨解决方案;制定开发计划.②需求分析:对待开发软件提出的需求进行分析并给出详细的定义.方法:1结构化需求分析方法;2面向对象的分析方法.任务:导出目标系统的逻辑模型,解决“做什么”的问题.步骤:需求分析一般分为需求获取、需求分析、编写需求规格说明书和需求评审四个步骤进行.2开发阶段:概要设计、详细设计、编码实现和测试4个阶段;①软件设计:分为概要设计和详细设计两个部分.②软件实现:把软件设计转换成计算机可以接受的程序代码.③软件测试:在设计测试用例的基础上检验软件的各个组成部分.3维护阶段:使用、维护、退役阶段.软件运行维护阶段:软件投入运行,并在使用中不断地维护,进行必要的扩充和删改.软件生命周期中所花费最多的阶段是软件运维护阶段.4软件工程原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性.5软件工具就是帮助开发软件的软件.它们对提高软件生产率,促进软件生产的自动化都有重要的作用.6软件开发环境或称软件工程环境是全面支持软件开发全过程的软件工具的集合,这些软件工具按照一定的方法和模式组合起来,共同支持软件生命周期内的各个阶段和各项任务的完成.知识点三软件设计基本概念1、软件工程过程:问题定义——可行性研究——需求分析——软件设计——软件编码——软件测试——软件维护2、软件设计分为总体设计和详细设计1总体设计目的:要解决的问题是“怎样实现目标系统”任务:确定软件的总体结构,进行模块划分,确定每个模块的功能、接口及模块之间的调用关系,并对全局数据结构进行设计,同时产生概要设计说明书2详细设计目的:要解决的问题是“应该怎样具体实现目标系统”任务:在概要设计的基础上,设计每个模块实现的细节及对局部数据进行设计包括模块的数据结构和所需的算法,同时产生详细设计说明书3、软件编码目的:产生能在计算机上执行的程序任务:根据系统的要求和开发环境,选用合适的程序设计语言,把详细设计的结果翻译成用该程序设计语言编写的程序代码源程序4、软件测试是为了发现程序中的错误而执行程序的过程目的和任务:通过在计算机上执行程序来尽可能多地发现软件产品中的错误和缺陷,并改正程序中的错误,以保证程序的可靠运行5、软件维护阶段是长期的过程,因为,经过测试的软件还可能有错,用户的要求还会发生变化,软件运行的环境也可能变化等等.因此,交付使用的软件仍然需要继续排错、修改和扩充,这就是软件维护.软件维护的目的是满足用户对已开发产品的性能与运行环境不断提高的需要,进而达到延长软件的寿命软件维护就是在软件交付使用之后,为了改正错误或满足新的需要而修改软件的过程.软件维护的类型有如下几种:1改正性维护:诊断和改进错误的过程.2适应性维护:为与变化的环境适当配合而进行的修改软件的活动.3完善性维护:为了满足用户提出的增加新功能或修改已有功能的建议而进行维护.4预防性维护:为了改进未来的可维护性和可靠性.软件开发时期要完成设计和实现两大任务,其中设计任务用需求分析和软件设计两个阶段完成,实现任务用编码和测试两个阶段完成.开发任务完成的好与坏,关系到软件产品的质量,完成开发任务的关键是选择好的软件开发方法.目前,软件开发方法主要有结构化开发方法和面向对象开发方法知识点4软件设计的基本原理软件设计的基本原理包括:抽象、模块化、信息隐蔽和模块独立性.1、模块化:指解决问题时自顶向下的方法逐层把软件系统划分成若干个模块的过程2、抽象:认识复杂过程中使用的思维工具,即抽出事务的本质的共同的特性而暂不考虑它的细节和其他因素.3、信息隐蔽:旨在设计和确定模块式的时候,是的一个模块内包含的信息,对于不需要这些信息的其他模块来说不可访问4、模块独立性:指每个模块只完成系统要求的独立的功能,并且与其他模块联系最少且接口简单模块的耦合性和内聚性是衡量软件的模块独立性的两个定性指标.1内聚性:是对模块功能强度的度量,即对一个模块内部各个元素语句之间、程序段间彼此结合的紧密程度的度量.2耦合性:是模块间互相连接的紧密程度的度量.模块之间联系越紧密,其耦合性就越强,模块的独立性则越差.一个设计良好的软件系统应具有高内聚、低耦合的特征.在结构化程序设计中,模块划分的原则是:模块内具有高内聚度,模块间具有低耦合度.软件设计有两个步骤:1概要设计又称结构设计是将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;2详细设计是确定每个模块的实现算法和局部数据结构,通过对结构表示进行细化,得到软件的详细数据结构和算法.知识点5 结构化分析方法结构化方法的软件开发过程法.2、结构化分析方法的常用工具:数据流图、数据字典、结构化语言、判定树、判定表3、SA的基本步骤如下:①自顶向下对系统进行功能分解,画出分层的数据流图②由后向前定义系统的数据和加工,编制数据字典和加工说明③写出需求规格说明书SRS4、数据流图是以图形的方式描绘数据在软件系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型. 数据流图由数据流、加工又称数据处理、数据存储又称文件、数据源点或终点四种基本成分组成.数据流图简称DFD图形元素:①数据流:是数据在系统内传播的路径.使用箭头代表数据的流向,数据名称标在箭头的边上②加工:输入数据经过加工变换产生输出.使用圆框代表加工③数据存储:指处理过程中存放各种数据.使用双杠或单杠表示数据文件或数据库.文件与加工之间用箭头线连接,单向表示只读或只写,双向表示可读可写④数据源点或终点:指软件系统外部环境中的实体包括人员、组织或其他软件系统,统称为外部实体.使用方框表示数据的源点和终点5、建立数据流图的步骤:第一步:由外向里:先画系统的输入输出,然后画系统的内部.第二步:自顶向下:顺序完成顶层、中间层、底层数据流图.第三步:逐层分解.6、DFD图的数据流可分为两种类型:变换流和事务流变换流:信息沿着输入通路进入系统,同时将信息的外部形式转换成内部形式,通过变换中心处理之后,再沿着输出通路转换成外部形式输出事务流:信息沿着输入通路到达一个事务中心,事务中心根据输入信息的类型在若干个动作序列中选择一个来执行,这种信息流称为事务流7、数据字典就是用来定义数据流图中的各个成分的具体含义和详细的描述.它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分.是结构化分析方法的核心. 数据字典是为分析人员查找数据流图中有关名字的详细定义而服务的.数据字典有四类条目:数据流、数据项、数据存储和基本加工.8、SD方法的中心任务就是把用DFD图表示的系统分析模型方便地转换为软件结构的设计模型.识点6软件测试的目的和准则1、软件测试是保证软件质量的重要手段,其主要过程涵盖了整个软件生命周期的过程,包括需求定义阶段的需求测试、编码阶段的单元测试、集成测试以及后期的确认测试、系统测试、验证软件是否合格、能否交付给用户使用.软件测试就是使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别.2、软件测试的原则:1所有测试都应追溯到需求2严格执行测试计划,排除测试的随意性3避免由软件开发人员测试自己的程序4充分注意测试中的群集性现象5除了很小的程序外,“彻底”的穷举测试是不可能的6妥善保存测试计划、测试用例、出错统计和最终的分析报告,为维护提供方便软件测试的每一次测试都需要准备好一些测试数据,与被测程序一起输入到计算机中执行;知识点7软件测试的方法和实施1、测试是对软件规格说明、设计和编码的最后的复审,所以软件测试贯穿在整个软件开发期的全过程.对于软件测试方法和技术,可以从不同的角度加以分类.①从是否需要执行被测软件的角度,软件测试分为静态分析和动态测试②按照功能划分,动态测试又分为白盒测试和黑盒测试2、静态测试一般是指人工评审软件文档或程序,借以发现其中的错误,由于被评审的文档或程序不必运行,所以称为静态的.静态测试包括代码检查、静态结构分析、代码质量度量等.3、动态测试是指通过运行软件来检查软件中的动态行为和运行结果的正确性,也就是常说的上机测试.动态测试一般包括两个基本要素:被测程序和测试数据4、测试能否发现错误取决于测试用例的设计.动态测试的设计测试用例的方法一般分为黑盒测试和白盒测试.①白盒测试也称结构测试,它与程序内部结构相关,要利用程序结构的实现细节设计测试用例,它涉及程序风格、控制方法、源程序、数据库设计和编码细节.②黑盒测试是测试者已经知道被测程序的功能,而对程序内部的逻辑结构和处理过程完全不用考虑,只是对它的每一个功能进行测试,将测试后的结果与期望的结果进行分析比较,检查程序的功能是否符合规格说明书的要求.黑盒测试是在程序接口进行的测试5、测试用例是由测试数据和期望结果组成.设计测试用例的目的就是用尽可能少的测试数据,达到尽可能大的程序覆盖面,发现尽可能多的软件错误和问题6、用白盒法设计测试用例常用以下几种技术:①语句覆盖②判定覆盖③条件覆盖④判定/条件覆盖⑤条件组合覆盖⑥路径覆盖7、用黑盒法设计测试用例常用以下几种技术:①等价类划分法②边界值分析法③错误推测法④因果图法8、软件测试的实施①单元测试:是对每一个编制好的模块进行测试,其目的在于发现和排除各模块内部可能存在的差错及详细设计中产生的错误.进行单元测试时,根据程序的内部结构设计测试用例,主要采用白盒测试法②集成测试.是在单元测试的基础上,将所有模块按照设计要求组装成为系统而进行的测试,它的任务是检查模块间的接口和通信、各子功能的组合能否达到预期要求的功能、全程数据结构是否有问题等.集成测试主要发现设计阶段产生的错误,通常采用黑盒测试法 .集成测试时,将各个模块组装成系统的方法有:非增量组装方式是先分别对每个模块进行单元测试,再把所有模块按设计要求组装在一起进行测试,最终得到所要求的软件增量组装方式是把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试③确认测试.确认测试是在集成测试通过后,在用户的参与下进行确认测试.这时通常使用实际数据进行测试,以验证系统是否能满足用户的实际需要.它的任务就是以需求规格说明书作为依据来验证软件的性能、功能及其他特征是否与用户的要求一致,通常采用黑盒测试④系统测试.系统测试是在更大范围内进行的测试.系统测试是把通过确认测试后的软件与计算机硬件、外设、某些支持软件、数据和人员等结合在一起,在实际运行环境下,对计算机系统进行的一系列集成测试和确认测试知识点八程序的调试1、调试也称排错或纠错.2、程序调试的任务:诊断和改正程序中错误.软件测试贯穿整个生命周期,调试主要在开发阶段.3、程序调试的基本步骤:1错误定位; 2纠正错误; 3回归测试.4、对软件主要的调试方法可以采用:1强行排错法. 2回溯法. 3原因排除法.5、软件调试可分为静态调试和动态调试.1静态调试就是指对源程序进行分析,然后确定可能出错的地方并进行排错.2动态调试是指对程序的运行进行跟踪并观察其出错点,然后进行排错.。

软件工程期末复习必备知识点

软件工程期末复习必备知识点

一、概念解释1.软件:是程序,数据结构和文档的集合,用于实现系统所需要的逻辑方法、过程和控制。

2.软件危机:是软件开发和维护过程中所遇到的一系列严重的问题。

3.软件周期:是从软件从定义,开发,运行维护到废弃时经历的一个漫长的时期。

4.需求分析:是发现,求精,建模,规格说明和复审的过程。

5,概要设计:通过仔细分析需求规格说明,确定完成系统的模块以及各模块之间的关系,设计出完成预定功能的模块(软件结构),并建立借口。

详细设计:设计完成系统的模块内的算法和数据结构。

6.模块化:将软件划分成可以独立命名的且可以独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能来满足用户的需求。

信息隐藏:一个模块内包含的信息对于一个不需要这些的模块来说是不可访问的。

7.耦合:是一个软件结构内的每个模块互连程度的度量。

内聚:一个模块间各个元素之间的紧密的程度。

8.类:是对有相同数据和相同操作的一组相似对象的抽象描述。

对象:是客观世界中事物的抽象表示,其属性(状态、数据)和相关操作(行为、方法或服务)的封装体;对象之间靠消息传递相互作用。

9.消息:是对象之间相互通信的机制,是某个对象执行其操作的规格说明。

消息传递:一个对象向另一个对象发送消息时,接收消息的对象经过解释、给予响应,这种对象之间进行通信的机制成为消息传递。

10.继承:继承是子类(新类)自动的共享父类(已有类)中定义的数据的操作的机制。

子类可以继承父类的属性和操作;同时子类可以定义自己独有的属性和操作。

子类复用父类的定义,而不修改父类。

继承具有传递性。

多态性:在一个类层次中,不同对象对相同消息做出不同的响应。

11.软件重用:是指同一事物不做修改或者稍加修改就可多次重复使用,软件重用是降低软件开发成本,提高软件开发生产率和质量的有效途径。

12.软件测试:根据软件开发的规格说明和程序的内部结构而设计的一个测试用例,利用这些测试用例去运行程序以发现设计和程序错误的过程。

软工复习要点

软工复习要点

软工复习要点软件工程是现代计算机科学的重要分支,致力于开发高质量的软件系统。

在软件工程的学习过程中,掌握并熟悉相关的复习要点是非常重要的。

本文将总结软件工程的复习要点,帮助读者更好地准备考试,并取得好的成绩。

一、软件生命周期1. 需求分析阶段- 需求获取:通过面谈、问卷调查等方式获取用户需求。

- 需求分析:对收集到的需求进行分析、整理和规格说明。

- 需求验证:与用户确认需求是否准确并理解一致。

2. 设计阶段- 概要设计:定义系统的总体结构和模块划分,确定系统的主要功能。

- 详细设计:对每个模块进行详细设计,包括定义数据结构、算法等。

3. 编码阶段- 编写程序:将设计的模块转化为具体的编程代码。

- 单元测试:对每个模块进行测试,确保代码的正确性。

4. 测试阶段- 集成测试:将各个模块进行整合,进行系统级别的测试。

- 系统测试:对整个系统进行测试,检查系统是否满足预期功能和性能。

5. 运维阶段- 安装部署:将软件部署到实际应用环境中。

- 系统维护:对已部署的软件进行维护和更新。

二、软件开发过程模型1. 瀑布模型:按照线性顺序依次完成各阶段的开发流程。

2. 增量模型:将开发过程划分为多个增量,逐步迭代开发。

3. 原型模型:通过快速开发原型来验证需求和设计方案。

4. 敏捷模型:强调快速响应变化需求的开发方法。

三、软件需求工程1. 需求分类:功能需求和非功能需求的划分和描述。

2. 需求获取:通过场景分析、访谈、面谈等方式收集用户需求。

3. 需求分析:对需求进行整理、归类和建模,明确需求的范围和边界。

4. 需求规格说明:使用工具(如用例图、活动图)对需求进行形式化的描述和建模。

5. 需求验证:与用户进行需求确认和变更管理,保证需求的正确性和一致性。

四、软件设计1. 结构设计:确定软件的整体结构和模块之间的关系。

2. 数据设计:定义数据模型和数据库的结构。

3. 接口设计:定义模块间的接口,确保模块之间的良好交互。

《软件工程》要掌握的重点

《软件工程》要掌握的重点

《软件工程》要掌握的重点是:1、结构化分析(SA方法)的基本概念和基本方法,特别是系统流程图、数据流图、数据字典、ER模型的掌握和应用。

2、结构化设计(SD方法)的基本概念和基本方法,包括总体设计与详细设计的各种工具和方法,如软件结构图、NS图、PAD图、判定表、判定树、PDL语言的掌握和应用。

3、软件测试的基本概念和方法,包括黑盒测试(等价类划分、错误推测、边界值分析)和白盒测试(逻辑覆盖、基本路径)各种方法的掌握和应用。

4、软件维护的基本概念。

5、面向对象方法的基本概念。

第一章1.软件的定义2.什么是软件危机?典型表现及产生原因3.软件工程定义。

软件工程的基本原理4.软件工程方法学3要素5.什么是软件的生命周期?各阶段的基本任务是什么?6.瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型各自的特点第二章1.可行性研究的目的与任务2.系统流程图的基本思想3.数据流图的基本思想;数据流图的四个要素4.数据流图的画法5.什么是数据字典。

数据字典的编写方法6。

投资回收期、纯收入第三章1.需求分析的任务2.获取需求的方法。

简易的应用规格说明技术。

3.需求分析过程建立的三种模型4.从哪些方面验证软件需求的正确性。

第五章1.总体设计的任务2.设计原理3.什么是内聚、耦合,与模块独立性的关系。

内聚类型、耦合类型4.结构图的深度、宽度、扇出和扇入5.模块的作用域与控制域的关系6.面向数据流的设计方法基本思想。

变换分析过程第六章1.人机界面设计应考虑的问题。

2.系统响应时间的两个属性3.程序流程图、盒图、PAD图、判定表和判定树的画法4.流图的画法、环形复杂度的计算第七章1。

软件测试的目标、测试原则、测试步骤2。

什么是白盒法?什么是黑盒法?3.单元测试的方法、测试重点,需要编写的辅助程序4.渐增式测试与非渐增式测试的比较5.确认测试的目标、依据、测试方法6.用逻辑覆盖法、基本路径测试法、黑盒测试法设计测试用例第八章1.软件维护的定义、维护的类型2、结构化维护与非结构化维护3.决定软件可维护性的因素。

软件工程复习知识要点

软件工程复习知识要点

1 软件和软件工程概念软件的组成部分之一;在软件开发中,编程只是软件开发过程的一个阶段。

2.在结构化程序设计时代,程序最小的单位是函数及子程序,程序和数据是分别的。

程序的最小单位是类。

3.软件的特性:形态特性、智能特性、开发特性、质量特性、生产特性、管理特性、环境特性、维护特性、废弃特性、应用特性。

4.软件的分类:系统软件;应用软件;支撑软件;可复用软件。

5.什么是软件工程?(课后题)软件工程是指导计算机软件开发和维护的工程学科。

接受工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。

6.可以用功能性、牢靠性、易用性、效率、可维护性和可移植性六个特性衡量软件的质量。

功能性是指软件所实现的功能达到它的设计规范和满意用户需求的程度。

可移植性是指软件从某一环境转移到另一环境时所作努力得程度。

7.软件生存期由软件定义、软件开发和运行维护三个时期组成。

开发时期通常由概要设计、详细设计、编码和测试四个阶段组成。

开发过程中的典型文档包括:项目支配、软件测试支配、软件设计说明书、用户手册。

8.需求分析的基本任务?(1)建立分析模型,了解系统的各种需求微小环节。

(2)基于分析结果,编写出软件需求规格说明或系统功能规格说明,确认测试支配和初步的系统用户手册,并提交管理机构进行分析评审。

2 软件工程方法和工具1.面对对象方法的动身点和基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类相识问题和解决问题的方法和过程,从而使描述问题的问题空间和其解空间在结构上尽可能一样。

2.形式化方法的主要特点是:(课后题)(1) 软件需求规格说明被细化为用数学记号表达的详细的形式化规格说明;(2) 设计、实现和单元测试等开发过程由一个变换开发过程代替。

通过一系列变换将形式的规格说明细化成为程序。

3.面对对象 = 对象 + 类 + 继承 + 消息通信。

软件工程期末复习知识点整理

软件工程期末复习知识点整理

复习整理一、绪论1.软件的定义软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。

(软件=程序+文档)2.软件工程的定义●是指导计算机软件开发和维护的一门工程学科;●采用工程化的原理与方法对软件进行计划、开发和维护;●把证明正确的管理技术和最好技术综合运用到软件开发中;●研究经济地开发出高质量的软件方法和技术;●研究有效维护软件的方法和技术。

3.软件危机的概念,及出现的原因软件开发技术的进步未能满足发展的要求。

在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。

产生原因:⑴软件规模越来越大,结构越来越复杂⑵软件开发管理困难而复杂。

⑶软件开发费用不断增加。

⑷软件开发技术落后。

⑸生产方式落后,仍采用手工方式。

⑹开发工具落后,生产率提高缓慢。

4.三种编程范型的特点(1) 过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构+算法;着眼于程序的过程和基本控制结构,粒度最小(2) 面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对象,粒度比较大(3) 基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合整个领域的类对象,粒度最大二、软件生存周期与软件过程1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动●定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期●目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。

●主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护(P19)2、软件生命周期划分为哪几个阶段软件生命周期分为三个时期八个阶段:●软件定义:问题定义、可行性研究;●软件开发:需求分析、概要设计、详细设计、编码、测试;●软件运行:软件维护3、瀑布模型的特点和缺陷特点:线性模型,每一阶段必须完成规定的文档(阶段间的顺序性和依赖性)优点:●可强迫开发人员采用规范化的方法。

软件工程期末复习要点归纳总结

软件工程期末复习要点归纳总结

软件工程期末复习要点归纳总结软件工程是指在软件开发的全过程中,应用工程的原理、方法和经验对软件进行开发、运行和维护的过程。

在软件工程这个学科中,包括了软件需求、软件设计、软件构建、软件测试、软件维护等多个阶段和技术。

下面是软件工程期末复习的要点归纳总结:1.软件开发过程模型-瀑布模型:各个阶段按顺序进行,每个阶段完成后不可回溯。

-增量模型:将软件划分为多个增量,每个增量独立进行开发。

-螺旋模型:将软件开发过程分为多个循环,每个循环都包括需求分析、设计、开发和测试。

-迭代模型:将软件开发过程分为多个迭代,每个迭代包括需求分析、设计、开发和测试。

2.软件需求工程-需求获取:通过需求采集、用户访谈、问卷调查等方式获取需求。

-需求分析:对需求进行整理、分类、抽象和规范化,得出系统需求。

-需求规格说明:将需求规格化为需求文档,包括用例、用例图、领域模型等。

-需求验证:通过评审、原型验证等方式验证需求的正确性和完整性。

3.软件设计-结构化设计:通过模块化、自顶向下、逐步求精的方式进行软件设计。

-面向对象设计:通过类、继承、多态等面向对象的概念进行软件设计。

-架构设计:设计软件的整体框架和组件之间的关系。

-接口设计:设计软件的各个组件之间的接口。

4.软件构建-编码:根据设计文档进行编码,可以使用编程语言、集成开发环境等工具。

-调试:通过调试工具,对程序进行调试,找出存在的问题并进行修复。

-集成:将各个模块集成到一起,进行整体测试,确保功能的正确性。

-部署:将软件部署到目标环境中,确保软件能够正常运行。

5.软件测试-单元测试:对软件的最小单元进行测试,如函数、方法等。

-集成测试:对软件的各个模块进行整合测试,确保模块之间的协调性。

-系统测试:对整个系统进行测试,确保系统满足用户需求。

-验收测试:由用户对软件进行测试,验证软件是否满足用户需求。

6.软件维护-改正性维护:修复软件中的错误。

-适应性维护:根据用户需求,对软件进行功能扩展。

软件工程期末考试重点整理

软件工程期末考试重点整理

软件工程的基本概念:研究软件生产和软件管理的工程学科。

主要内容:软件工程的基本概念。

软件开发模型。

软件开发各阶段的任务、技术、方法。

传统方法、面向对象方法。

软件工程管理。

软件质量保证。

软件工程环境。

软件工程三要素:方法、工具和过程什么是软件生命周期?定义一个软件从开始计划起,到废弃不用为止,称为软件的生存周期。

软件生存周期包括:计划(主要任务:调查和分析,调查用户需求,分析新系统的主要目标,分析开发该系统的可行性)、开发(主要任务:系统分析、设计和实现)与运行(主要任务:做好软件维护,使软件在整个生存周期内保证满足用户的需求和延长使用寿命)3个时期,每一时期又可细分为若干更小的阶段。

将软件开发过程划分生存周期的目的:把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够简化每一步的工作内容,使因为软件规模增长而大大增加了的软件复杂性变得较易控制和管理需求分析的主要任务是1通过对问题及其环境的理解、分析和综合,建立分析模型;2在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求不大出来。

需求分析的步骤通过对现实环境的调查研究,获得当前系统的具体模型;去掉具体模型中的非本质因素,抽象出当前系统的逻辑模型;分析当前系统与目标系统的差别,建立目标系统的逻辑模型;对目标系统进行完善和补充,并写出完整的需求说明;对需求说明进行复审简述衡量模块独立性的两个准则。

选择程序设计语言的原则有哪些?简述你对程序设计风格的理解。

程序设计阶段的特点:生产方式:个体手工劳动。

生产工具:机器语言、汇编语言。

开发方法:追求编程技巧,追求程序运行效率。

程序难读、难懂、难修改。

硬件特征:价格贵、存储容量小、运行可靠性差。

软件特征:只有程序、程序设计概念,不重视程序设计方法。

“软件测试不能证明程序的正确性”,谈谈你对这句话的理解。

“软件维护是软件运行时期的工作,与软件开发各阶段联系较少,该阶段工作是简单的,难度也要小得多。

山东大学-软件工程复习重点整理

山东大学-软件工程复习重点整理

第一章1.1软件工程(SE)的定义、方向、作用:SE :在将有关软件开发与应用的概念科学体系化的基础上,研究如何有计划、有效率、经济的开发和利用能在就算机上正确运行的软件的理论和技术的工程方法学,一些开发和维护软件的方法、过程、原则。

是一个系统工程,既有对技术问题的分析与综合,也有对开发过程和参与者的管理。

SE的方向:面向对象模式,结构化模式,基于过程的模式等SE的作用:付出较低的开发成本,达到要求的软件功能,取得较好的软件性能,开发的软件易于移植,需要较低的维护费用,能按时完成开发工作,及时交付使用。

1.2开发模式:软件开发的全部过程,活动和任务的结构框架,它能直观的表达的表达软件开发全过程,明确要完成的主要活动,任务和开发策略。

込说明错误、故障和失效的含义及联系(并举例):错误:是在软件生产过程中人为产生的错误(需求说明中的错误,代码中的错误)故障:是在功能实现过程中产生的问题;是错误导致的结果,是在软件中一个错误的表现(一个错误可能产生多个缺陷,静态存在的)失效:是相对于系统指定行为的偏离,系统违背了它应有的行为(动态存在的)联系:当一个开发者编写程序时,会在代码中出现错误。

当这个程序被编译或集成到一个系统中时,系统就存在故障。

当你运行这个系统时,可能会导致失效,即人们产生错误,故障是错误的结果(内部观角:从开发者的角度看待问题),当故障执行时出现失效(外部视角:从用户角度看到的问题)。

并不是所有的错误会导致故障,并非每个缺陷都对应相应的失败。

1.4 软件质量应从哪几个方面衡量,论述之:(1产品的质量)(2过程的质量)(3商业环境背景下的质量)(1)产品的质量:用户从失败的数目和类型等外部特征进行评价,如果软件具有足够的功能并且易于学习和使用,用户就断定软件是高质量的;开发者从缺陷的数目和类型等内部特征来作为产品质量的依据。

(2)过程的质量:有很多过程都会影响到最终的产品质量,只要有活动出了差错,产品的质量就会受到影响;开发和维护过程的质量与产品的质量是同等重要的。

软件工程期末复习要点归纳总结

软件工程期末复习要点归纳总结

第一章软件工程学概论1、软件危机产生的原因软件本身的特点:难于维护、逻辑复杂软件开发与维护的方法不正确:忽略需求分析重要性、轻视软件维护课本表述:1、软件不同于硬件,它是计算机中的逻辑部件而不是物理部件2、软件不同于一般程序,它的一个显著特点是规模庞大,而且程序的复杂性将规模的增加而呈现指数上升;3、软件本身特有的特点确实给开发和维护带了一些客观困难4、软件开发与维护有关的许多错误认识与做法有关忽略需求分析,轻视软件维护5、对用户要求没有完整准确的认识就匆忙开始着手编写程序6、在软件不同阶段进行修改需要付出的代价是很不相同的2、软件危机的表现什么是软件危机1、成本高:2、软件质量得不到保证:软件质量问题导致失败的软件项目非常多3、进度难以控制:●项目延期比比皆是●由于进度问题而取消的软件项目较常见●只有一小部分的项目能够按期完成4、维护十分困难:▼软件维护的多样性▼软件维护的复杂性▼软件维护的副作用3、克服软件危机1、管理的角度:软件开发过程的研究、文档的标准化以及人员的交流方式等2、软件开发方法的研究结构化软件开发方法, 面向对象的开发4、软件工程的定义概括的说,软件工程师指导计算机软件开发和维护的一门工程学科;采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程;1、软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件;2、①把系统的、规范的、可度量的方法应用于软件开发、运行和维护的过程,也就是把工程应用于软件.②研究①中提到的途径总之:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程;他借鉴传统工程的原理、方法,以提高质量,降低成本为目的;5、软件工程的本质特性1、关注与大型程序的构造2、中心课题是控制复杂度3、软件经常变化4、开发软件的效率非常重要5、和谐的合作是开发软件的关键6、软件必须有效地支持它的用户7、在软件工程领域中通常由具有一个文化背景的人替另外一种文化背景的人创造产品6、软件工程的基本原理1、用分阶段的生命周期计划严格管理2、坚持进行阶段评审3、实行严格的产品控制4、采用现代程序设计技术5、结果应能清楚地审查6、开发小组应该少而精7、承认不断改进软件工程实践的必要性软件工程学包含3个要素:方法、工具和过程7、软件生命周期1、概念:软件生命周期由软件定义、软件开发和运行维护也成软件维护3个时期组成;2、内容:1、问题定义回答“要解决的问题是什么“,写出关于问题性质、工程目标和工程规模的书面报告2、可行性分析回答”对于问题是否有行得通的解决办法“,即探索问题是否值得去解,是否有可行的办法3、需求分析确定”为了解决这个问题,目标系统必须做什么“,确定目标系统必须具备哪些功能,得到需求规格说明书;4、总体设计回答”概括地说,应该怎样实现目标系统“,确定程序由哪些模块组成以及模间的关系5、详细设计回答”应该怎样具体地实现这个系统呢”,确定实现模块功能所需要的算法与数据结构6、编码和单元测试写出正确的容易理解、容易维护的程序模块,然后仔细测试每个模块7、综合测试通过各种类型的测试及相应的调试是软件达到预定要求8、软件维护通过各种必要活动是系统持久地满足用户需求8、生命周期模型1、瀑布模型传统瀑布模型特点:1、阶段间具有顺序性与依赖性2、推迟实现的观点3、质量保证的观点瀑布模型优点:1、可强迫开发人员使用规范的方法例如:结构化技术;2、严格规定每个阶段必须提交的文档;3、要求每个阶段交出的所有产品都必须通过验证;缺点:1、“瀑布模型是由文档驱动的”成为主要缺点适用范围:适合于用户需求明确、完整、无重大变化的软件项目开发;2、快速原型模型适用范围:用户不能给出完整、准确的需求说明,或者开发者不能确定算法的有效性、操作系统的适应性或人机交互的形式等情况;3、增量模型特点:1、反复的应用瀑布模型的基本成分和原型模型的迭代特征,每一个线型过程产生一个“增量”的发布或提交,该增量均是一个可运行的产品;2、早期的版本实现用户的基本需求,并提供给用户评估的平台;优点:1、在较短时间内向用户提交可完成部分工作的产品;2、逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击;缺点:1、软件体系结构必须是开放的;2、开发人员既要把软件系统看作整体;又要看成可独立的构件,相互矛盾;3、多个构件并行开发,具有无法集成的风险;4、螺旋模型基本思想:使用原型或其他方法来降低风险;适用范围:适用于内部开发大规模软件项目;优点:1、对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件发的一个重要目标2、减少了过多测试或测试不足3、维护和开发之间并没有本质区别缺点:1、风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大2、随着迭代次数的增加,工作量加大,软件开发成本增加5、喷泉模型特点:喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于采用对象技术的软件开发项目;该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性;6、Rational统一过程RUP重复一系列周期,每个周期由一个交付给用户的产品结束;每个周期划分为初始、细化、构造和移交四个阶段,每个阶段围绕着五个核心工作流需求、分析、设计、实现、测试分别迭代;第二章可行性研究1、概念目的用最小的代价在尽可能短的时间内确定问题是否能够解决,不是解决问题,而是确定问题是否值得去解决;2、可行性研究任务了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划;即对软件开发以后的行动方针提出建议;3、研究内容(1)技术可行性使用现有的技术能实现这个系统吗(2)经济可行性这个系统的经济效益能超过它的开发成本吗(3)操作可行性系统的操作方式在这个用户组织内行得通吗(4)法律可行性新系统开发是否会侵犯法藤、集体或国家利益4、数据字典1、内容1、数据流2、数据流分量即数据元素3、数据存储4、处理2、作用对于数据流图中出现的所有被命名的图形元素在字典中作为一个词条加以定义,使得每一个图形元素都有一个确切的定义;第三章需求分析1、需求分析的任务(1)确定对系统的综合要求(2)分析系统的数据要求(3)导出系统的逻辑模型(4)修正系统的开发步骤2、获取需求的方法(1)访谈(2)面向数据流自顶向下(3)简易的应用规模说明技术(4)快速建立软件模型3、实体-关系图P63、层次方框图P68和IPO图P694、结构化分析模型●数据流图:描绘当数据在软件系统中移动时被变换的逻辑过程,指明系统具有的变换数据的功能,是建立功能模型的基础●实体-联系图:描绘数据对象及数据对象之间的关系,用于建立数据模型;●状态转换图:指明了作为外部事件结果的系统行为;描绘了系统的各种行为模式称为“状态”和在不同状态间转换的方式;是行为建模的基础第四章总体设计1、模块独立性与耦合性P97(1)模块化把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求模块化的优点:1.使软件结构清晰,容易设计也容易阅读与理解2.容易测试与调试,提高可靠性3.提高软件的可修改性4.有助于软件开发工程的组织管理(2)模块独立的重要性○有效的模块化即具有独立的模块的软件比较容易开发出来○独立的模块比较容易测试和维护(3)耦合衡量不同模块彼此间互相依赖连接的紧密程度,耦合要低,即每个模块和其他模块之间的关系要简单1、数据耦合:两个模块之间通过参数交换信息,而且交换的信息仅仅是数据2、控制耦合:传递的信息中有控制信息3、特征耦合:当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素4、公共环境耦合:两个或多个模块通过一个公共环境相互作用5、内容耦合:出现一下情况之一,则为内容耦合:1、一个模块访问另一个模块的内部数据2、一个模块不通过正常入口而转到另一个模块的内部3、两个模块有一部分代码重叠4、一个模块有多个入口数据耦合<控制耦合<特征耦合<公共环境耦合<内容耦合(4)内聚P99衡量一个模块内部各个元素彼此结合的紧密程度;内聚要高,每个模块完成一个相对独立的特定子功能信息隐藏P96应该这样设计和确定模块,使得一个模块内包含的信息过程和数据对于不需要这些信息的模块来说,是不能访问的2、启发规则1、改进软件结构提高模块独立性2、模块规模应该适中3、深度、宽度、扇入、扇出都应适中4、模块的作用域应该在控制域之内5、力争降低模块接口的复杂度6、设计单入口、单出口模块7、模块功能应该可以预测3、层次图和HIPO图P1024、面向数据流的设计方法P104(1)概念面向数据流设计就是把信息流映射成软件结构,信息流的类型决定了映射的方法;信息流包括变换流、事物流;(2)变换分析与事务分析P1055、小结i.进行软件结构设计遵循的最主要的原理是模块独立原理ii.抽象和求精是一对互补概念iii.软件工程师在实践中总结经验得出一些很有参考价值的启发式规则iv.自顶向下逐步求精是进行软件结构设计的常用途径v.用形式化的方法由数据流图映射出软件结构第五章实现1、选择程序设计语言为了使程序容易测试和维护以减少软件的总成本,所选用的高级语言程序应该有理想的模块化机制,以及可读性好的控制结构和数据结构:为了便于调试和提高软件可靠性,语言特点应该是编译程序能够尽可能多地发现程序中的错误;为了降低软件开发和维护的成本,选用的高级语言应该有良好的独立编译机制;第六章软件测试2、测试的概念(1)测试是为了发现程序中的错误而执行程序的过程(2)好的测试方案是极可能发现了至今为止尚未发现的错误的测试方案;(3)成功的测试是发现了至今为止尚未发现的错误的测试;3、测试的过程与步骤P153大型软件的测试过程基本由下述几个步骤组成(1)模块测试单元测试发现编码和详细设计的错误(2)子系统测试(3)系统测试集成测试(4)验收测试确认测试(5)平行运行4、单元测试P153着重从下述5个模块进行测试主要使用白盒测试技术(1)模块接口(2)局部数据结构(3)重要的执行通路(4)出错处理通路(5)边界条件5、集成测试P156集成测试就是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题;有两种集成策咯(1)自顶向下集成(2)自底向上集成6、确认测试P160也称验收测试,它的目标是验证软件的有效性;通常使用黑盒测试法;7、白盒测试技术P162白盒方法测试软件时设计测试数据的典型技术(1)逻辑覆盖1、语句覆盖2、判定覆盖3、条件覆盖4、判定/条件覆盖5、条件组合覆盖6、点覆盖7、边覆盖8、路径覆盖(2)控制结构测试1、基本路径测试2、条件测试3、循环测试8、黑盒测试技术P171黑盒测试力图发现下述类型的错误:(1)功能不正确或遗漏了功能;(2)界面错误;(3)数据结构错误或外部访问数据库错误(4)性能错误(5)初始化和终止错误黑盒测试用到的技术(1)等价划分(2)边界值分析(3)错误推测第七章维护1、维护的定义P189所谓软件维护就是在软件已经交付使用周,为了改正错误或满足新的需要而修改软件的过程;根据交付使用之后可能进行的4项活动具体定义软件维护(1)改正性维护纠正在使用过程中暴露出来的错误;诊断和改正错误的过程,(2)适应性维护为了和变化了的环境适当地配合而进行的修改软件活动(3)完善性维护在使用软件的过程中增加新的功能或修改已有功能,还可能提出一般性的改进意见的过程(4)预防性维护为了改进未来的可维护性与可靠性,或为了给未来的改进奠定更好的基础而修改软件的过程;2、维护的过程P192(1)维护组织(2)维护报告(3)维护的事件流(4)保存维护记录(5)评价维护活动3、小结1、软件生命周期每个阶段的工作都和软件可维护性有密切关系;2、再工程过程可以在完成任意一个活动之后中止第八章面向对象技术1、面向对象方法学要点(P203面向对象方法学的出发点和基本原则,是尽可能模拟人类思维方法,是开发软件尽可能接近人类认识世界解决问题的方法与过程;2、面向对象方法学优点1、与人类习惯的思维方法一致2、稳定性好3、可重用性好4、较易开发大型软件产品5、可维护性好3、对象模型(P216对象模型表示静态的,结构化的系统的“数据”性质;它是对模拟客观世界实体的对象以及对象彼此之间的关系的映射,描述了系统的静态结构;4、动态模型(P223动态模型表示瞬时的、行为化的系统的”控制“性质,它规定了对象模型中的对象的合法序列;5、功能模型(P224功能模型表示变化的系统的”功能“性质,他指明了系统应该”做什么”,因此更直接反映了用户对目标系统的需求;6、 三种模型之间的关系(P 228功能模型指明了系统应该“做什么”;动态模型明确规定了什么时候即在何种状况下接受什么时间的触发做;对象模型则定义了做事情的实体;在面向对象方法学中,对象模型是最基本的,它为其他两种模型奠定了基础,人们依靠对象模型完成了3中模型的集成;下面扼要地叙述3种模型之间的关系; 三种模型描述了系统的不同方面: 对象模型 动态模型 功能模型 对象的静态结构及相互关系与时间和顺序有关的系统性质 与值的变化有关的系统性质 描述系统的数据结构控制结构 系统的功能 “干事的主体”“什么时候干” “干什么”7、 其他复杂问题大型系统的对象模型通常由下述5个层次组成:主题层、类与对象层、结构层、属性层、服务层主题层类与对象层结构层属性层服务层功能模型与对象模型的关系--对象模型描述了功能模型中的动作对象,数据存储以及数据流结构 --功能模型中的处理对应于对象模型中的操作 动态模型与对象模型的关系 --状态转换驱使行为发生,这些行为在DFD 中被映射成处理,它们同时与对象模型的操作相对应 --针对每个建立的动态模型描述了类实例的生命周期或运行周期动态模型与功能模型的关系--功能模型中的处理可能产生动态模型中的事件;面向对象开发方法包括OOA面向对象分析、OOD面向对象设计、OOP面向对象实现三个部分第九章软件项目管理1、估算软件规模P305(1)代码行技术每个人了估计程序的最小规模a,最大规模b和最可能规模m,分别算出这3中规模的平均值a̅、b̅和m̅之后,用下面公式计算程序规模:L=a̅+4m̅+b̅6(2)功能点技术2、项目进度Gantt图3、质量保证概括得说,软件质量就是“软件与明确地和隐含地定义的需要相一致的程度”;更具体地说,软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度;4、软件配置管理软件配置管理事是在软件的整个生命周期内管理变化的一组活动;具体地说,这组活动用来:(1)标识变化(2)控制变化(3)确保适当地实现了变化(4)向需要知道这类信息的人报告变化5、基线基线是一个软件配置管理概念,它有助于人们在不严重合理变化的前提下来控制变化,简而言之,基线就是通过了正式复审的软件配置项;;在软件配置项变成基线之前,可以迅速而非正式地修改它;其他复习简答题1、简述文档在软件工程中的作用;1 提高软件开发过程的能见度2 提高开发效率3 作为开发人员阶段工作成果和结束标志4 记录开发过程的有关信息便于使用与维护;5 提供软件运行、维护和培训有关资料;6 便于用户了解软件功能、性能;。

软件工程知识点总结

软件工程知识点总结

软件工程知识点总结摘要:1.软件工程概念与目标2.软件开发过程与管理3.需求分析与规划4.设计、编码与测试5.维护与优化6.软件项目管理策略7.软件工程实践与方法8.常用开发工具与技术9.软件工程发展趋势正文:一、软件工程概念与目标软件工程是一门研究如何高效、规范、可靠地开发和维护软件的理论、方法、工具和实践的学科。

其目标是生产出具有高质量、高可靠性、易维护、低成本的软件产品。

二、软件开发过程与管理1.瀑布模型:一种顺序性的软件开发过程,各阶段相互依赖,依次进行。

2.增量开发:逐步增加软件功能,分阶段完成开发任务。

3.敏捷开发:以人为核心,迭代、适应性强,持续交付可用软件。

三、需求分析与规划1.需求分析:通过调研、访谈等方法,明确用户需求,输出需求文档。

2.软件规划:根据需求分析,制定软件开发计划,包括项目范围、里程碑、任务分配等。

四、设计、编码与测试1.设计:基于需求文档,进行软件整体结构、模块划分和接口设计。

2.编码:按照设计文档,编写高质量、可维护的代码。

3.测试:对软件进行单元测试、集成测试、系统测试,确保软件功能正常、性能达标。

五、维护与优化1.软件维护:对已投入使用的软件进行修改、完善,提高性能、稳定性等。

2.软件优化:通过重构、性能调优等手段,提升软件质量和运行效果。

六、软件项目管理策略1.项目风险管理:识别、评估、应对项目风险,降低项目失败可能性。

2.项目成本估算:合理预测项目成本,为项目决策提供依据。

3.项目进度管理:制定合理的进度计划,监控项目进度,确保按时完成任务。

七、软件工程实践与方法1.面向对象编程:运用封装、继承、多态等特性,提高代码复用性、可维护性。

2.软件工程原则:遵循一定的设计原则,如SOLID,提高软件质量。

八、常用开发工具与技术1.集成开发环境(IDE):如Eclipse、Visual Studio,提高开发效率。

2.版本控制工具:如Git,实现代码版本管理,便于团队协作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章1.1软件工程(SE)的定义、向、作用:SE:在将有关软件开发与应用的概念科学体系化的基础上,研究如有计划、有效率、经济的开发和利用能在就算机上正确运行的软件的理论和技术的工程法学,一些开发和维护软件的法、过程、原则。

是一个系统工程,既有对技术问题的分析与综合,也有对开发过程和参与者的管理。

SE的向:面向对象模式,结构化模式,基于过程的模式等SE的作用:付出较低的开发成本,达到要求的软件功能,取得较好的软件性能,开发的软件易于移植,需要较低的维护费用,能按时完成开发工作,及时交付使用。

1.2开发模式:软件开发的全部过程,活动和任务的结构框架,它能直观的表达的表达软件开发全过程,明确要完成的主要活动,任务和开发策略。

1.3说明错误、故障和失效的含义及联系(并举例):错误:是在软件生产过程中人为产生的错误(需求说明中的错误,代码中的错误)故障:是在功能实现过程中产生的问题;是错误导致的结果,是在软件中一个错误的表现(一个错误可能产生多个缺陷,静态存在的)失效:是相对于系统指定行为的偏离,系统违背了它应有的行为(动态存在的)联系:当一个开发者编写程序时,会在代码中出现错误。

当这个程序被编译或集成到一个系统中时,系统就存在故障。

当你运行这个系统时,可能会导致失效,即人们产生错误,故障是错误的结果(部观角:从开发者的角度看待问题),当故障执行时出现失效(外部视角:从用户角度看到的问题)。

并不是所有的错误会导致故障,并非每个缺陷都对应相应的失败。

1.4软件质量应从哪几个面衡量,论述之:(1产品的质量)(2过程的质量)(3商业环境背景下的质量)(1)产品的质量:用户从失败的数目和类型等外部特征进行评价,如果软件具有足够的功能并且易于学习和使用,用户就断定软件是高质量的;开发者从缺陷的数目和类型等部特征来作为产品质量的依据。

(2)过程的质量:有很多过程都会影响到最终的产品质量,只要有活动出了差错,产品的质量就会受到影响;开发和维护过程的质量与产品的质量是同等重要的。

(3)商业环境背景下的软件质量:将技术价值和商业价值统一起来。

1.5软件系统的系统组成(系统的要素有哪些):对象(实体)+ 活动+ 关系+ 系统边界活动:活动是发生在系统中的某些事情,通常描述为由某个触发器引发的事件,活动通过改变属性把一个事物变成另一个事物。

对象:活动中涉及的元素称为对象。

关系:是指活动与对象之间的关系。

系统边界:即系统包含的功能与系统不包含的功能之间的界限。

1.6现代软件工程大致包含几个阶段及各个阶段的文档:(1)需求分析:主要包括问题定义、可行性分析、需求分析《需求规格说明书》(2)系统设计:主要包括用户界面和软件结构图(3)程序设计:包括模块功能算法与数据描述(4)程序实现:主要包括编程的代码和注释(5)单元测试:模块测试与性能测试(6)集成测试:按照结构图进行测试产生测试报告(7)系统测试:按SRS对系统总体功能进行测试(8)系统提交:交付产品(9)系统维修:修改软件的过程,为满足改错或新需求1.7使现代软件工程实践发生变化的关键因素是什么?(1)商用产品投入市场时间的紧迫性(2)计算技术在经济中的转变:更低的硬件成本,更高的开发、维护成本(3)功能强大的桌面计算的可用性(4)广泛的局域网和广域网(5)面向对象技术的采用及其有效性(6)使用窗口、图标、菜单和指示器的图形用户界面(7)软件开发瀑布模型的不可预测性1.8什么是抽象?抽象是在某种概括层次上对问题的描述,使得我们能够集中于问题的关键面而不陷入细节,也就是对细节的隐藏。

1.9什么是重(复)用?重(复)用采用以前开发的软件系统中具有共性的部件,用到新的开发项目中去。

(这里的重用不仅仅是代码的重用。

)1.10什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机:落后的软件生产式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列重问题的现象。

典型表现:(1)对软件开发成本和进度的估计常常很不准确。

(2)用户对“已完成”软件系统不满意的现象经常发生。

(3)软件产品的质量往往靠不住。

(4)软件常常是不可维护的。

(5)软件通常没有适当的文档资料。

(6)软件成本在计算机系统总成本中所占的比例逐年上升。

(7)软件开发生产率提高的速度,远跟不上计算机应用迅速普及深入的趋势出现的原因:一面与软件本身的特点有关,另一面也和软件开发与维护的法不正确有关。

(1)软件缺乏“可见性”,管理和控制软件开发过程相当困难(2)软件规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升(3)开发时期引入错误,导致软件维护通常意味着改正或修改原来的设计,客观上使得软件较难维护(4)软件专业人员对软件开发和维护中或多或少地采用了错误的法和技术1.11开发队伍的组成角色有哪些?需求分析人员、设计人员、程序员、测试人员、培训人员、维护人员、资料员、配置管理人员CMM是指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM。

它是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。

CMM的核心是把软件开发视为一个过程。

SRS(Software Requirements Specification), 软件需求说明书的编制是为了使用户和软件开发者双对该软件的初始规定有一个共同的理解,使之成为整个开发工作的基础。

包含硬件、功能、性能、输入输出、接口界面、警示信息、保密安全、数据与数据库、文档和法规的要求。

第二章2.1什么叫过程(生命期)?过程是一组有序的任务,它涉及活动、约束和资源使用的一系列步骤,用于产生某种想要的输出。

我们有时也把涉及产品构建的这种过程称为生命期。

因此,有时把软件开发过程称为软件生命期。

2.2什么是软件过程,软件过程的重要性是什么?软件过程:将软件开发中的一组有序的任务称为软件过程,它涉及活动、约束和资源使用的一系列步骤,用于产生某种想要的输出。

重要性:(1)它强制活动具有一致性和一定的结构,使程序的集合组合起来以产生满足目标和标准的产品,(2)过程结构允我们分析、理解、控制和改进组成过程的活动,并以此来指导我们的行动(3)它能使我们获取经验并把它创收给他人。

2.3什么是软件生命期模型?软件生命期模型,是从一个特定角度提出的对软件过程的简化描述,是对软件开发实际过程的抽象,它包括构成软件过程的各种活动、软件工件以及参与角色等。

2.4瀑布模型及其优缺点瀑布模型:瀑布模型将开发阶段描述为从一个开发阶段瀑布般地转换到另外一个阶段,一个开发阶段必须在另一个开发阶段开始之前完成。

瀑布模从一种非常高层的角度描述了开发过程中进行的活动,并且提出了要求开发人员经过的时间序列。

优点:(1)瀑布模型一直用来规软件开发活动,每一个过程活动都有与其相关联的里程碑和可交付产品,以便于项目经理能够用模型判断在某一时刻项目里最后完成还有多远。

(2)它的简单性使得开发人员很容易向不熟悉软件开发用户作出解释。

(3)很多更复杂的模型实际上是在瀑布模型的基础上的润色,如加入反馈循环以及额外的活动。

缺点:(1)它并不能反映实际的代码开发式。

除了一些理解非常充分的问题之外,实际上软件是通过大量的迭代进行开发的。

(2)它没有揭示每一个活动如把一种制品转化为另外一种制品(3)没有把软件看做一个问题求解的过程,而是从制造业的角度来看待软件开发的,软件开发应该是一个创造的过程,而不是制造的过程。

2.5什么是原型?原型是一个部分开发的产品,它使客户和开发人员能够对计划开发的系统的相关面进行检查,以决定它对最终产品是否合适或恰当。

2.6V模型及其特点V模型是瀑布模型的变种,它说明测试活动是如与分析和设计相联系的,编码处于V形符号的顶点,分析和设计在左边,测试和维护在右边。

特点:V模型使得隐藏在瀑布模型中的迭代和重做活动更加明确。

瀑布模型关注的通常是文档和制品,而V模型关注的则是活动和正确性。

2.7原型模型不仅仅是附属于瀑布模型的,同时也是一种有效的过程模型的基础。

原型模型允开发人员快速构造整个系统或系统的一部分以理解或澄清问题。

依据原型化的目标,可以取消原型化需求、设计或系统中的一个或多个循环,但是总体目标保持不变,即减少开发中的风险和不确定性。

2.8可转换模型可转换模型通过去除某些主要开发步骤来设法减少出错的机会。

2.9阶段化开发模型的含义、分类和特点(运行系统和开发系统的概念)阶段化开发模型的含义:系统被设计为一部分一部分地交付,从而在系统其余部分正在开发的同时,用户已经获得了一部分的功能。

分类:(1)增量开发:系统按照功能划分为子系统,定义发布时首先定义一个小的功能子系统,然后在每一个新的发布中增加新功能。

(2)迭代开发:一开始就提交一个完整的系统,然后在每一个新的发布中改变每个子系统的功能。

特点:(1)即使还缺少某些功能,但在早期的发布中就可以开始培训。

(2)可以及早为那些以前从未提供的功能开拓市场。

(3)当运行系统出现未预料到的问题时,经常性的发布可以使开发人员能全面、快速地修复这些问题(4)针对不同的发布版本,开发团队将重点放在不同的专业领域技术上。

2.10螺旋模型的含义、目的、四个象限的任务及四重迭代的含义含义:螺旋模型将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。

目的:把开发活动和风险管理结合起来,以将风险减到最小并控制风险。

四个象限的任务依次是:评估可选案及风险;确定目标、可选案及约束;计划;开发与测试四重迭代的含义:(1)操作概念是第一次迭代的产品;(2)需第二次迭代的主要产品;(3)第三次迭代产中,系统开发产生设计;(4)第四次迭代能够进行测试。

(5)螺旋模型的每一次迭代都根据需求和约束进行风险分析,以权衡不同的选择,并且在确定某一特定选择之前,通过原型化验证可行性或期望度。

当风险确认之后,项目经理必须决定如消除或最小化风险。

2.11敏捷法的含义、特点和目标:含义:以人为核心、迭代、循序渐进。

在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。

特点:(1)规则游戏(2)小的发布(3)隐喻(4)简单设计(5)首先编写测试(6)重构(7)对编程(8)集体所有权(9)持续集成(10)可以忍受的步伐(11)在现场的客户(12)代码标准目标:通过尽可能早地、持续地交付有价值的软件使客户满意。

2.12在所有的软件开发模型中,你认为哪些过程给予你最大的灵活性以应对需求的变更?阶段开发模型和螺旋模型补充:统一过程(UP)可以用三句话来表达:它是用例驱动的、以基本架构为中心的、迭代式和增量性的软件开发过程框架,它使用对象管理组织(OMG(Object Management Group))的UML 并与对象管理组织(OMG)的软件过程工程原模型(SPEM(Software Process Engineering Meta-Model )软件过程工程元模型)等相兼容。

相关文档
最新文档