期末软件工程资料整理
软件工程期末考试复习资料1
软件工程期末考试复习资料1版权声明:本文版权归05112114、05112125 所有,未经许可,任何任何媒体均不得改变其形式,进行转载或摘录,违者必究!软件工程期末考试复习资料一(仅参考)拟订人:超越吉他手、朱古力、哖_少オ輕狂第一章:软件工程的产生和发展有关复习资料一、软件工程的定义:1、软件危机的产生:软件危机的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。
2、软件危机主要表现:两个方面:①软件产品质量低劣,甚至开发过程就夭折②软件生产率低,不能满足需要3、软件工程的三要素:①方法:完成软件开发各项任务的技术方法②工具:研究支撑软件开发方法的工具③过程:为开发高质量软件所规定的各项任务的工作步骤4、软件工程研究的标准及目标:标准:分为4个层次,国际标准、行业标准、企业规划、项目规划目标:以较少的投资获取高质量的软件。
有易于维护、低的开发成本、高性能、缩短开发期5、软件工程研究的主要内容:以下两个方面:①软件开发方法、技术;软件开发工具及环境②软件管理技术、软件规范(国际规范)7、软件工程学的目的:①以较少的投资获取高质量的软件②运用科学的方法和工程化的规范管理来指导软件开发③克服软件危机8、软件工程的基本原则:如下4条基本原则①必须认识软件需求的变动性,采取适当措施来保证结果产品能忠实地满足用户需求②稳妥的设计方法大大地方便了软件开发,以达到软件工程的目标③软件工程项目的质量与经济开销直接取决于对它所提供的支撑的质量与效用④有效的软件工程只有在对软件过程进行有效管理的情况下才能实现9、软件工程过程及特性:是指在软件工具的支持下,所进行的一系列软件工程活动包括4类基本过程:1)软件规格说明书2)软件开发3)软件确认4)软件演进特性:可理解性、可见性、可靠性、可支持性、可维护性、可接受性、开发效率和健壮性等。
二、软件与软件生存周期1、软件的概念和特点1)概念:软件是程序以及开发使用维护程序所需的所有文档2)软件的构成:由应用程序、系统程序、面向用户的文档及面向开发者的文档4部分构成即:软件=程序+文档3)特点:①软件是一种逻辑实体,不是具体的物理实体②软件产品的生产主要是研制③软件具有复杂性,开发和运行常受到计算机系统的限制、④软件成本昂贵,开发方式还没完全摆脱手工生产方式⑤软件不存在老化和磨损,存在在退化问题2、软件的分类1)按照软件功能划分①系统软件②支撑软件③应用软件2)按照软件规模划分微型、小型、中型、大型、甚大型、极大型3)按照软件工作方式划分实时处理软件、交互式软件、批处理软件4)按照软件服务对象的范围划分项目软件、产品软件3、软件结构及结构图衡量软件结构的有关指标:1)深度2)宽度3)扇出数扇入数软件结构的形态准则:顶部宽度小,中部宽度大,底部宽度次之;在顶部有较高的扇出数底部有较高的扇入数软件结构:1)模块(构成软件系统结构的基本元素)2)模块化3)软件的层次结构4)树状结构:特点是是程序的主模块、整个结构只有一个顶层模块、也只有一个上级模块、同一层模块之间没有横向联系5)网状结构:特点是任何两个模块之间有双向的关系、都是平等的结构图的构成:主要有模块、调用、数据4、软件生存期有关资料1)定义:是指从软件开始开发到报废的全过程,亦称软件生存期(l i f e c y c l e)。
软件工程期末资料整理
一、软件生命期各阶段的任务是什么?软件生命期分为7个阶段:1) 问题定义:确定要解决的问题是什么;2) 可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性;3) 需求分析:确定该系统必须做什么;4) 总体设计:确定系统如何实现,包括系统设计和结构设计;5) 详细设计:具体实现设计的系统;6) 实现:编码和测试;7) 运行维护:保证软件正常运行。
二、软件重用的效益是什么?1) 软件重用可以显著地改善软件的质量和可靠性; 2) 软件重用可以极大地提高软件开发的效率;3) 节省软件开发的成本,避免不必要的重复劳动和人力、财力的浪费。
三、简述软件工程的七条基本原理。
1) 用分阶段的生命周期计划严格管理; 2) 坚持进行阶段评审; 3) 实行严格的产品控制; 4) 采用现代程序设计技术; 5) 结果应能清楚地审查;6) 开发小组的人员应该少而精;7) 承认不断改进软件工程实践的必要性。
四、简述软件测试要经过哪几个步骤,每个步骤与什么文档有关。
软件测试要经过模块测试、子系统测试、系统测试、验收测试和平行运行5个步骤。
1) 模块测试:又称单元测试,集中对用源代码实现的每一个程序单元进行测试,与其相关的文档是单元测试计划和详细设计说明书。
2) 子系统测试与系统测试:把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。
与其相关的文档是集成测试计划和软件需求说明书。
3) 验收测试:确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。
与其相关的文档是确认测试计划和软件需求说明书。
4) 平行运行:把已经经过确认的软件纳入实际运行环境中,与其他系统成份组合在一起进行测试。
与其相关的文档:用户指南、使用手册等。
五、自顶而下渐增测试与自底而上渐增测试各有何优、缺点?自顶向下测试方法的主要优点是不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能在早期发现上层模块的接口错误。
软件工程期末复习重点
1.软件危机的介绍在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2.产生软件危机的原因与软件本身特点有关:软件开发与维护的方法不正确有关:3.消除软件危机的途径4.软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。
5.软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。
这个时期的工作通常又称为系统分析,由系统分析员负责完成。
软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。
6.开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。
其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。
7.维护时期的主要任务是使软件持久地满足用户的需要。
8.软件生命周期每个阶段的基本任务:问题定义、可行性研究,需求分析,总体设计,详细设计,编码和单元测试,综合测试。
9.常用软件模型区别原理:(1)瀑布模型:按照传统的瀑布模型开发软件,有下述的几个特点。
a)阶段间具有顺序性和依赖性:两重含义:段的输出文档正确,后一阶段的工作才能获得正确的结果。
①必须等前一阶段的工作完成之后,才能开始后一阶段的工作;②前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶b) 推迟实现的观点瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现。
c)质量保证的观点:软件工程的基本目标是优质、高产。
为了保证所开发的软件的质量,在瀑布模型的每个阶段都应坚持两个重要做法。
每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。
每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。
软件工程期末整理
软件工程期末整理软件工程是一门研究和应用如何以系统性、规范化、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。
在期末来临之际,对软件工程的知识进行系统的整理和回顾是非常重要的。
首先,让我们来谈谈软件工程的基本概念。
软件工程的目标是生产高质量的软件产品,这不仅包括满足用户的需求和期望,还包括软件的可维护性、可扩展性、可靠性、效率等方面的特性。
为了实现这些目标,软件工程采用了一系列的方法和技术,从需求分析到软件设计、编码实现、测试、维护等各个阶段,都有相应的规范和流程。
需求分析是软件工程的第一步,也是最为关键的一步。
在这个阶段,需要与用户进行充分的沟通和交流,了解他们的需求和期望,将其转化为明确的、详细的软件需求规格说明。
这不仅要求具备良好的沟通能力,还需要能够对用户的需求进行分析和提炼,识别出真正的需求和潜在的需求。
如果需求分析做得不好,后面的工作都可能是徒劳的,因为软件可能根本不符合用户的需求。
软件设计是根据需求规格说明,对软件的体系结构、模块划分、接口设计等进行规划和设计。
好的软件设计应该具有高内聚、低耦合的特点,使得软件易于理解、维护和扩展。
在设计过程中,需要考虑多种设计方案,并进行评估和选择,以找到最优的设计方案。
编码实现是将设计转化为实际的代码。
在编码过程中,要遵循良好的编程规范,使用合适的算法和数据结构,提高代码的质量和效率。
同时,要注意代码的可读性和可维护性,为后续的维护工作打下良好的基础。
测试是软件工程中不可或缺的环节。
通过测试,可以发现软件中的缺陷和错误,并及时进行修复。
测试包括单元测试、集成测试、系统测试、验收测试等多个阶段,每个阶段都有不同的测试目标和方法。
测试人员需要制定详细的测试计划和测试用例,确保软件的质量。
维护是软件生命周期中最长的阶段。
在软件投入使用后,可能会出现各种问题,需要进行维护和改进。
软件工程基础期末复习资料完整版
2.文档有何作用?程序代码属不属于文档?答:文档指的是在软件开发和维护过程中形成的文字记录。
从软件计划、分析、设计、实现(编码和测试)、维护等开发活动中形成的各种文件。
文档属于软件的一部分,是软件维护和升级的重要依据,并且文档内容要与代码同步更新。
没有文档的软件维护不但不能延长反而会缩短软件寿命。
文档包括需求规格说明书、设计说明书、用户使用说明书、在线帮助等,当然程序代码是必不可少的一种软件文档。
3.什么是软件危机?什么原因产生了软件危机?答:软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题。
产生的原因是主客观不相适应。
见书图1-2。
●客观上:软件规模增大、功能要求越来越复杂,需求不断变化等;●主观上:传统的个体化开发观念和方法,无开发过程指导,无开发过程管理;由于主客观矛盾,必然产生软件质量差、开发超期、超预算、维护困难等现象。
5.软件工程三要素是什么?答:软件工程三要素是从计算机科学观点看软件工程,即从软件开发的技术层面应该有过程、方法和工具。
见图1-4。
(2)“过程”是软件产品加工所经历的一系列有组织的活动,保证能够合理、高质量和及时地开发出软件。
过程定义的活动集合及其序列见第2章。
(3)“方法”为软件开发提供“如何做”的技术,它涵盖了项目计划、需求分析、系统设计、程序实现、测试与维护等一系列活动的做法。
如经常说的面向结构、面向对象、面向组件等开发方法,项目管理中估算、度量、计划等管理方法。
软件工程以介绍方法为主,本书从第3章开始逐步介绍开发过程所用到的方法。
(4)“工具”为过程和方法提供自动的或半自动的支持。
这些工具既包括软件也有硬件。
软件工具包括编程、建模、管理等开发工具。
通过网络环境把这些软件工具集成起来搭建一个支持团队开发的平台,称之为计算机辅助软件工程 (Computer Aided Software Engineering,CASE)。
CASE集成了软件、硬件和一个存放开发过程信息的软件工程数据库,形成了一个软件工程环境。
软件工程期末复习要点归纳总结
第一章第二章第三章软件工程学概论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个时期组成。
软件工程复习资料-完整版
软件工程复习资料-完整版一、概述软件工程是一门关于开发、维护和管理软件的综合学科。
它涵盖了软件开发的各个阶段,包括需求分析、设计、编码、测试和维护。
软件工程的目标是提供高质量的软件,满足用户的需求,同时将开发过程控制在预定的时间和预算范围内。
二、软件生命周期1. 需求分析阶段在需求分析阶段,开发团队与用户沟通,了解用户的需求和期望。
通过需求分析,确定软件的功能和性能要求,制定详细的需求规格说明。
2. 设计阶段在设计阶段,团队根据需求规格说明,设计软件的整体架构和模块。
设计阶段包括概要设计和详细设计,概要设计主要确定软件的整体结构,详细设计则更加具体,包括模块的功能和接口设计。
3. 编码阶段在编码阶段,根据详细设计,实现软件的各个模块。
编码时应遵循编程规范,确保代码的可读性和可维护性。
同时,要进行单元测试,确保每个模块的功能正确。
4. 测试阶段在测试阶段,对软件进行不同层次的测试,包括单元测试、集成测试和系统测试。
单元测试测试各个模块的功能,集成测试测试模块之间的接口,系统测试测试整个系统的功能和性能。
5. 部署和维护阶段在软件开发完成后,需要将软件部署到目标环境中,并进行用户培训。
同时,还需要对软件进行维护和升级,以解决出现的问题和满足用户的需求变化。
三、软件工程的原则1. 模块化将软件划分为多个模块,每个模块负责特定的功能。
模块化能够提高软件的可维护性和复用性,同时有利于团队的协作开发。
2. 可伸缩性软件应该具备可伸缩性,能够满足不同规模和需求的用户。
在设计和实现软件时,需要考虑未来的扩展和升级,保证软件的灵活性。
3. 可测试性软件应该具备可测试性,方便进行各个阶段的测试。
在设计和编码时,需要考虑如何进行自动化测试,提高测试的效率和覆盖率。
4. 可维护性软件应该具备可维护性,方便对软件进行改进、修复和升级。
在设计和编码时,需要遵循良好的编程规范,提高代码的可读性和可维护性。
5. 文档化软件开发过程需要进行详细的文档记录,包括需求文档、设计文档、测试文档等。
软件工程知识点复习资料
软件工程知识点复习资料一、软件工程概述软件工程是一门研究如何以系统性的、规范化的、可度量的方法进行软件开发、运行、维护和管理的学科。
它涵盖了软件开发生命周期的各个阶段,包括需求分析、系统设计、编码实现、测试和维护等。
二、软件生命周期与开发模型1. 软件生命周期包括需求分析、系统设计、编码实现、测试和维护等阶段。
不同的项目可以采用不同的开发模型,常见的有瀑布模型、迭代模型和敏捷模型。
2. 瀑布模型是一种线性顺序开发模型,各个阶段严格按序进行,适用于需求较为稳定的项目。
3. 迭代模型将软件开发过程划分为多个迭代阶段,每个迭代阶段都包含需求分析、设计、编码和测试等活动,适用于需求较为不确定或需要持续改进的项目。
4. 敏捷模型强调快速响应需求变化和灵活合作,通过迭代、增量的方式进行开发,适用于需求频繁变更的项目。
三、需求工程1. 需求分析是软件开发的第一步,包括需求获取、需求分析、需求建模等过程,目的是明确系统的功能和性能需求,并与客户达成一致。
2. 需求获取可以通过面谈、问卷调查、观察等方式进行,需求分析则要对已收集到的需求进行分析、整理和归纳。
3. 需求建模使用UML(统一建模语言)等工具,将需求表示为用例图、活动图、时序图等形式,便于后续的系统设计和编码实现。
四、设计与架构1. 系统设计是软件开发的关键阶段,包括软件架构设计和详细设计等过程,目的是指导后续的编码和测试工作。
2. 软件架构设计确定系统的整体结构、模块划分和模块间的关系,常见的架构风格包括层次结构、客户-服务器、面向对象等。
3. 详细设计是对系统模块的具体设计,包括数据结构设计、算法设计和接口设计等,常用的设计方法有结构化设计和面向对象设计。
五、编码实现与调试1. 编码实现是将设计阶段得到的设计方案转化为计算机可执行的代码,采用合适的编程语言和开发工具进行。
2. 编码时要注重代码的可读性、可维护性和可重用性,采用良好的编程风格和命名规范。
软件工程期末复习资料
软件工程期末复习资料一、软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
二、软件危机包括两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
三、软件危机具体表现:1、对软件开发成本和进度的估计常常很不准确;2、用户对“已完成的”软件系统不满意的现象经常发生;3、软件产品的质量往往靠不住;4、软件通常没有适当的文档资料;5、软件成本在计算机系统总成本中所占比例逐年上升;6软件开发生产率提高的速度,跟不上计算机应用迅速普及深入的趋势。
四、软件工程是指导计算机软件开发和维护的一门工程学科。
五、软件工程的7条基本原理:1、用分阶段的生命周期计划严格管理;2、坚持进行阶段评审;3、实行严格的产品控制;4、采用现代程序设计技术;5、结果应能清楚地审查;6、开发小组的人员应该少而精;7、承认不断改进软件工程实践的必要性。
六、软件工程方法学包含3个要素:方法、工具和过程。
七、软件定义时期的3个阶段:问题定义、可行性研究和需求分析。
八、软件生命周期的每个阶段的基本任务和成果:1、问题定义:确定要解决的问题是什么;2、可行性研究:研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法,其结果是客户作出是否继续进行这项工程的决定的重要依据;3、需求分析:确定目标系统必须具备哪些功能,其成果是需求分析报告;4、总体设计:应该设计出实现目标系统的几种可能的方案,设计程序的体系结构;5、详细设计:设计出程序的详细规格说明;6、编码和单元测试:写出正确的容易理解、容易维护的程序模块;7、综合测试:关键任务是通过各种类型的测试使软件达到预定的要求;8、软件维护:改正性维护、即诊断和改正正在使用过程中发现的软件错误,适应性维护、修改软件以适应环境的变化,完善性维护、根据用户的要求改进或扩充软件使它更完善,预防性维护、修改软件为将来的维护活动预先做准备。
九、软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件工程期末知识总结
软件工程期末知识总结软件工程是一门研究如何以系统性的方法构建和维护软件的学科。
在软件工程的学习中,我们主要学习了软件开发的各个阶段、软件开发方法和工具,以及软件质量保证与测试等相关知识。
下面将对这些知识进行总结。
一、软件开发的各个阶段1. 需求分析阶段:需求分析是软件开发的第一步,主要目的是明确用户的需求和期望。
通过与用户交流,分析用户需求,确定软件的功能和约束条件,最终形成需求规格说明书。
2. 设计阶段:设计阶段是对需求进行进一步细化和明确,形成软件的架构和设计方案。
主要包括高层设计和详细设计两个阶段。
高层设计是确定软件的总体框架和结构,而详细设计则是对高层设计进行进一步细化和完善,明确具体的实现细节。
3. 编码阶段:编码是将设计阶段得到的软件设计方案翻译成具体的代码的过程。
在编码过程中,要遵循一定的编码规范和编码标准,以保证代码的可读性和可维护性。
4. 测试阶段:测试是对软件进行验证和确认的过程。
测试过程主要分为单元测试、集成测试和系统测试三个层次。
单元测试是对软件中的最小单元进行测试,集成测试是对已经通过单元测试的模块进行组合测试,系统测试是对整个系统进行全面测试。
5. 部署和维护阶段:在软件开发完成后,需要进行部署和安装。
部署是将软件安装到用户的计算机或服务器上,并进行配置和初始化。
维护是在软件部署后,对软件进行监控、修复和更新,以保证软件的正常运行和改进。
二、软件开发方法和工具1. 瀑布模型:瀑布模型是一种传统的软件开发方法,采用线性的开发流程,依次进行需求分析、设计、编码、测试和维护等阶段。
瀑布模型适用于需求稳定和明确的项目。
2. 敏捷开发:敏捷开发是一种迭代和增量的开发方法,强调灵活性和快速响应。
敏捷开发主要包括Scrum、XP和Kanban等方法。
敏捷开发适用于需求不确定和频繁变化的项目。
3. UML:UML是一种用于软件建模和设计的标准化方法。
UML提供了一系列的通用图形符号和建模语言,便于进行软件设计和文档化。
软件工程期末复习资料一.
《软件工程》期末复习第一章软件工程概述一、重点掌握的内容:软件和软件工程的基本概念二、一般掌握内容:软件生存周期及软件开发的各种模型。
三、主要知识点:软件:软件定义由以下三部分组成:(1在运行中能提供所希望的功能和性能的指令集(即程序;(2使程序能够正确运行的数据结构;(3描述程序研制过程、方法所用的文挡。
软件是一种产品,同时又是开发和运行产品的载体。
作为一种产品,它表达了由计算机硬件体现的计算潜能。
作为开发运行产品的载体,软件是计算机工作的基础、信息通信的基础,也是创建和控制其他程序的基础。
软件的特点:①软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。
②软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。
③在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。
④软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。
⑤软件的开发至今尚未完全摆脱手工的开发方式。
⑥软件的开发费用越来越高,成本相当昂贵。
软件的分类:软件依据不同的标准,可划分为不同的分类。
软件工程:是指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
软件工程准则可以概括为六条基本原理:(1用分阶段的生存周期计划严格管理;(2坚持进行阶段评审;(3实行严格的产品控制;(4采用现代程序设计技术;(5应能清楚地审查结果;(6合理安排软件开发小组的人员。
软件危机:指的是软件开发和维护过程中遇到的一系列严重问题。
软件工程的基本内容:软件工程学的内容可包括理论、结构、方法、工具、环境、管理、规范等。
软件生存周期:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。
软件生存周期一般可分为以下阶段:·问题定义·需求分析与可行性研究·设计·编码·测试·运行与维护软件生存期也可以分为三个大的阶段:计划阶段。
软件工程复习资料(整理)
什么是软件?什么叫软件工程?它的目标是什么?软件:程序与文档。
定义一:应用于计算机软件的定义,开发和维护的一整套方法、工具、文档、实践标准和工序。
定义二:在软件设计、实现、检查、运行、维护各个过程中适用的立足于科学基础上的实用方法。
软件工程目标:用较少的投资获得高质量的软件。
什么是软件危机?主要表现?软件危机:在计算机软件的开发和维护过程中,所遇到的一系列严重问题,这一系列问题使软件产生了危机。
表现在:⑴对软件开发成本和进度的估计常常很不准确。
⑵用户易对“已完成的”软件系统产生不满。
⑶软件质量不可靠。
⑷软件常常是不可维护的。
⑸软件通常没有适当的文档资料。
⑹软件成本越来越高。
⑺软件开发生产率提高速度慢,跟不上发展。
可行性研究的目的是什么?用最小的代价在尽可能短的时间内确定问题是否能够解决。
若值得解,则推荐一个较好的方案,并制定一个初步的计划;若无可行解,则建议停止开发工程(以免浪费时间、人力、和金钱)数据流图的基本要点是什么?描绘“做什么”,而不考虑“怎样做”。
软件生成期分几个阶段?几阶段的主要工作是?生命周期各阶段的基本任务:1、问题定义:要解决的问题是什么?2、可行性研究:问题是否有行得通的解决办法?3、需求分析:确定目标系统必须具备哪些功能。
4、总体设计:应如何解决这个问题。
5、详细设计:如何具体实现这个系统?6、编码和单元测试:写出正确的、容易理解的、容易维护的程序模块,并测试编写出的每一个模块。
7、综合测试:通过各种类型的测试使软件达到预定的要求。
8、软件维护:通过各种必要的维护活动使系统持久地满足用户的需要。
何为功能模块?设计模块?功能模块:在分析阶段由系统分析员对该系统应完成的功能进行规定的模块。
设计模块:在后面设计阶段对如何实现这些功能进行描述的模块。
HIPO PSL PAD SADT 中文意思SADT:结构分析设计方法。
PSL:问题说明。
PSA:问题说明分析器。
HIPO:H图加IPO,即层次图加输入/处理/输出图。
软件工程期末复习知识点整理
复习整理一、绪论1.软件的定义软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。
(软件=程序+文档)2.软件工程的定义●是指导计算机软件开发和维护的一门工程学科;●采用工程化的原理与方法对软件进行计划、开发和维护;●把证明正确的管理技术和最好技术综合运用到软件开发中;●研究经济地开发出高质量的软件方法和技术;●研究有效维护软件的方法和技术。
3.软件危机的概念,及出现的原因软件开发技术的进步未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
产生原因:⑴软件规模越来越大,结构越来越复杂⑵软件开发管理困难而复杂。
⑶软件开发费用不断增加。
⑷软件开发技术落后。
⑸生产方式落后,仍采用手工方式。
⑹开发工具落后,生产率提高缓慢。
4.三种编程范型的特点(1) 过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构+算法;着眼于程序的过程和基本控制结构,粒度最小(2) 面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对象,粒度比较大(3) 基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合整个领域的类对象,粒度最大二、软件生存周期与软件过程1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动●定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期●目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。
●主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护(P19)2、软件生命周期划分为哪几个阶段软件生命周期分为三个时期八个阶段:●软件定义:问题定义、可行性研究;●软件开发:需求分析、概要设计、详细设计、编码、测试;●软件运行:软件维护3、瀑布模型的特点和缺陷特点:线性模型,每一阶段必须完成规定的文档(阶段间的顺序性和依赖性)优点:●可强迫开发人员采用规范化的方法。
软件工程期末复习资料_图文(精)
软件工程期末复习资料考试时间:2015-06-29(18周星期一13:30-15:30 考试地点:中心 205座位号:10监考:丁家满王晓东考试题型第一部分选择题(20分,共 10题第二部分判断题(10分,共 10题第三部分简答题(40分,共 5题第四部分设计题(30分,共 1题学院:信息工程与自动化学院专业班级:计科 122班姓名:邹华宇学号:2012104052042015年 6月 27日考点一软件及其特点1.软件的定义(软件=程序+数据+文档丁家满:软件是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。
姜瑛:计算机软件指计算机系统中的程序及其文档。
我:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。
软件是一种产品, 包含下面三方面的含义:在运行中能够提供所希望的功能和性能的指令集(即程序;使程序能够正确运行的数据结构;描述程序开发、维护和使。
编写程序只是软件开发过程数据中的一个阶段,一般来说,其工作量仅是软件开发全部工作量的 10%-20%。
2.软件的特点(课本 P2软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算; 软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大;软件的使用没有硬件那样的机械磨损和老化问题。
丁家满:软件的本质特性:复杂性 :软件在规模上可能比任何由人类创造的其他实体都要复杂, 复杂性是软件的本质特性。
软件的复杂性是必要属性,开发问题也会增加复杂性;一致性 :软件必须遵从人为的惯例并适应已有的技术和系统。
软件需要随接口的不同而改变, 随时间的推移而变化, 而这些变化是不同的人设计的结果。
许多复杂性来自保持与其他接口的一致,对软件的任何再设计,都无法简化这些复杂特性;可变性 :软件产品扎根于文化的母体中,如各种应用、用户、自然及社会规律、计算机硬件等, 后者持续不断地变化着, 这些变化无情地强迫着软件随之变化。
期末软件工程资料整理
1.软件工程的基本原理?答:基本原理包括3要素:方法,工具,过程;其中,方法是完成软件开发任务的技术方法回答怎样做的问题;工具是为运用方法提供自动半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,他是完成各任务的工作步骤。
2.RUP中有9个工作流,前6个为过程工作流,后3个为核心支持工作流程。
3.问答:P.32第2题4.简述结构化范型和面向对象范型的要点,分析优缺点。
5.电话号码有几类:校内电话号码由4位数字组成,第1位不是0;校外电话分本市电话和外地电话,拨校外电话需先拨0,本市电话则再接着拨8位数字(第1位不是0),外地电话则拨3位区码再拨8位电话号码(第1位不是0)。
答案:电话号码 = [ 校内电话号码 | 校外电话号码 ]校内电话号码 = 非零数字 + 3位数字校外电话号码 = [ 本市号码 | 外地号码 ]本市号码 = 数字零 + 8位数字外地号码 = 数字零 + 3位数字 + 8位数字非零数字 = [ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ]数字零 = 03位数字 = 3{数字}38位数字 = 非零数字 + 7位数字7位数字 = 7{数字}7数字 = [ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ]6.名词解释:第一范式,第二范式,第三范式答:第一范式:每个属性都必须是原子值,仅仅是一个简单的值而不能含内部结构。
第二范式:满足第一范式条件,且每个关键字属性都由整个关键字决定。
第三范式:符合第二范式条件,每个关键字属性都仅由关键字决定,且一个费关键字属性不能仅仅是对另一个非关键字属性的进一步描述。
7. 储蓄系统:储户填写的存款单或取款单由业务员输入系统,是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
软件工程期末复习要点归纳总结
软件工程期末复习要点归纳总结软件工程是指在软件开发的全过程中,应用工程的原理、方法和经验对软件进行开发、运行和维护的过程。
在软件工程这个学科中,包括了软件需求、软件设计、软件构建、软件测试、软件维护等多个阶段和技术。
下面是软件工程期末复习的要点归纳总结:1.软件开发过程模型-瀑布模型:各个阶段按顺序进行,每个阶段完成后不可回溯。
-增量模型:将软件划分为多个增量,每个增量独立进行开发。
-螺旋模型:将软件开发过程分为多个循环,每个循环都包括需求分析、设计、开发和测试。
-迭代模型:将软件开发过程分为多个迭代,每个迭代包括需求分析、设计、开发和测试。
2.软件需求工程-需求获取:通过需求采集、用户访谈、问卷调查等方式获取需求。
-需求分析:对需求进行整理、分类、抽象和规范化,得出系统需求。
-需求规格说明:将需求规格化为需求文档,包括用例、用例图、领域模型等。
-需求验证:通过评审、原型验证等方式验证需求的正确性和完整性。
3.软件设计-结构化设计:通过模块化、自顶向下、逐步求精的方式进行软件设计。
-面向对象设计:通过类、继承、多态等面向对象的概念进行软件设计。
-架构设计:设计软件的整体框架和组件之间的关系。
-接口设计:设计软件的各个组件之间的接口。
4.软件构建-编码:根据设计文档进行编码,可以使用编程语言、集成开发环境等工具。
-调试:通过调试工具,对程序进行调试,找出存在的问题并进行修复。
-集成:将各个模块集成到一起,进行整体测试,确保功能的正确性。
-部署:将软件部署到目标环境中,确保软件能够正常运行。
5.软件测试-单元测试:对软件的最小单元进行测试,如函数、方法等。
-集成测试:对软件的各个模块进行整合测试,确保模块之间的协调性。
-系统测试:对整个系统进行测试,确保系统满足用户需求。
-验收测试:由用户对软件进行测试,验证软件是否满足用户需求。
6.软件维护-改正性维护:修复软件中的错误。
-适应性维护:根据用户需求,对软件进行功能扩展。
软件工程期末考试重点整理
软件工程的基本概念:研究软件生产和软件管理的工程学科。
主要内容:软件工程的基本概念。
软件开发模型。
软件开发各阶段的任务、技术、方法。
传统方法、面向对象方法。
软件工程管理。
软件质量保证。
软件工程环境。
软件工程三要素:方法、工具和过程什么是软件生命周期?定义一个软件从开始计划起,到废弃不用为止,称为软件的生存周期。
软件生存周期包括:计划(主要任务:调查和分析,调查用户需求,分析新系统的主要目标,分析开发该系统的可行性)、开发(主要任务:系统分析、设计和实现)与运行(主要任务:做好软件维护,使软件在整个生存周期内保证满足用户的需求和延长使用寿命)3个时期,每一时期又可细分为若干更小的阶段。
将软件开发过程划分生存周期的目的:把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够简化每一步的工作内容,使因为软件规模增长而大大增加了的软件复杂性变得较易控制和管理需求分析的主要任务是1通过对问题及其环境的理解、分析和综合,建立分析模型;2在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求不大出来。
需求分析的步骤通过对现实环境的调查研究,获得当前系统的具体模型;去掉具体模型中的非本质因素,抽象出当前系统的逻辑模型;分析当前系统与目标系统的差别,建立目标系统的逻辑模型;对目标系统进行完善和补充,并写出完整的需求说明;对需求说明进行复审简述衡量模块独立性的两个准则。
选择程序设计语言的原则有哪些?简述你对程序设计风格的理解。
程序设计阶段的特点:生产方式:个体手工劳动。
生产工具:机器语言、汇编语言。
开发方法:追求编程技巧,追求程序运行效率。
程序难读、难懂、难修改。
硬件特征:价格贵、存储容量小、运行可靠性差。
软件特征:只有程序、程序设计概念,不重视程序设计方法。
“软件测试不能证明程序的正确性”,谈谈你对这句话的理解。
“软件维护是软件运行时期的工作,与软件开发各阶段联系较少,该阶段工作是简单的,难度也要小得多。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.软件工程的基本原理?答:基本原理包括3要素:方法,工具,过程;其中,方法是完成软件开发任务的技术方法回答怎样做的问题;工具是为运用方法提供自动半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,他是完成各任务的工作步骤。
2.RUP中有9个工作流,前6个为过程工作流,后3个为核心支持工作流程。
3.问答:P.32第2题4.简述结构化范型和面向对象范型的要点,分析优缺点。
5.电话号码有几类:校内电话号码由4位数字组成,第1位不是0;校外电话分本市电话和外地电话,拨校外电话需先拨0,本市电话则再接着拨8位数字(第1位不是0),外地电话则拨3位区码再拨8位电话号码(第1位不是0)。
答案:电话号码=[校内电话号码|校外电话号码]校内电话号码=非零数字+3位数字校外电话号码=[本市号码|外地号码]本市号码=数字零+8位数字外地号码=数字零+3位数字+8位数字非零数字=[1|2|3|4|5|6|7|8|9]数字零=03位数字=3{数字}38位数字=非零数字+7位数字7位数字=7{数字}7数字=[0|1|2|3|4|5|6|7|8|9]6.名词解释:第一范式,第二范式,第三范式答:第一范式:每个属性都必须是原子值,仅仅是一个简单的值而不能含内部结构。
第二范式:满足第一范式条件,且每个关键字属性都由整个关键字决定。
第三范式:符合第二范式条件,每个关键字属性都仅由关键字决定,且一个费关键字属性不能仅仅是对另一个非关键字属性的进一步描述。
7.储蓄系统:储户填写的存款单或取款单由业务员输入系统,是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。
试用数据流图描绘下述系统的功能,并用实体-联系图描绘系统中的数据对象。
答案:系统的数据流图如下图所示:系统的实体-联系图如下图所示:8.填空:对每个合理方案,分析员都应准备4分资料:1系统流程图2组成系统的物理元素清单3成本/效益分析4实现这个系统的进度计划。
9.名词解释:耦合:耦合是对一个软件结构内不同模块之间互连程度的度量。
内聚:内聚标志一个模块内各个元素彼此结合的紧密程度,他是信息隐藏和局部化概念的自然扩展。
10.分析:较高较低耦合性,p.9711.填空:设计原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。
12.由高到低功能内聚,顺序内聚,通信内聚,过程内聚,时间内聚,逻辑内聚,偶然内聚13.分析:深度,宽度,扇入,扇出P.10014.分析:程序流程图优缺点?答:1.不是逐步求精的好工具。
2.流程图用箭头代表控制流,程序员不受约束可以随意转移控制。
3.流程图不易表示数据结构。
15.分析盒图N-S图的特点?答:1.功能域明确,可以从盒图一眼看出2.不能随意转移控制3.很容易确定局部和全程数据的作用域4很容易表现嵌套关系,也可以表示模块的层次结构。
16.PAD图的优缺点?答:1设计出来的程序必然是结构化程序2程序结构清晰3易读易懂易记易修改4容易将PDA图转换成高级语言源程序5可表示程序逻辑也可描绘数据结构6支持自顶向下逐步求精方法使用。
17.名词解释:PAD图:问题分析图,用二维树形结构的图来表示程序的控制流,翻译成代码比较容易。
18.面向数据结构的设计方法:最终目标是对程序处理过程的描述,这种方法最适合在(详细设计)阶段使用。
19.软件测试目标?答:1测试是为了发现程序中的错误而执行程序的过程2好的测试方案是极有可能发现迄今为止尚未发现的错误的测试方案3成功的测试是发现了至今尚未发现的错误的测试。
20.软件测试的准则?答:1所有测试都应该追溯到用户需求2该在测试之前制定测试计划3把Pareto原理应用到软件测试中4从小规模测试开始逐步进行大规模测试5穷举测试是不可能的。
6为达到效果应该由第三方从事测试工作。
21.单元测试概念:P15322.名词解释:回归测试:回归测试是用于保证由于调试或其他原因引起的变化,不会导致非预期软件行为或额外错误的测试活动。
23.Alpha和Beta:Alpha测试由用户在开发者的场所进行,并在开发者的指导下进行。
Beta 测试由软件最终用户在一个或多个场所进行。
24.判断:满足条件覆盖一定满足判定覆盖,错。
满足判定覆盖一定满足条件覆盖,错。
25.判断,经过黑盒测试正确则白盒测试一定正确,错。
26.划分出等价类以后,根据等价类测试方案主要使用两个步骤:1设计一个新的测试方案以尽可能多地覆盖尚未被覆盖的有(效等价类),重复这一步骤到所有有效等价类都被覆盖。
2设计一个新的测试方案,使它覆盖一个而且只覆盖一个尚未被覆盖的无效等价类,重复步骤直到无效等价类都被覆盖为止。
P17327.平均无故障时间MTTF和平均维修时间MTTR的概念,计算。
P18028.7-4、回答下列问题。
(1)什么是模块测试和集成测试?它们各有什么特点?(2)假设有一个由1000行FORTRAN语句构成的程序(经编译后大约有5000条机器指令),估计在对它进行测试期间将发现多少个错误?为什么?(3)设计下列伪码程序的语句覆盖和路径覆盖测试用例。
STARTINPUT(A,B,C)IF A>5THENX=10ELSEX=1END IFIF B>10THENY=20ELSEY=2END IFIF C>15THENZ=30ELSEZ=3END IFPRINT(X,Y,Z)STOP解答:(1)见教材。
(2)经验表明,在类似的程序中,单位长度里的错误数ET/IT近似为常数。
美国的一些统计数字表明,通常:0.005<=ET/IT<=0.02,即在测试之前,每1000条指令中大约有5~20个错误。
所以,在对1000行FORTRAN语句构成的程序进行测试期间将发现的错误的个数大约有25~100个。
(3)该伪码程序对应的程序流程图如下:从上到下每个判定依次命名为a、b、c:29.对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h。
要求:(1)根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间τ的关系曲线。
在画这条曲线时做了什么假设?(2)为做到MTTF=100h,必须进行多长时间的集成测试?(3)当集成测试结束时总共改正了多少个错误,还有多少个错误潜伏在程序中?解答:(1)因为平均无故障时间MTTF与测试时间τ之间存在线性关系,即MTTF=a+bτ,由于:10=a+b,15=a+2b,得到:a=5,b=5故:平均无故障时间MTTF与测试时间τ之间存在线性关系为:MTTF=5+5τ(2)为做到MTTF=100h,有方程:100=5+5τ,故τ=19即必须进行19个月的集成测试。
(3)由于经验:平均无故障时间与单位长度程序中剩余的错误数成反比,故有:MTTF=10000/(K*(ET-EC(τ)))由于:10=10000/(K*(ET-15)),15=10000/(K*(ET-25))得到:ET=45,K=33.33当集成测试结束时,MTTF=100h,有:100=10000/(33.33*(45-EC(19)))故:EC(19)=42,即当集成测试结束时总共改正了42个错误,还有45-42=3个错误潜伏在程序中。
30.在测试一个长度为24000条指令的程序时,第一个月由甲、乙两名测试员各自独立测试这个程序。
经一个月测试后,甲发现并改正20个错误,使MTTF达到10h。
与此同时,乙发现24个错误,其中6个甲也发现了。
以后由甲一个人继续测试这个程序。
问:(1)刚开始测试时程序中总共有多少个潜藏的错误?(2)为使MTTF达到60h,必须再改正多少个错误?还需用多长测试时间?(3)画出MTTF与集成测试时间τ之间的函数关系曲线。
解答:(1)本题中采用的是分别测试法,测试前程序中的错误总数:B0=B1*B2/bc=20*24/6=80(2)由于经验:平均无故障时间与单位长度程序中剩余的错误数成反比,故有:MTTF=24000/(K*(ET-EC(τ)))由于:10=24000/(K*(80-20))得到:K=40为使MTTF达到60h,有:60=24000/(40*(80-EC(τ)))故:EC(τ)=70,即总共需要改正70个错误,由于测试员甲和乙分别测试时,测试员甲已经更正了20个错误,以后由甲一个人继续测试这个程序,因此,还需要更正70-20=50个错误。
补充:【复旦大学2001年博士研究生入学考试试题】某模块的程序流程图如下。
试分别根据判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖等覆盖标准设计最少的测试用例。
$:从上到下给每个判定依次编号为a、b。
路径覆盖与判定覆盖或判定/条件覆盖一致。