当前位置:文档之家› 软件工程导论知识点总结(整理)

软件工程导论知识点总结(整理)

《软件工程导论》课后习题答案

第一章软件工程概论

1.什么是软件危机?

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.这

些问题表现在以下几个方面:

(1)用户对开发出的软件很难满意.

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

(3)一般软件很难维护.

(4)软件生产效率很低。

(5)软件开发成本越来越大.

(6)软件成本与开发进度难以估计.

(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。

2.为什么会产生软件危机?

(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。

(2)软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。

(3)尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求.

3.怎样克服软件危机?

(1)充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。

(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。

(3)根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。

总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

4。构成软件项目的最终产品:

应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料.

5.什么是软件生存周期?

软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。

6.软件生存周期为什么划分成阶段?

(1)任何一个阶段的具体任务不仅独立,而且简单,便于不同人员分工协作,从而降低整个软件开发工作的困难程度。

(2)可以降低每个阶段任务的复杂程度,简化不同阶段的联系,有利于工程的组织管理,也便于采用良好的技术方法.

(3) 使软件开发的全过程以一种有条不紊的方式进行,保证软件的质量,特别是提高了软件的可维护性。

7.应该怎样来划分阶段?

(1)每一个阶段的任务尽可能独立;

(2)同一阶段内的任务性质尽可能相同;

(3)每一个阶段任务的开始和结束有严格的标准。

8.软件开发模型有几种?它们的开发方法有可特点?

软件开发模型有瀑布型、渐增型和变换型。

瀑布型开发方法是按照软件生存周期的划分依次实施,每一个阶段有明确规定的任务。它的特点:

(1)各个阶段的顺序性和依赖性;

(2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现;

(3)每个阶段必须完成规定的文档,对其中问题通过复审及早发现,及早解决。

渐增型开发方法及特点:

(1) 从部分需求出发,先建立一个不完全的系统,通过测试运行该系统取得经验和信息反馈,加深对软件需求的理解,进一步使系统扩充和完善。如此反复,直至软件人员和用户对所设计完成的软件系统满意为止.

(2)在渐增型开发下的软件是随软件开发的过程而逐渐形成的。

(3) 渐增型开发方法适合于知识型软件的开发,设计系统时对用户需求的认识开始不是很清楚的,需要在开发过程中不断认识、不断获得新的知识去丰富和完善系统。多数研究性质的试验软件,一般采用此方法。

变换型开发方法及特点:

(1)从软件需求的形式化说明出发,经过一系列的程序变换,得到最终的程序系统。

(2)该方法必须有严格的数学理论和形式化技术的支持。

9.什么是软件工程?

软件工程是指导计算机软件开发和维护的工程学科。

(1)它采用工程的概念、原理、技术和方法来开发和维护软件;

(2) 它将管理技术与当前经过时间考验的而证明是正确的技术方法结合起来;

(3) 它强调使用生存周期方法学和结构分析和结构技术;

(4) 经过人们长期的努力和探索,围绕着实现软件优质高产这个目标,从技术到管理两个方面做了大量的努力,逐渐形成了”软件工程学”这一新的学科。

10.什么是软件工程环境:

方法与工具的结合,加上配套的软、硬件支持称为软件工程环境。它能支持开发者按照软件工程的方法,全面完成生存周期中的各项任务。

第二章可行性研究

1. 问题定义的任务和主要工作?

问题定义的任务:将用户提出的要求具体化、定量化;确定研制系统的范围,明确研制的边界。

问题定义阶段的工作:

(1)通过调查研究,了解系统需求;

(2) 确定系统的功能需求、性能需求、可靠性需求、安全及保密性、资源、开发费用及开发进度等的需求;

(3)问题定义阶段的产品——系统目标与范围说明书。

2。可行性研究目的?

确定在问题定义中所提出的问题是否值得去解,在限制条件下,问题能否解决。3.可行性研究的任务?

(1) 进一步分析和澄清问题的定义,在澄清问题的基础上,导出系统的逻辑模型;

(2) 从系统逻辑模型中,选择问题的若干种主要解法,研究每一种解法的可行性,为以后的行动提出建议;

(3)如果问题没有可行的解,建议停止系统开发;如果问题有可行的解,应该推荐一个较好的解决方案,并为工程制定一个初步的计划.

4.可行性研究包括哪几方面的内容?

(1)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;

(2)经济可行性:经济效益是否超出开发成本;

(3)操作可行性:系统操作在用户内部行得通吗?

(4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律。5.可行性研究的步骤?

(1)复查系统的规模和目标;

(2)研究目前正在使用的系统,总结现有系统的优劣,提出新系统的雏形;

(3)导出新系统的高层逻辑模型;

(4)推荐建议方案;

(5)推荐行动方针;

(6)书写计划任务书(可行性报告);

(7)提交审查。

6. 可行性研究报告的主要内容?

可行性分析的结果是可行性研究报告,内容包括:

(1)系统概述:说明开发的系统名称,提出单位和开发单位。

(2)可行性研究的前提:系统目标;要求;约束和限制;可行性研究的基本准则等。

(3)对现有系统的分析:处理流程,图示说明现有系统的处理流程和数据流程;现有系统存在的问题。

(4) 系统需求:主要功能;主要性能及其要求;操作要求;信息要求;限制性要求。

(5) 建议系统:系统目标;处理流程;系统结构,功能,性能;系统技术可行性;投资和效益分析;操作可行性;法律可行性.

(6) 其它可选方案:与国内外同类型方案的比较;提出一两个可行性方案供论证和探讨。

(7)制定下一阶段的预算。

(8)结论性意见:由用户方、设计方和投资方共同签署意见。

第三章需求分析

1。需求分析的描述工具有哪些?

有数据流图、数据字典、判定表、判定树、结构化自然语言、层次方框图、Warnier图、IPO图和需求描述语言等.

2。需求分析的基本任务是什么?

准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。

3.怎样建立目标系统的逻辑模型?要经过哪些步骤?

建立目标系统的逻辑模型的过程也就是数据流图的分解过程。

4.什么是结构化分析?它的结构化体现在哪里?

结构化分析:使用数据流程图、数据字典、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档—需求规格说明书。

结构化体现在将软件系统抽象为一系列的逻辑加工单元,各单元之间以数据流发生关联。

5。软件需求规格说明书由哪些部分组成?

组成包括:

(1)引言:编写目的、背景说明、术语定义及参考资料等。

(2)概述主要功能、约束条件或特殊需求.

(3)数据流图与数据字典。

(4) 用户接口、硬件接口及软件接口。

(5)性能需求、属性等.

(6) 其它需求,如数据库、操作及故障处理等。

6.为什么数据流图要分层?画分层的DFD要遵循哪些原则?

分层的目的:便于逐步细化、结构清晰。

画分层的DFD要遵循哪些原则:

(1)父图与子图之间数据要平衡。

(2)分解的深度和层次达到使加工足够简单、易于理解的基本加工为止。

(3)区分局部文件和局部外部项(局限于数据流中某一层或某几层的文件和外部项)。

(4)不要把控制流作为数据流。

(5)忽略琐碎的枝节。

(6)每个数据流要有一个合适的名字,尽量使用现实系统中有具体意义的名字。

7。系统流程图与数据流程图有什么区别?

系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具。

系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况。

数据流程图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况.

8。数据字典包括哪些内容?它的作用是什么?

数据字典是描述数据流图中数据的信息的集合。它对数据流图上每一个成分:数据项、文件(数据结构)、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部分组成。对用户来讲,数据字典为他们提供了数据的明确定义;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型。

9.描述加工逻辑的工具有哪些?

判定树、判断表和结构化语言等.

第四章总体设计

1。系统设计包括哪两个阶段?

系统设计包括总体设计与详细设计两个阶段。

2. 总体设计的主要任务是什么?

总体设计的主要任务是完成软件结构的设计,确定系统的模块及其模块之间的关系。3。什么是模块?模块具有哪几个特征?总体设计主要考虑什么特征?

模块是数据说明、可执行语句等程序对象的集合,可以单独命名且可通过名字来访问。

模块具有输入和输出(参数传递)、功能、内部数据结构(局部变量)和程序代码四个特性。

概要设计主要考虑输入、输出(参数传递)和功能两个特性。

4。什么是模块化?模块设计的准则?

模块化是按规定的原则将一个大型软件划分为一个个较小的、相对独立但又相关的模块。

模块设计的准则:

(1) 改进软件结构,提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合。

(2)模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中。

(3) 软件结构图的深度、宽度、扇入和扇出要适当.一般模块的调用个数不要超过5个.

(4)尽量降低模块接口的复杂程度;

(5) 设计单入口、单出口的模块.

(6)模块的作用域应在控制域之内。

5。变换型数据流由哪几部分组成?

变换型结构由三部分组成:传入路径、变换(加工)中心和传出路径。

6。变换分析设计的步骤?

(1)区分传入、传出和变换中心三部分,划分DFD图的分界线;

(2)完成第一级分解:建立初始SC图的框架;

(3) 完成第二级分解:分解SC图的各个分支;

(4) 对初始结构图按照设计准则进行精化与改进。

7。事务型数据流由哪几部分组成?

事务型结构由至少一条接受路径、一个事务中心与若干条动作路径组成.

8。事务分析设计的步骤?

(1) 在DFD图中确定事务中心、接收部分(包含全部接收路径)和发送部分(包含全部动作路径);

(2)画出SC图框架,把DFD图的三部分分?quot;映射”为事务控制模块,接收模块和动作发送模块.一般得到SC图的顶层和第一层(如果第一层简单可以并入顶层);

(3) 分解和细化接收分支和动作分支,完成初始的SC图;

(4) 对初始结构图按照设计准则进行精化与改进.

9。比较层次方框图与结构图是的异同?

(1) 层次方框图描绘数据的层次结构, 结构图描绘的是软件结构。

(2)二者都采用多层次矩形框树形结构。层次方框图的顶层矩形框代表完整的数据结构, 下面各层矩形框依次代表上个框数据的子集;结构图是在层次图的每一个方框内注明模块的名字或主要功能,方框之间的直线表示模块的调用关系,用带注解的箭头表示模块调用过程中传递的信息。

第五章详细设计

1.详细设计的目的?

为软件结构图(SC图或HC图)中的每一个模块确定采用的算法和块内数据结构,用某种选定的表达工具给出清晰的描述。

2。详细设计的主要任务?

编写软件的“详细设计说明书”.软件人员要完成的工作:

(1)为每一个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程描述。

(2)确定每一模块使用的数据结构.

(3) 确定模块结构的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及关于模块输入数据、输出数据及局部数据的全部细节。

(4) 为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试。

3.结构化程序设计的基本原则?

在详细设计中所有模块都使用单入口、单出口的顺序、选择、循环三种基本控制结构。

4.比较面向数据流和面向数据结构两类设计方法的异同?

相同点:

(1) 遵守结构程序设计“由顶向下”逐步细化的原则,并以其为共同的基础;

(2)均服从“程序结构必须适应问题结构"的基本原则,各自拥有从问题结构(包括数据结构)导出程序结构的一组映射规则。

不同点:

(1) 面向数据流的设计以数据流图为基础,在分析阶段用DFD表示软件的逻辑模型,在设计阶段按数据流类型,将数据流图转换为软件结构。面向数据结构的设计以数据结构为基础,从问题的数据结构出发导出它的程序结构。

(2)面向数据流的设计的最终目标是软件的最终SC图,面向数据结构的设计的最终目标是程序的过程性描述。

5。比较Jackson方法和LCP方法的异同?

Jackson与LCP设计方法都是以数据结构为出发点,以程序的过程描述为最终目标,设计步骤基本相似。它们的主要差别是:

(1)使用不同的表达工具,其中LCP方法中的表达工具Warnier图

比Jackson设计方法中的表达工具Jackson图有更大的通用性;

(2)Jackson方法的步骤和指导原则有一定的灵活性,而LCP设计

方法则更加严密。

6.详细设计的描述工具应具备什么功能?

无论哪类描述工具不仅要具有描述设计过程,如控制流程、处理功能、数据组织及其它方面的细节的能力,而且在编码阶段能够直接将它翻译为用程序设计语言书写的源程序。

第六章编码

1。编码的任务?

使用选定的程序设计语言,把模块的过程性描述翻译为用语言书写的源程序(源代码).

2. 对源程序基本要求?

源程序要求:正确可靠、简明清晰、效率高。

(1)源程序的正确性是对程序质量的最基本要求;

(2)源程序的简明清晰,便于验证源代码和模块规格说明的一致性,容易进行测试和维护;

(3)对于大多数模块,编码时应该把简明清晰放在第一位;

(4)除了编码阶段产生源代码外,在测试阶段也需要编写一些测试程序,用于对软件的测试。

3. 程序设计语言的特点?

(1) 名字说明:程序中使用对象的名字,能为编译程序所检查和识别;

(2) 类型说明:定义对象的类型,确定该对象的使用方式;

(3)初始化:为变量提供适当的初始值或由系统给变量赋一特殊的表明未初始化的值;

(4)对象的局部性:程序中真正需要的那部分才能访问的对象;

(5) 程序模块:控制程序对象的名字;

(6)循环控制结构:如FOR语句、WHILE—DO语句、REPEAT-UNTIL语句等;

(7)分支控制结构:如IF语句、CASE语句等;

(8) 异常处理:为程序运行过程中发生的错误和意外事件提供检测和处理上的帮助;

(9) 独立编译:能分别编译各个程序单元.

4。选择程序设计语言需要考虑的因素?

(1)选择用户熟悉、便于用户维护的语言.

(2)选择目标系统的环境中可以提供的编译程序所能选用的语言。

(3)选择可以得到的软件工具,能支持程序开发中可以利用的语言。

(4)根据工程规模的大小、目标系统应用范围,如实时应用选择Ada语言或汇编语言,系统软件开发选择C语言或汇编语言,软件开发中若含有大量数据操作则选择SQL、dBASE等数据库语言等。

(5) 选择程序员熟悉的语言。

(6)选择标准化程度高、程序可移植性好的语言。

(7) 根据算法与计算的复杂性、数据结构的复杂性选择。如对于系统程序和结构复杂的应用程序,选择支持数组、记录(或结构)与指针动态数据结构的Pascal语言或C语言。

(8)根据实时要求系统需要的响应速度和效率选择相应的语言。

5。编码风格的指导原则。

(1)源程序:包括适当的标识符、适当的注解、程序清单的合理布局与清晰;

(2)数据说明:数据结构或数据类型的说明次序标准化;变量名称尽量有意义;对复杂的数据结构在注解中要说明在程序设计中实现这个数据结构的方法。

(3)语句的构造简单明了:不要为节省空间将多个语句写在同一行;尽量避免复杂的条件及“非"条件的测试;避免大量使用循环嵌套和条件嵌套;括号的使用是为了使逻辑表达式和算术表达式的运算顺序清晰直观。

(4)效率:考虑程序运行的时间存储器效率、输入/输出的效率;在处理程序正确性、清晰与效率之间的关系时先求程序正确后求快;先求清楚后求快;保持程序简单以求快;书写清楚,不为“效率”牺牲清晰。

6。第四代语言(4GL)应具备哪些的特征?

(1) 具有很强的数据管理能力,能对数据库进行有效的存取、查询和其它有关操作;

(2) 能提供一组高效的、非过程化的命令,组成语言的基本语句,编程时用户只需用这些命令说明“做什么”,不必描述实现的细节;

(3) 能满足多功能、一体化的要求.为此,语言中除必须含有控制程序逻辑与实现数据库操作的语句外,还应包括生成与处理报表、表格、图形,以及实现数据运算和分析统计功能的各种语句,共同构成一个一体化的语言,以适应多种应用开发的需要。

第七章软件测试

1。软件测试的基本任务?

软件测试是按照特定的规则,发现软件错误的过程;好的测试方案是尽可能发现迄今尚未发现错误的测试;成功的测试方案是发现迄今尚未发现错误的测试;

2.测试与调试的主要区别?

(1)测试从一个侧面证明程序员的失败;调试证明程序员的正确;

(2) 测试从已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试从不可知内部条件开始,除统计性调试外,结果是不可预见的;

(3) 测试有计划并且要进行测试设计;调试不受时间约束;

(4)测试是发现错误、改正错误、重新测试的过程;调试是一个推理的过程;

(5) 测试执行是有规程的;调试执行要求程序员进行必要的推理;

(6)测试由独立的测试组在不了解软件设计的件下完成;调试由了解详细设计的程序员完成;

(7)大多数测试的执行和设计可由工具支持;调试用的工具主要是调试器。

3.人工复审的方式和作用?

人工复审的方式:代码会审、走查和排练和办公桌检查;

人工复审的作用:检查程序的静态错误.

4.什么是黑盒测试?黑盒测试主要采用的技术有哪些?

黑盒测试:也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构。测试者把被测程序看成一个黑盒,不用关心程序的内部结构。黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。

黑盒测试主要采用的技术有:等价分类法、边沿值分析法、错误推测法和因果图等技术. 5。什么是白盒测试?白盒测试主要采用的技术有哪些?

测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致。

白盒测试主要采用的技术有:路径测试技术和事务处理流程技术,对包含有大量逻辑判断或条件组合的程序采用基于逻辑的测试技术。

6。路径测试技术中几种主要覆盖的含义?举例说明?

语句覆盖:至少执行程序中所有语句一次。

判定覆盖:使被测程序中的每一个分支至少执行一次。故也称为分支覆盖。

条件覆盖:执行所有可能的穿过程序的控制路流程。

条件组合测试:设计足够的测试用例,使每个判定中的所有可能条件取值组合至少执行一次。

7。等价分类法的测试技术采用的一般方法?举例说明?

(1)为每个等价类编号;

(2) 设计一个新的测试方案,以尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步骤,直到所有有效等价类被覆盖为止。

(3)设计一个新的测试方案,使它覆盖一个尚未被覆盖的无效等价类, 重复这一步骤,直到所有无效等价类被覆盖为止。

8。软件测试的一般步骤?

单元测试、子系统测试、系统测试、验收测试、平行测试。

9.比较集成试的两种方式的优劣?

非渐增式测试方式:分别测试模块,再把所有模块按设计要求放在一起组成所要的程序.该方法编写测试软件工作量大,模块间的接口错误发现得晚,错误定位较难诊断,总体测试有的错误容易漏掉,测试时间相对较少,可以并行测试所有模块,能充分利用人力,加快工程进度。.

渐增式测试方式:把下一个要测试的模块,同已经测试好的那些模块结合起来进行测试。该方法利用已测试过的模块作测试软件,开销小,较早发现模块间的接口错误,错误定位往往和最近入的模块相关,对已测试好的模块可在新加入模块的条件下受到新的检验,测试更彻底,需要较多的测试时间,不能并行测试.

总的来说,渐增式测试方法比较好.

10。软件测试的策略?

(1) 在任何情况下都应使用边界值分析的方法。

(2) 必要时用等价类划分法补充测试方案.

(3) 必要时再用错误推测法补充测试方案。

(4)对照程序逻辑,检查已设计出的测试方案.

(5)根据对程序可靠性的要求采用不同的逻辑覆盖标准,再补充一些测试方案。

第八章软件维护

1.为什么说软件的维护是不可避免的?

因为软件的开发过程中,一般很难检测到所有的错误,其次软件在应用过程中需要随用户新的要求或运行环境的变化而进行软件的修改或完成功能的增删等,为了提高软件的应用

水平和使用寿命,软件的维护是不可避免的。

2。软件的维护一般分为哪几类?

改正性维护:满足用户对已开发产品的性能与运行环境不断提高的要求,进而达到延长软件寿命的目的。

适应性维护:对程序使用期间发现的程序错误进行诊断和改正的过程,配合变化了的环境进行修改软件的活动;

完善性维护:满足用户在使用过程中提出增加新的功能或修改已有功能的建议而进行的工作;

预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作。

3.影响软件维护的因素有哪些?

开发方法:采用模块化详细设计文档有助于理解软件的结构、界面功能和内部流程;开发过程中严格而科学的管理规划及清晰可靠的文档资料对发生错误后的理解与纠错是至关重要的;开发过程中模块的独立程度越高,对软件修改越容易,对软件的改进和移植越方便。

开发条件:软件开发及维护人员的水平决定了软件开发的质量和维护的效率;开发过程中使用标准的程序设计语言和标准的操作系统接口,可以大大提高软件的可维护性;在测试过程中用例的有效性,可极大地减少软件存在的错误;其次使用规范化的文档资料可为维护提供更好的依据.

4.软件维护困难主要表现在什么方面?

(1) 一般来讲,维护人员对开发人员写的程序及文档,理解都比较困难,对维护工作不会喜欢;

(2) 维护持续时间都很长,在开发人员不在现场的轻快下,维护软件通常是很困难的;

(3) 绝大多数软件在设计时对将来的软件修改都没有考虑或考虑不多,尤其未能在设计中强调并认真解决好模块的独立性,使软件的修改既困难又易发生差错。

5.决定软件可维护性的因素?

(1) 软件的可理解性、可测试性、可修改性;

(2) 文档描述符合要求、用户文档简洁明确、系统文档完整并且标准。

6。软件价格应该计入维护成本吗?为什么?

在软件的生命周期中,软件维护的工作量非常大,不同应用领域的维护成本差别也很大。一般大型软件的维护成本远远高于开发成本若干倍。因此软件价格中应该计入维护成本.

第九章软件工程管理

1。软件工程管理的内容?

(1)费用管理: 对软件开发进行成本核算,使软件生产按照商品生产的规律办事。包括:以简单、科学方法估算软件开发费用,作为签定开发合同的根据;管理开发费用的有效使用,即用经济手段来保证产品如期按质完成。

(2) 质量管理:按项目的质量保证计划,确保各个开发阶段的开发和维护工作全部按软件工程的规范进行,保证软件产品的质量.

(3)配置管理:通过对于程序、文档和数据的各种版本所进行的管理,保证资料的完整性与一致性。

(4)项目管理:制定《项目实施计划》,按照计划的内容组织和实施软件的工程化生产。最终目标是以合理的费用和进度,圆满完成计划所规定的软件项目。

2。软件项目有哪些特点?

(1)软件项目与其他任何产业项目不同,它是算法、思想、概念、组织、流程、效率、优化等的融合体;

(2)开发软件项目产品,在多数情况下,用户给不出明确的想法和要求.

(3) 在开发过程中,程序及其相关的文档资料常常需要修改,在修改过程中又可能带来新的问题,且这些问题要在很久以后才会发现。

(4) 在研制开发过程中,文档资料是不可缺少的,但工作量又是巨大的,往往也是人们不愿去作的.

(5)参加软件项目的工作人员,要求具有一定的业务水平和实际工作经验,而很难完全避免的人员流动,对工作的影响是很大的.离开的人员不仅带走了重要的信息,而且带走了工作经验。

3。软件成本估算的一般方法?

自顶向下估计:首先估算出项目总的开发成本,然后在项目内部进行成本分配。由少数专家参与,依靠他们过去的经验,将要开发的软件与过去开发过的软件进行"类比",以估计新的软件开发所需要的工作量和成本.

自底向上估计:将开发任务分成若干子任务,子任务又分成子子任务,直到每一个单元内容足够明确为止;把各个任务单元的成本估计出来,汇合成项目的总成本。该方法得到的结果比较接近实际。

4.为什么在软件开发中,不能用简单增加人员的方法来缩短开发时间?

大量软件开发实践说明:向一个已经延迟的项目追加开发人员,可能使它完成得更晚.因为当开发人员以算术级数增长时,而人员之间的通信将以几何级数增长,往往”得不偿失". 5。影响软件质量的主要因素有哪些?

(1) 产品运行:正确性、风险性、效率、完整性、健壮性和可用性;

(2) 产品修改:可理解性、可维护性、灵活性、可测试性;

(3) 产品转移:可移植性、可重用性和互运行性.

软件工程知识点

软件工程导论要点 第一章概述 1.软件:软件是能够完成预定功能和性能的可执行的计算机程序,和使程序正常执行所需要的数据,加上描述程序的操作和使用的文档。 3.什么是软件危机?其产生的原因是什么? 软件危机:软件发展第二阶段的末期,由于计算机硬件技术的进步。一些复杂的、大型的软件开发项目提出来了,但,软件开发技术的进步一直未能满足发展的要求。 在软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。主要表现在以下几个方面: a.经费预算经常突破,完成时间一再拖延。 b.开发的软件不通满足用户要求。 c.开发的软件可维护性差。 d. 开发的软件可靠性差。(了解) 软件危机产生的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的: a.软件的规模越来越大,结构越来越复杂。 b.软件开发管理困难而复杂。 c.软件开发费用不断增加。 d.软件开发技术落后。 e.生产方式落后。 f.开发工具落后,生产率提高缓慢。(了解) 4.什么是软件工程?它的目标和内容是什么? 软件工程:采用工程的概念、原理、技术和方法来指导软件开发和维护的工程学科,以工程化的原理和方法来解决软件问题。 软件工程的目标是成功的建造一个大型软件系统,所谓成功是要达到以下几个目标: a.付出较低的开发成本; b.面到要求的软件功能; c.取得较好的软件性能; d.开发的软件易于移植; e.需要较低的维护费用; f.能按时完成开发任务,及时交付使用; g.开发的软件可靠性高; 软件工程的内容: 1)软件开发技术:软件开发方法、软件开发过程、软件开发工具和环境。 2)软件开发管理:软件管理学、软件经济学、软件心理学。 5.软件工程面临的问题是什么? 软件工程面临的问题: a.软件费用。 b.软件可靠性。 c.软件维护。 d.软件生产率。 e.软件重用。 6.什么是软件生存周期?它有哪几个活动? 软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。

软件工程导论复习重点总结很全(第六版)

软件工程导论复习重点总结很全(第六版) 软件工程导论复习重点总结很全(第六版) 软件工程是一门研究如何以系统化的、可管理的和可维护的方式来 构建高质量的软件的学科。在软件工程导论中,我们学习了软件开发 的基本概念、原理和方法。本文将对软件工程导论的重点内容进行总结,帮助读者巩固所学知识,为学习和工作提供帮助。 1. 软件工程概述 软件工程的定义、目标和原则;软件生命周期和过程模型;软件开 发的重要性和挑战;软件工程中的质量保证和风险管理。 2. 软件需求工程 软件需求的定义和分类;需求获取、分析和建模;需求验证和确认;需求变更和配置管理。 3. 软件设计 软件设计原则和方法;面向对象设计和结构化设计;软件架构设计;设计模式的应用。 4. 软件测试与调试 软件测试的概念和目的;测试策略和技术;测试用例的设计和执行;测试评估和管理;软件错误调试和修复。 5. 软件项目管理

软件项目管理的基本概念和流程;项目计划和进度管理;团队组织 和沟通;风险管理和变更管理;质量管理和配置管理;软件工程伦理 与法规。 6. 软件开发过程 软件开发过程模型的选择和应用;瀑布模型、迭代模型和敏捷开发 等常用模型的特点和比较;敏捷开发方法的原理和实践。 7. 软件工具与环境 软件开发工具的选择和使用;集成开发环境、版本控制工具、测试 工具和调试工具等的功能和特点;软件工程中的自动化工具和技术。 8. 软件工程的前沿技术 软件工程的新兴技术和趋势;人工智能、大数据、云计算等技术在 软件开发中的应用;软件工程的创新与创业。 通过对上述主要内容的学习和理解,我们可以全面掌握软件工程导 论的核心知识和方法。在今后的学习和实践中,我们应该注重理论与 实际的结合,不断提高自己在软件开发和项目管理方面的能力。只有 不断学习和实践,我们才能成为优秀的软件工程师,为社会和企业创 造更大的价值。 总结:软件工程导论是软件工程领域中的重要基础课程,通过对软 件开发过程和管理原理的学习,我们可以掌握软件工程的基本概念、 原则和方法。在软件工程导论的学习中,我们应该注重理论与实践的 结合,不断提高自己的实际操作能力。相信通过对本文的阅读和理解,

软件工程导论

知识点: 1.软件是能够实现预定功能和性能的可执行的计算机程序和使程序正常执行所需要的数 据,加上描述软件开发过程及其管理、程序的操作和使用的有关文档。 2.软件还可以简要地定义为:软件=程序+数据+文档。 3.软件被划分为系统软件、应用软件,其中系统软件包括操作系统和支撑软件。 4.软件危机指的是计算机软件开发和维护过程所遇到的一系列严重问题,表现如下: 1)对软件开发成本和进度的估算很不准确,用户很不满意 2)质量很不可靠 3)没有适当的文档 4)软件成本比重上升 5)供不应求,即软件开发生产率跟不上计算机应用迅速深入的趋势 5.软件危机的解决主要通过两种途径,分别是组织管理和技术措施 6.软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护 软件,以及如何把经过时间考验且被证明是正确的管理技术和当前能够得到的最好的方法结合起来。 7.软件工程的目标是提高软件的质量与生产率。 8.软件工程的四项基本原则:1)选取适宜的开发范形。2)采用合适的设计方法。3)提 高质量的工程支持。4)重视开发过程的管理。 9.软件生存周期是软件产生直到报废的生存周期,周期内包括问题定义、可行性分析、总 体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段。 10.问题定义阶段的内容主要是确定软件的开发目标及其可行性。 11.需求分析是指在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。 12.软件设计阶段主要是根据需求分析的结果对整个软件系统进行设计。 13.程序编码是将软件设计的结果转换成计算机可运行的程序代码。 14.软件测试是指在软件设计完成后要经过严密的测试,以便发现存在的问题并加以纠正。 15.软件维护是软件生存周期中持续时间最长的阶段。 16.软件过程的基本活动:1)软件描述2)软件开发3)软件有效性验证4)软件进化 17.一个完整的软件过程周期包含一个或多个循环过程,每一个循环过程均包含四个典型阶 段(又称过程阶段),即规划、设计、建造、和使用。 18.瀑布模型的特点:1)阶段间的顺序性和依赖性2)推迟实现的观点3)质量保证的观 点不足:1)不适应需求经常发生变更的环境2)瀑布模型也经常不能接受项目开始阶段自然存在的不确定性3)瀑布模型每一步的工作都必须以前一阶段的输出为输入,这种特征会导致工作中发生“阻塞”状态。 19.理想的瀑布模型要求后一阶段的工作对前一阶段的工作进行反馈,形成部分工作的迭代。 理想的瀑布模型是面向阶段的、线性的、传统的开发策略。 20.增量模型是指在需求难以完全明确的情况下,快速分析并构造一个小的原型系统,满足 用户的某些要求后,使用户在使用过程中受启发后再逐步确定各种需求,这就是增量模型。 21.增量模型的特点:1)第一个增量模型往往是核心部分的产品,它实现了软件的基本需 求,但很多已经明确或者尚不明确的补充特性还没有发布。2)核心产品交由用户使用或进行详细复审3)每个增量的开发可用瀑布或快速原型模型4)和原型模型不一样的是,增量模型虽然也具有“迭代”特征,但是每一个增量都发布一个可操作的产品,不妨称之为“产品扩充迭代”。 22.快速原型开发是指在项目早期尽快地生产一个便宜、简化的系统原型版本。特点是为了

软件工程导论知识点总结(整理)

软件工程导论知识点总结(整理) 1.什么是软件危机? 软件危机指在计算机软件的开发和维护过程中所遇到的一系列严重问题,包括用户难以满意、软件产品质量不可靠、维护困难、生产效率低下、开发成本增加、难以预估成本与进度、技术发展不能满足需求等方面。 2.为什么会产生软件危机? 软件危机的产生原因包括开发人员对软件缺乏正确认识、软件开发过程缺乏统一的方法论和规范指导、软件规模和复杂程度增加等。为了克服软件危机,需要充分吸收和借鉴人类长期以来从事各种工程项目中积累的有效原理、概念、技术与方法,并推广在实践中总结出来的成功的技术和方法,根据不同的应用领域开发更好的软件工具并使用这些工具,并且需要有必要的组织管理措施。 3.怎样克服软件危机? 为了解决软件危机,需要采取技术措施和组织管理措施。技术措施包括吸收有效原理、推广成功的技术和方法、开发更

好的软件工具等;组织管理措施包括良好的组织、严格的管理、相互友好的协作等。 4.构成软件项目的最终产品 软件项目的最终产品包括应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。 5.什么是软件生存周期? 软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。 6.软件生存周期为什么划分成阶段? 将软件生存周期划分成阶段可以降低每个阶段任务的复杂程度,简化不同阶段的联系,有利于工程的组织管理,也便于采用良好的技术方法。同时,每个阶段的具体任务独立而简单,便于不同人员分工协作,从而降低整个软件开发工作的困难程度。 2)分析需求,确定系统的功能和性能要求; 3)制定问题定义报告,明确系统的范围和边界,为后续的 可行性研究提供基础。

软件工程教学大纲(正式版)

《软件工程导论》课程教学大纲 一、课程基本信息 课程编号: 英文名称名:Software Engineering 总学时:54学时 学分:3 课程类别:专业必修课 适用专业:全校本(专)计算机科学与技术 先修课程:数据结构,大学数学,离散数学,计算机算法设计。 二、课程性质与目的、要求 《软件工程》是计算机专业的一门工程性基础课程,在软件工程学科人才培养体系中占有重要的地位。软件开发是建立计算机应用系统的重要环节,人们通过软件工程学把软件开发纳入工程化的轨道,而软件工程学是用以指导软件人员进行软件的开发、维护和管理的科学。《软件工程》已成为高等学校计算机软件教学体系中的一门核心课程,本课程以IEEE最新发布的软件工程知识体系为基础构建内容框架,注重贯穿软件开发整个过程的系统性认识和实践性应用,以当前流行的统一开发过程、面向对象技术和UML 语言作为核心,密切结合软件开发的先进技术、最佳实践和企业案例,力求从“可实践” 软件工程的角度描述需求分析、软件设计、软件测试以及软件开发管理,使学生在理解和实践的基础上掌握当前软件工程的方法、技术和工具。 通过本课程的学习,要求学生能掌握软件工程的基本概念、基本原理、开发软件项目的工程化的方法和技术及在开发过程中应遵循的流程、准则、标准和规范等;学生应能掌握开发高质量软件的方法,以及有效地策划和管理软件开发活动,为学生参加大型软件开发项目打下坚实的理论基础。 本课程注重培养学生理论应用于实践的能力,课堂上教师向学生讲述软件工程中的相关原理和概念,并通过课程设计,培养学生对整个软件开发过程的能力,让学生能切实体会到软件工程在实践中的指导作用,并按软件工程的要求完成规范的各项软件开发文档。本课程对提高学生的软件开发能力和项目管理能力有重要的现实意义。 三、教学内容及学时分配 本课程的教学内容共分十三章。

(完整)软件工程导论(第6版)知识点总结、复习课,推荐文档

复习课 --------酷爱YC 第一章 1、什么是软件危机,什么是软件工程 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。 软件工程:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件,并有效地维护它。 2、完整的软件配置由哪些内容组成 软件配置主要包括程序,文档和数据等成分。 3、软件生命周期分为哪3个时期和8个阶段,每个阶段的任务(工作)分别是什么,重要性如何 概括地说,软件生命周期由软件定义、软件开发和运行维护3个时期组成

1、软件定义(系统分析)。 软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成。软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。 (1) 问题定义,确定系统要解决的问题是什么。成果:关于问题性质、工程目标和工程规模的报告。 (2) 可行性研究,确定问题是否有可用的、能行得通的解(包括:技术、经济、操作、社会等方面的可行性)。这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。成果:可行性研究报告。 (3) 需求分析,确定软件系统的必须实现的功能、必须达到的性能、必须满足的运行环境要求。系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。在需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。成果:软件需求规格说明书(SRS),内容包括:系统的逻辑模型;系统(子系统)的名称、功能描述、接口、基本数据结构、性能、设计需求、开发标准、验收原则等。 2、软件开发。 开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。

软件工程导论知识点总结

软件工程导论知识点总结 一、软件工程概述 软件工程是将系统化、规范化、可度量化的方法应用于软件的开发、运行和维护的过程。软件工程包括软件开发过程、软件工具和方法以及软件质量管理等方面。 二、软件生命周期模型 1. 瀑布模型:依次完成需求分析、设计、编码、测试和维护等阶段。 2. 增量模型:将整个项目分为多个增量,逐步完成。 3. 螺旋模型:在瀑布模型基础上增加风险评估环节,不断迭代。 4. 原型模型:快速构建原型,反复修改完善。 5. 敏捷开发:注重快速响应变化,通过迭代交付高质量的软件。 三、需求分析 需求分析是指对用户需求进行详细的调查和分析,并将其转换为可实现的系统规格说明。主要包括功能性需求和非功能性需求两个方面。 四、设计 1. 结构设计:确定系统各个组成部分之间的关系。 2. 数据设计:确定数据结构及其组织方式。 3. 接口设计:定义各个组成部分之间的接口。

4. 过程设计:定义系统中各个过程的执行方式。 五、编码 编码是将设计好的系统规格说明转换为计算机可执行的程序代码,主要包括选择编程语言、编写代码、调试和测试等环节。 六、测试 测试是对软件进行验证和确认,主要包括单元测试、集成测试、系统测试和验收测试等环节。 七、维护 维护是指在软件交付后,对软件进行修改和更新以满足用户需求或修复缺陷。维护包括预防性维护、适应性维护和完善性维护等方面。 八、软件质量管理 软件质量管理是指通过各种手段确保软件产品满足用户需求,并具有可靠性、可用性、安全性等特点。主要包括质量计划制定、质量保证控制和质量评估等环节。 九、常见开发模式 1. 面向对象开发模式:采用面向对象的思想进行开发。 2. 组件化开发模式:将系统划分为多个组件进行开发。 3. 服务化开发模式:将系统划分为多个服务进行开发。

自考04735考点总结

自考04735考点总结 一、引言 自考04735,即《软件工程导论》是自考软件工程专业必修课程之一。作为软 件工程专业的入门课程,04735涉及了软件工程的基本概念、方法和技术等内容。下面将对该课程的考点进行总结,以帮助考生更好地备考和复习。 二、考点总结 1. 软件工程概述 •软件工程的定义和特点 •软件工程的发展历程 •软件危机及其产生的原因 •软件工程的目标和任务 在这一部分,考生需要了解软件工程的基本概念和发展历程,理解软件工程的 重要性以及软件危机的原因,明确软件工程的目标和任务。 2. 软件过程与模型 •软件过程的定义和特点 •软件过程模型的分类和特点 •瀑布模型、原型模型、增量模型、螺旋模型等具体的软件过程模型 这一考点要求考生了解软件过程的基本概念和特点,掌握各种常见的软件过程 模型的分类和特点,并能够理解各个模型的优缺点。 3. 需求工程 •需求工程的定义和重要性 •需求获取、需求分析和需求规格说明等过程 •需求验证和需求管理 考生需要了解需求工程的定义和重要性,掌握需求获取、需求分析和需求规格 说明等过程的基本方法和技巧,并了解需求验证和需求管理的基本概念。 4. 软件设计 •软件设计的基本原则和方法 •结构化设计和面向对象设计 •软件结构图、数据字典和程序流程图等设计工具

在这一部分,考生需要掌握软件设计的基本原则和方法,了解结构化设计和面向对象设计的基本概念和特点,并能够灵活运用软件设计工具。 5. 软件测试 •软件测试的目的和原则 •软件测试的基本分类和测试方法 •软件测试的工具和技术 考生需要了解软件测试的目的和原则,掌握软件测试的基本分类和测试方法,了解软件测试的常用工具和技术。 6. 软件质量与质量管理 •软件质量的定义和特点 •软件质量的度量和评估 •软件质量管理体系和质量保证 最后一个考点要求考生掌握软件质量的定义和特点,了解软件质量的度量和评估方法,并了解软件质量管理体系和质量保证的基本原理和方法。 三、总结 自考04735考试中,以上列举的六个考点是比较重要的内容,是考试中需要重点关注和准备的部分。考生在备考和复习过程中,应该深入理解每个考点的概念和原理,并通过练习题和习题集进行实践和巩固。 最后,祝愿各位考生能够在自考04735中取得好成绩! (注:本文档仅供参考,具体考试以教材为准)

软件工程导论考研真题

软件工程导论考研真题 软件工程导论考研真题 软件工程导论是软件工程专业研究生的必修课程之一,它的考试内容涵盖了软 件工程的基本概念、原理和方法。考研真题是考生备考的重要资料之一,通过 对真题的分析和解答,可以帮助考生更好地理解和掌握软件工程导论的知识点。本文将针对软件工程导论考研真题进行一些讨论和思考。 首先,我们可以从真题中找出一些常考的知识点。例如,软件工程的定义、软 件生命周期、软件需求分析与规格说明、软件设计与实现、软件测试与维护等。这些知识点是软件工程导论的核心内容,考生在备考过程中应该重点关注。同时,还可以通过分析历年真题,找出一些常见的考点和出题思路,以便更好地 应对考试。 其次,我们可以通过解答真题来巩固和应用所学的知识。通过解答真题,可以 帮助考生检验自己对软件工程导论知识的理解和掌握程度。在解答过程中,考 生可以运用所学的方法和技巧,分析问题、提炼关键信息、确定解题思路,并 给出清晰、准确的答案。通过不断地解答真题,考生可以逐渐提高解题的能力 和水平,为考试做好充分的准备。 此外,我们还可以通过对真题的分析来了解考试的命题特点和难点。软件工程 导论考试通常会涉及到理论知识和实践应用两个方面,考生需要既掌握理论知识,又能够灵活运用到实际问题中。在解答真题时,考生可以注意真题中的难 点和重点,分析命题的思路和要求,以便更好地应对考试。 最后,我们可以通过对真题的讨论和交流来拓宽视野和提高思维能力。在备考 过程中,考生可以与同学、老师或者网上的考研交流群进行讨论,分享自己的

解题思路和经验,听取他人的意见和建议。通过交流和讨论,可以帮助考生发 现自己的不足之处,找到解题的新思路和方法,提高解题的效率和准确性。 总之,软件工程导论考研真题是备考过程中的重要参考资料,通过对真题的分 析和解答,可以帮助考生更好地理解和掌握软件工程导论的知识点,提高解题 能力和水平。同时,通过对真题的讨论和交流,可以拓宽视野,提高思维能力。因此,考生在备考过程中应该充分利用真题,将其作为备考的重要工具,为考 试做好充分的准备。

软件工程导论——方法、工具和案例

嘿,大家好!今天我要给大家共享一些关于软件工程导论的东西。软 件工程就是搞软件开发、维护和管理的一门科学。软件工程导论包括 了软件开发的一些基本概念、方法、工具和案例分析。这个东西的目 的是为了帮助我们搞软件开发的人更好地了解软件工程为啥这么重要,学习软件工程的理论和方法,还能提高我们的软件开发能力和软件质 量的管理水平。 软件工程的方法 软件工程方法就是一些技术和工具的组合,是用来帮助咱们搞软件开 发的人更有效地开发软件的。有了这些方法,我们就能保证软件开发 的过程质量好,软件易维护、可靠。最常用的方法有敏捷开发、瀑布 模型、迭代模型等。每个方法都有它们自己的好处和坏处,所以搞软 件开发的时候要根据项目的需求来选用合适的方法。 软件工程的工具 软件工程工具就是一些软件和工具,是用来帮助我们设计、编码、测 试和管理软件开发过程的。有点常见的工具有集成开发环境(IDE)、版本控制工具、项目管理工具和测试工具。这些工具可以帮助我们提 高工作效率、减少错误和提高软件质量。 软件工程的案例

我们来说一个软件工程的案例,就是Facebook的软件开发过程。在Facebook的软件开发过程中,团队用了敏捷开发方法,每周进行一次迭代,及时反馈用户需求,不断地改进产品。他们还用了一堆先进的软件工程工具,比如Git进行版本控制、Jenkins进行持续集成,确保软件质量和稳定性。通过这些方法和工具的运用,Facebook成功地开发了一款功能强大、用户体验好的社交评台软件。 总结 软件工程导论包括了很多知识,包括方法、工具和案例。通过合适的方法、合适的工具和成功的案例分析,我们的软件团队就能提高软件开发和质量管理水平,给用户提供更靠谱的软件产品。学习软件工程导论是每个搞软件开发的人必须学的基础知识。

计算机基础知识点软件工程导论

计算机基础知识点软件工程导论计算机基础知识点-软件工程导论 计算机科学与技术的迅速发展,为现代社会带来了巨大的变革和崭 新的机遇。软件工程作为计算机科学的重要分支,对于开发高质量软 件以及保证软件项目的成功起着至关重要的作用。本文将为您介绍计 算机基础知识点中的软件工程导论。 一、软件工程导论的概念和重要性 软件工程导论是软件工程学科的入门课程,通过此门课程,我们可 以了解软件工程的定义、发展历程以及相关术语和方法论。软件工程 导论不仅帮助我们建立对软件工程的认知,还能够培养我们的软件开 发思维和实践能力,提升软件开发效率和软件质量。 二、软件生命周期 软件生命周期指的是软件从定义到报废的整个过程。软件生命周期 包括需求分析、软件设计、编码、测试以及维护等阶段。不同的软件 项目可能采用不同的开发方法和模型,如瀑布模型、敏捷开发模型等。了解软件生命周期是软件工程导论的重要内容之一。 三、软件需求工程 软件需求工程是软件工程过程中一个重要的阶段,其目标是明确软 件开发的需求和约束条件,为后续的设计、开发和测试工作奠定基础。

软件需求工程包括需求获取、需求分析、需求建模等步骤,通过需求 工程的实施,可以确保软件产品满足用户需求。 四、软件项目管理 软件项目管理是软件工程导论的核心内容之一,它涉及项目的计划、组织、调度、控制等方面。软件项目管理旨在合理分配资源,合理组 织开发团队,以确保软件项目按时交付、高质量完成。常用的软件项 目管理方法包括甘特图、PERT/CPM等。 五、软件质量保证 软件质量保证是软件工程导论的重要组成部分,它包括质量计划、 质量控制和质量改进等活动。通过软件质量保证,我们可以确保软件 产品符合用户需求,并具备高可用性、可靠性、安全性等特性。常用 的软件质量保证方法包括代码审查、单元测试、集成测试等。 六、软件配置管理 软件配置管理是指在软件开发过程中对软件配置项进行管理的活动,它涉及配置项标识、版本控制、变更管理等方面。合理的软件配置管 理可以帮助开发团队及时发现和解决问题,确保软件版本的一致性和 稳定性。 七、软件工程伦理和职业素养 在软件工程导论中,我们还将学习软件工程伦理和职业素养。软件 工程师在开发软件的过程中需要遵守伦理规范,如保护用户隐私、尊

软件工程导论复习重点总结很全(第六版)

软件工程导论复习重点总结很全(第六版)第1章软件工程学概述 1.1软件危机 1.1.1软件危机的介绍 软件危机(软件萧条、软件困扰:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 软件危机包含下述两方面的问题: 如何开发软件,满足对软件日益增长的需求; 如何维护数量不断膨胀的已有软件。 软件危机的典型表现: 1对软件开发成本和进度的估计常常很不准确; 2用户对“已完成的”软件系统不满意的现象经常发生; 3软件产品的质量往往靠不住; 4软件常常是不可维护的; 5软件通常没有适当的文档资料; 6软件成本在计算机系统总成本中所占的比例逐年上升; 7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 1.1.2产生软件危机的缘故原由 1与软件本身的特点有关

2与软件开发与维护的方法不正确有关 1.1.3消除软件危机的途径 对计算机软件有正确的认识。 认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。 应该开发和使用更好的软件工具。 总之,为了解决软件危机,既要有技术措施(方法和工具,又要有必要的组织管理措施。 1.2 1.2.1软件工程的介绍 软件工程:是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。(期中考 软件工程的本质特性: 软件工程关注于大型程序的构造 软件工程的中心课题是控制复杂性 软件经常变化

软件工程导论知识点总结(整理)

《软件工程导论》课后习题答案 第一章软件工程概论 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这 些问题表现在以下几个方面: (1)用户对开发出的软件很难满意。 (2)软件产品的质量往往靠不住. (3)一般软件很难维护。 (4)软件生产效率很低。 (5)软件开发成本越来越大。 (6)软件成本与开发进度难以估计. (7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。 2.为什么会产生软件危机? (1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。 (2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。 (3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求. 3.怎样克服软件危机? (1)充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。 (2)推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法. (3)根据不同的应用领域,开发更好的软件工具并使用这些工具.将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。 总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施. 4.构成软件项目的最终产品: 应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。 5.什么是软件生存周期? 软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程. 6.软件生存周期为什么划分成阶段? (1) 任何一个阶段的具体任务不仅独立,而且简单,便于不同人员分工协作,从而降低整个软件开发工作的困难程度。 (2) 可以降低每个阶段任务的复杂程度,简化不同阶段的联系,有利于工程的组织管理,也便于采用良好的技术方法. (3) 使软件开发的全过程以一种有条不紊的方式进行,保证软件的质量,特别是提高了软件的可维护性。 7.应该怎样来划分阶段? (1)每一个阶段的任务尽可能独立; (2)同一阶段内的任务性质尽可能相同;

(完整版)《软件工程导论》第五版张海藩编著总结

总结重点: ❖∙Unit1 ❖∙软件危机包含两方面的问题:一是如何开发软件,怎样满足人们对软件日益增长的需求?二是如何维护软件,使它们持久地满足人们的要求。 ❖∙软件工程学定义:把软件当作一种工业产品,采用工程学的原理来管理和组织软件的开发和维护,称为软件工程。 ❖∙软件是指程序、数据和文档三者共同构成的配置。 ❖∙包含与数据处理系统操作有关的程序、规程、规则以及相关文档的智力创作称为软件。文档是描述程序开发过程的,是智力创作的真实记录,是创作活动的历史档案和结晶。 ❖∙软件的描述性定义:软件由计算机程序,数据结构和文档组成。 ❖∙软件质量定义为“与软件产品满足规定的和隐含的需求能力有关的特征和特性的全体” 具体来说: 1)软件产品中能满足给定需求的性质和特性的总体; 2)软件具有所期望的各种属性的组合程度。 ❖∙将软件质量属性划分为六个特性(功能性、可靠性、易用性、效率、维护性和可移植性),这六个属性是面向用户的观点——面向管理的观点,且是定性描述的。 ❖∙软件质量度量体系:内部度量可用于开发阶段的非执行软件产品,外部度量只能在生存周期过程中的测试阶段和任何运行阶段使用。 ❖∙软件工程项目的基本目标:(1)低成本;(2)满足功能要求;(3)高性能;(4)易移植;(5)易维护。❖∙软件工程方法学就是要从技术和管理上提供如何去设计和维护软件。 ❖∙软件开发方法:面向数据流(约旦)方法、面向数据结构方法、面向对象方法。 ❖∙结构程序设计是进行以模块功能和处理过程设计为主的详细设计的基本原则。它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。 ❖∙用来辅助软件开发、运行、维护、管理、支持等过程中活动的软件称为软件工具(CASE)。 ❖∙软件生存周期定义:软件产品从形成概念开始,经过开发、使用和维护,直到最后不再使用的整个过程。各阶段的任务彼此间尽可能的相对独立,同一阶段内各项任务的性质尽可能的相同。软件的开发就是“按软件顺时间发展的过程分阶段进行”的。 ❖∙软件生存周期模型: 瀑布模型(阶段间具有顺序型和依赖性,清楚地区分逻辑设计与物理设计、尽可能推迟程序的物理实现,是文档驱动模型,遵循结构化设计); 原型模型(软件产品的开发是线性顺序进行的,本质是快速,用途是获知用户的真正需求,一旦需求确定,原型将被抛弃)。

软件工程导论知识点

软件工程导论知识点 软件工程导论 一、各章知识点 1、统一建模语言(UML):是一种面向对象的建模语言,它是运用统一的,标准化的标记 和定义实现对软件系统进行面向对象的描述和建模 2、封装 从字面上理解,所谓封装就是把某个事物包起来,使外界不知道该事物的具体内容。封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。 3、软件维护性的过程 分为四类:改正性维护;适应性维护;完善性维护;预防性维护 4、白盒、黑盒测试的概念 如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。这种测试叫做白盒测试,也叫结构测试。 如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用,这种测试叫做黑盒测试,也叫功能测试。

5、继承:继承是指能够直接获得已有的性质和特征,而不必重复定义它们 继承分单继承(树型结构)和多重继承(网状结构) 6、软件生命周期以及各阶段的任务(3个时期,9个阶段) 概括的说,软件生命周期由软件定义,软件开发和运行维护3个时期组成,通常把前两个时期再一步划分成若干个阶段。 软件定义时期:问题定义;可行性研究;需求分析三个阶段软件开发时期:总体设计;详细设计;编码和单元测试;综合测试五个阶段 软件定义时期的任务是: 确定软件开发工程的总目标; 研究该项目的可行性; 分析确定客户对软件产品的需求 估算完成该项目所需的资源和成本,并且制定工程进度表软件开发时期的任务是:具体设计和实现在前一个时期定义的软件 运行维护时期的任务是:通过对已交付使用的软件做必要的修改,使软件持久地满足客户的需求 7、需求/概要/详细设计阶段是干什么的? 需求分析阶段的基本任务是确定软件必须”做什么”,使用的概念主题是”功能” 概要设计阶段的任务是确定“怎样做“,使用的概念是”模块“

软件工程导论知识点

软件工程导论知识点 软件是程序、数据及相关文档的完整集合。其中,程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。 开发软件时,对于提高软件开发人员工作效率至关重要的是开发程序人员数量。 软件工程中描述软件生存周期的瀑布类型一般包括计划、需求分析、设计、编码、测试、维护等几个阶段。其中,设计阶段在治理上可以依次分成概要设计和详细设计两个步骤。 在结构化的分析方法中,用以表达系统内数据的运行情况的工具有数据流图。 在结构化的分析方法中,用实体关系图表达系统中的对象及其进展,在实体关系图中,表达对象和实体关系之间的关联有三种类型:一对一联系,一对多联系,多对多联系。 软件需求分析的任务,不应包括结构化程序设计,进行需求分析可使用多种工具,但判定表是不适用的,在需求分析中,分析员要从用户那里解决的最重要的问题是要让软件做什么。规格说明书的内容不应当包括对算法详细功能性描述,该文档在开发中具有重要的作用,但其作用不应包括软件可行性分析的依据。 原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于需求不确定性高的系统,它从用户界面的开发入手,

首先形成系统界面原型,用户运行用户界面原型,并就同意什么和不同意什么提出意见。 一个模块的多个下属模块在系统结构图中所处的左右位置是无关紧要的。 一组语句在程序中多处出现,为了节省内存空间,把这些语句放在一个模块中,该模块的内聚性是偶然内聚的。 将几个逻辑上相似的成份,放在同一个模块中,通过模块入口的一个推断决定执行哪一个功能,该模块的内聚性是逻辑内聚的。 模块中所有成份引用共同的数据,该模块的内聚性是通信内聚的。 模块内的某成份的输出是另一些成份的输入,该模块的内聚性是顺序内聚的。 模块中所有成份结合起来完成一项任务,该模块的内聚是功能内聚。 模块化程序设计:1.便于由多人分工编制大型程序。2.软件功能易于扩充。3.易于理解,也便与排错。4.只要模块之间的接口关系不变,模块内部实现细节的修改将不会影响别的模块。 5.模块间的单向调用关系叫做模块的层次结构。 程序设计风格指导原则:1.嵌套的重数应加以限制。2.尽量少使用全局变量。3.使用有意义的变量名。4.把常见的局部优化工作留给编译程序去做。5.程序的格式应有助于读者理解程序。

软件工程导论教案

计算机系统发展迅速,但是人们仍然没有彻底摆脱“软件危机”的困扰,软件已经成为限制计算机系统发展的瓶颈。计算机软件工程学就是为了研究如何消除软件危机而发展起来的。那么什么是软件危机呢? 在开始讲软件危机时我要先提出一个概念:什么是软件?(板书:软件危机、什么是软件)简单来举例像我们平时用的word、excel都是计算机软件。 软件就是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档。(软件的英文名为Software板书:software=program+data+document) 那它具有什么特性呢?在这里我向大家绘制两幅图,大家可以比较讨论一下 硬件的失效率刚开始是降低的,这个阶段就是磨合调整,通过调整失效率降低并达到一定时期的稳定,那为什么会失效率增高呢,硬件是物理实体它存在磨损用坏的问题。再来看软件的失效图像,我绘制了两条,一条是理想情况下,另一天是实际情况下。大家可以看出来吗?没错,开发出来的软件并不是永远有效的,随着用户的需求增大等情况失效率会增高。从图中我们还可以看出在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。因为软件是一种逻辑实体,并非具体的物理实体。 另外呢,软件复杂性很高,软件技术的发展落后于需求,成本也相当昂贵。 讲完软件的概念,那么软件危机就比较容易理解了,软件危机就是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 那么大家思考一下,能够正常运行的软件可能会存在软件危机吗?答案是可能会。实际上,几乎所有软件都不同程度地存在这些问题。比方说,你在用QQ软件时,它不能与你的计算机硬件环境兼容或是不能满足你的要求。 总结下来,软件危机需要应对两方面的问题: (1)如何开发软件,以满足对软件日益增长的需求 (2)如何维护数量不断膨胀的已有软件 软件危机又有哪些典型表现呢?我们在进行一项工程时是不是经常会有一个工程预算,软件工程也不例外,如果对软件开发成本和进度的估计不准确,那么就很容易使用户不满。再来如果没有和用户进行很好的沟通就着手编写程序,那么人家也不会满意;软件质量靠不住、软件开发出来是不可维护的,也可以说是不能够对其功能进行修改适应用户需求;软件开发供不应求都是软件危机的表现。 那么出现软件危机的原因是什么?在分析原因时我们就通常从内因外因来说,在前面我有讲到软件的特征,软件复杂度高,成本昂贵等都与软件危机的出现有关,外因则是由软件开发和维护的方法不正确有关。 下面我将引入一个问题,大家思考一下,假设你是软件公司的总工程师,当

软件工程导论张海藩编著考试范围及各章重点

软件工程考试整理 第一章 1、CASE(Computer Aided Software Environment) 2、软件危机的概念P1-2:指在软件开发和维护过程中所遇到的一系列严重问题。(如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件) 3、产生软件危机的原因P3:一方面与软件本身有的特点有关,另一方面也和软件开发与维护的方法不正确有关。 4、消除软件危机的途径P5:既要有技术措施(方法和工具),又要有必要的组织管理措施 5、软件工程支撑环境P5:如果把各个阶段使用的软件工具有机地集合成一个集体,支持软件开发的全过程。 6、软件工程的定义P5:是指导计算机软件开发和维护的一门工程学科。 具体的定义:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用与软件;②研究①中提到的途径。 7、软件工程方法学P9-10:包含三个要素:方法、工具和过程。最广泛的方法学包括传统方法学和面向对象方法学。 传统方法学:也称为生命周期方法学或结构化范型。主要是把软件生命 周期的全过程一次划分为若干个阶段,然后顺序地完成每 个阶段的任务。 面向对象方法学:4个要点(对象、类、继承、封装性)

8、软件生命周期3个时期 P13:软件定义、软件开发、软件维护 软件定义阶段:确定开发过程的总任务;工程的可行性;实现工程目标应采用的策略;系统必须完成的功能;估计资源和成本。 软件开发阶段:总体设计,详细设计(前两个阶段又称系统设计),编码和单元测试,综合测试(后两个阶段又称系统实现)。 9、三个模型的优缺点: 瀑布模型(带反馈环)P15 优点:①可强迫开发人员采用规范的方法;②严格规定了每个阶段必须提交的文档;③要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。 缺点:由于是一种文档驱动的模型,最终开发出的软件产品可能并不是用户真正需要的。 快速原型模型(不带反馈环)P17 可以通过快速构建起一个在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的办法,获取用户的真实需求。本质是“快速”。 增量模型P17 具有可在软件开发的早期阶段使投资获得明显回报和较易维护的优点,但是,要求软件具有开放的结构是使用这种模型时的固有的困难。 第二章

软件工程导论知识点概要

1.1软件危机 软件危机的表现 软件危机是指在计算机软件的开发、使用和维护过程中遇到的一系列重问题。 1〕本钱难以估计、本钱高。 2〕软件开发进度估计不准确,工程延期比比皆是。 3〕软件质量得不到保证〔功能和性能〕。 4〕用户对“已完成的〞软件系统不满意的现象经常发生。 5〕维护非常困难(多样性、复杂性、副作用)。 6〕软件通常没有适当的文档。 7〕软件产品供不应求,跟不上计算机普及速度。 产生软件危机的原因 〔1〕与软件本身的特点有关(逻辑复杂,本钱高,风险大,难于维护)。〔2〕与软件开发与维护的法不正确有关: 软件≠程序〔软件是程序、数据及相关文档的完整集合〕急于求成=拔苗助长(软件从定义、开发、使用和维护、废弃要经历一个漫长的生命期) 各自为阵无法学〔应要组织良好、管理密、各类人员协作共同完成的工程工程〕 1.2软件工程定义 软件工程是应用计算机科学、数学、心理学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、法,以提高质量、降低本钱和提高效率为目的。 软件工程包括技术和管理两面的容,是技术与管理严密结合所形成的工程学科。 软件工程的特性: 1. 软件工程关注于大型程序的构造 〔传统的程序设计技术和工具是支持小型程序设计的〕 2. 软件工程的中心课题是控制复杂性〔问题分解〕 3. 软件经常变化〔考虑将来要发生的变化〕

4. 开发软件的效率非常重要〔寻求更好、更有效的工具〕 5. 和谐地合作是开发软件的关键〔运用标准和规程〕 6. 软件必须有效地支持它的用户〔软件要效劳于用户〕 7. 在软件工程领域常是由具有一种文化背景的人替具有另一种文化背景的人创造产品 软件工程的7条根本原理 1.用分阶段的生命期方案格管理 2.坚持进展阶段评审 3.实行格的产品控制 4.采用现代程序设计技术 5.结果应能清楚地审查 6.开发小组的人员应该少而精 7.成认不断改良软件工程实践的必要性 软件工程法学 通常把在软件生命期全过程中使用的一整套技术法的集合称为法学(methodology),也称为型(paradigm)。 目前使用得最广泛的软件工程法学,分别是传统法学和面向对象法学。 软件工程法学包含3个要素:法、工具和过程。 1.3软件生命期 每阶段的根本任务: 1. 问题定义 2. 可行性研究 3. 需求分析 4. 总体设计 5. 详细设计 6. 编码和单元测试 7. 综合测试 8. 软件维护 1.4软件过程

相关主题
文本预览
相关文档 最新文档