南理工考研软件工程复习资料提要与习题1

合集下载

南理工考研软件工程复习资料:提要与习题3

南理工考研软件工程复习资料:提要与习题3

第三章软件设计一、复习要求1. 了解软件概要设计的原则和过程。

2. 掌握模块划分的评价准则―模块独立性的判别。

3. 掌握结构化设计方法。

4. 了解Jackson系统开发方法和Jackson程序设计方法。

5. 了解数据设计和文件设计的原则。

6. 掌握常用的详细设计的表达方法。

6. 了解软件设计规格说明和设计评审的主要内容。

二、内容提要1. 软件设计的过程一旦软件需求确定之后,就进入开发阶段。

开发阶段由三个互相关联的的步骤组成:设计、实现(编码)和测试。

每个步骤都按某种方式进行信息变换,最后得到有效的计算机软件。

(1) 软件设计在开发阶段中的重要性在软件需求分析阶段已经完全弄清楚了软件的各种需求,较好地解决了要让所开发的软件“做什么”的问题,并已在软件需求规格说明和数据要求规格说明中详尽和充分地阐明了这些需求。

下一步就要着手实现软件的需求,即要着手解决“怎么做”的问题。

分析模型中的每一个成份都提供了建立设计模型所需的信息。

软件设计的信息流如图4.1所示。

根据用数据、功能和行为模型表示的软件需求,采用某种设计方法进行数据设计、体系结构设计、接口设计和过程设计。

图4.1 将分析模型转换为软件设计数据设计将实体―关系图中描述的对象和关系,以及数据词典中描述的详细数据内容转化为数据结构的定义。

体系结构设计定义软件系统各主要成份之间的关系。

接口设计根据数图4.2 软件设计的重要性据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之间的交互机制。

过程设计则是把结构成份转换成软件的过程性描述。

在编码步骤,根据这种过程性描述,生成源程序代码,然后通过测试最终得到完整有效的软件。

软件设计是开发阶段中最重要的步骤,它是软件开发过程中质量得以保证的关键步骤。

设计提供了软件的表示,使得软件的质量评价成为可能。

同时,软件设计又是将用户要求准确地转化成为最终的软件产品的唯一途径。

另一方面,软件设计是后续开发步骤及软件维护工作的基础。

2020南京理工大学软件工程专硕考研经验分享

2020南京理工大学软件工程专硕考研经验分享

2020南京理工大学软件工程专硕考研经验分享19年的考研终于结束了,得知自己被录取的那一刻心情非常激动。

稍微平静下来开始码字,写下我的考研心路,也希望帮助到想报考南京理工大学软件工程专业的小伙伴们。

下面就介绍一下大家比较关注的专业课的备考经验吧。

825专业课复习过程:初期:一边看王道的数据结构和操作系统的书,一边跟着老师后面上课,理解书上的算法。

我有意愿考研的时候就已经把一些辅导班的口碑,专攻的课程调查好了,所以开始准备专业课的时候直接报名了爱考宝典的在线专业课一对一辅导班。

每看完一节,做后面的练习题并对答案,标注错题自己先看一遍解析,看不懂的再去问爱考的老师,我觉得不论是报没报班,都要有一个独立思考的过程,不能什么都是别人嚼碎了给你。

弄懂后再反复看看,每天开始学之前都看一遍前一天的错题。

中期:做南理工专业课的期末题,数据结构和操作系统都有十几套卷子,有不会的或者忘记的就依然先自己尝试解决,去翻书或者笔记资料什么的,再不会就去问老师,然后标注错题,是哪个关键点不会记在题目旁边,复习错题。

后期:卡时间做南理工825真题,这部分的题都是没有官方提供的答案的,但幸好爱考宝典在我报名的时候就送了他们的内部资料,里面包含真题答案,我检查过了没什么错误。

19年南理工825专业课不仅题量大而且题目难。

数据结构往年一般只考一道或者两道编程题,然而19年考了3道8分的编程题,其中一道题还是两问的,一共4份代码,虽然我都写出来了,但是花了大量的时间,导致后面操作系统的时间不太够用了,放弃了几道题。

操作系统填空题考了几道没见过的题型,每道大题也都非常具有综合性,很难拿全分。

最后专业课考了分虽然不是很高,但是在考生中已经算考的不错的了。

复试内容:笔试100分+机试120分+面试80分笔试:复试笔试包括计算机网络和数据库两门课,这两门课一定要看南理工本科的数据库和计算机网络的PPT课件或者推荐的教材,不要看王道的计算机网络的书,因为南理工的计算机网络考的比较有特色,必须要看他们的课件才会做他们的题。

软件工程复习题答案

软件工程复习题答案

一、软件工程复习题答案1.软件工程研究的重要内容有(ABCD)A. 软件开创方法、技巧B. 软件开创对象及情形C. 软件治理技巧D. 软件规范(国际规范)2.今朝典范的软件开创模型有(ABCD):A. 瀑布模型B. 增量模型C.螺旋模型D.喷泉模型3.包含风险分析的软件工程模型是(C):A. 瀑布模型B. 增量模型C.螺旋模型D.喷泉模型4.软件危机的重要表示是(BD)A. 软件成本太高B. 软件产品的质量低劣C. 软件开创人员明显不足D. 软件临盆率低下5.以部属于非功能需求的有(ABC)A. 机构需求B. 产品需求C. 外部需求D. 范畴需求6.需求分析的感化是(ABCD)A. 定义软件的范畴及必须知足的束缚B. 确信软件的功能和机能及与其他体系成分的接口C. 建立数据模型、功能模型和行动模型D. 最终供给需求规格说明,并用于作为评估软件质量的依照7.需求工程的全然活动包含(ABCD)A. 猎取需求B. 需求分析与建模C. 确认需求D. 进化需求8.需求猎取之因此困难,其重要缘故有(ABCD)A. 缺乏范畴常识B. 存在默认的常识C. 存在多个常识源D. 客户可能的成见9.常用的需求分析方法有(BCD)A. 功能分析方法B. 构造化分析方法C. 信息建模法D. 面向对象的分析方法10.数据词典中可包含的条目有(ABCD)A. 数据流B. 数据项C. 文件D. 加工11.属于分布式的软件体系构造有(B)A. 仓库模型B. 客户/办事器模型C. 分布式对象构造D. 中心件12.关于以下给出的几种类型的耦合,按照耦合性由高到低分列的是(A)(1)内容耦合(2)公共耦合(3)操纵耦合(4)复合耦合(5)数据耦合A. 1 2 3 4 5B. 1 3 4 2 5C. 1 2 5 3 4D. 5 4 3 2 113.关于块内部接洽的类型,内聚性由弱到强的是(A)(1)有时型(2)逻辑型(3)瞬时型(4)通信型(5)次序型(6)功能型A. 1 2 3 4 5 6B. 1 2 4 5 3 6C. 3 2 4 1 5 6D. 6 5 4 3 2 1 14.(C)是指雷同的操作(或函数、过程)感化于不合的对象上并获得不合的成果A. 连续性B. 封装性C. 多态性D. 动态绑定15.以下UML的几种图中,属于动态模型的有(ACD)A. 状况图B. 类图C. 合作图D. 次序图16.以下软件复用中,抽象程度最低的是(A)A. 代码的复用B. 设计成果的复用C. 分析成果的复用D. 测试信息的复用17.以下软件复用中,抽象程度最高的是(D)A. 代码的复用B. 设计成果的复用C. 分析成果的复用D. 测试信息的复用18.可复用构件必须具备的前提有(ABD)A. 功能上的自力性和完全性B. 较高的通用性和灵活性C. 严格的质量包管D. 较高的标准化程度19.大年夜多半的构件分类模式能够归纳为(ABC)A. 列举分类B. 刻面分类C. 属性值分类D. 集合分类20.软件测试的基来源差不多则有(BD)A. 尽量由法度榜样设计者本身进行测试B. 重视测试用例的选择C. 尽早地和赓续地进行软件测试D. 充分留意测试中的群集现象21.以下测试方法中属于静态分析方法的有(ABD)A. 桌前检查B. 代码会审C. 白盒法D. 步行检查22.步行检查时,常应用的分析方法有(AB)A. 调用图B. 数据流分析图C. 数据流图D. 状况图23.下面6种常用的逻辑覆盖测试方法,按发明缺点才能由弱到强分列的是(A)(1)语句覆盖(2)剖断覆盖(3)前提覆盖(4)剖断-前提覆盖(5)前提组合覆盖(6)路径覆盖A. 1 2 3 4 5 6B. 6 5 4 3 2 1C. 1 4 3 2 6 5D. 1 6 2 3 4 524.属于黑盒法的测试方法有(ABCD)A. 等价分类法B. 边值分析法C. 缺点推设法主意D. 因果图法25.描述软件开创筹划进度的重要对象有(ABCD)A. 一样的表格对象B. 甘特图C. 时标网状图D. PERT技巧与CPM方法26.C MM 表示(A)A. 软件过程成熟度模型B. 软件过程工业化操纵C. 国际软件质量认证D. 软件同一性标准27.软件过程和产品德量有具体的度量标准,同时获得了定量的熟悉和操纵。

南理工_软件技术基础复习资料.doc

南理工_软件技术基础复习资料.doc

第一章算法【内容】算法:是指解题方案的准确而完整的描述。

算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。

算法的基本特征:是一组严避地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。

特征包括:(1)可行性;<2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性;(3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义:(4)拥有足够的情报。

算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。

指令系统:一个计算机系统能执行的所有指令的集合。

基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。

算法的控制结构:顺序结构、选择结构、循环结构。

算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、问溯法。

算法复杂度:算法时间复杂度和算法空间复杂度。

算法时间复杂度是指执行算法所需要的计算工作量。

用平均性态,最坏情况复杂性两种方法来分析算法的工作量。

算法空间复杂度是指执行这个算法所需要的内存空间。

【习题】一、填空题(1)算法的复杂度主要包括复杂度和空间复杂度。

答:时间(2)算法的基本特征是可行性、确定性、和拥有足够的情报。

答:有穷性(3)实现算法所需的存储单元多少和算法的工作量大小分别称为算法的o答:空间复杂度和时间复杂度(4)在算法正确的前提下,评价一个算法的两个标准是_______ 。

答:时间复杂度和空间复杂度二、选择题⑴下面叙述正确的是_______ o (C)A.算法的执行效率与数据的存储结构无关B.算法的空间复杂度是指算法程序中指令(或语句)的条数C.算法的有穷性是指算法必须能在执行有限个步骤之后终止D.以上三种描述都不对(2)算法的时间复杂度是指。

(C)A.执行算法程序所需要的时间B.算法程序的佼度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数(3)算法的空间复杂度是指。

南理工考研软件工程复习资料:提要与习题2

南理工考研软件工程复习资料:提要与习题2

第二章软件需求分析一、复习要求1. 了解可行性研究的方法和可行性研究报告的主要内容。

2. 了解软件需求的目标和任务。

3. 了解软件软件需求的获取方法。

4. 了解支持需求分析的原型化方法。

5. 了解需求规格说明和需求评审的主要内容。

二、内容提要1.可行性研究和可行性研究报告(1) 可行性研究这是在软件项目计划阶段应该做的事情,包括四个方面的研究:▪经济可行性:进行成本∕效益分析。

从经济角度判断系统开发是否“合算”。

▪技术可行性:进行技术风险评价。

从开发者的技术实力、以往工作基础、问题的复杂性等出发,判断系统开发在时间、费用等限制条件下成功的可能性。

▪法律可行性:确定系统开发可能导致的任何侵权、妨碍和责任。

▪方案的选择:评价系统或产品开发的几个可能的候选方案。

最后给出结论意见。

(2) 经济可行性分析员需要进行成本∕效益分析。

所谓成本,包括:①购置并安装软、硬件及有关设备的费用;②系统开发费用;③系统安装、运行及维护的费用;④人员培训费用。

而效益是指:①系统为用户增加的收入或为用户节省的开支,这是有形的效益;②给潜在用户心理上造成的影响,这是无形的效益。

它可以转化为有形的效益。

(3) 技术可行性分析员需要根据系统的功能、性能需求,建立系统模型。

然后对此模型进行一系列的试验、评审和修改。

最后由项目管理人员作出是否进行系统开发的决定。

如果开发技术风险很大,或者模型演示表明当前采用的技术和方法不能实现系统预期的功能和性能,或者系统的实现不支持各子系统的集成,则项目管理人员可以作出停止系统开发的决定。

(4) 方案的选择分析员考虑问题解决的方案。

一般采用将一个大而复杂的系统分解为若干个子系统的办法来降低解的复杂性。

如何进行系统分解、如何定义各子系统的功能、性能和界面,实现方案不唯一。

可以采用折衷的方法,反复比较各个方案的成本∕效益,选择可行的方案。

(5) 可行性研究报告可行性报告的形式可以有多种,但最重要的内容应当有:Ⅰ. 项目背景:①问题描述②实现环境③限制条件Ⅱ. 管理概要和建议:①重要的研究结果②说明③建议④影响Ⅲ. 候选方案:①候选系统的配置②最终方案的选择标准Ⅳ. 系统描述:①系统工作范围的简要说明②被分配系统元素的可行性Ⅴ. 经济可行性(成本-效益分析):①经费概算②预期的经济效益Ⅵ. 技术可行性(技术风险评价):①技术实力②已有工作基础③设备条件Ⅶ. 法律可行性:①系统开发可能导致的侵权,违法和责任Ⅷ. 用户使用可行性:①用户单位的行政管理,工作制度②使用人员的素质Ⅸ. 其它与项目有关的问题:①其它方案介绍②未来可能的变化可行性研究报告首先由项目负责人审查(审查内容是否可靠),再上报给上级主管审阅(估价项目的地位)。

【考研经验】2020届南京理工大学软件工程专硕

【考研经验】2020届南京理工大学软件工程专硕

2020届南京理工大学软件工程专硕大家好,我是2020届考生,报考南京理工大学的软件工程专业的专硕。

首先说一下我的成绩:研究生考试中,初试总分320,其中政治69,英语74,数学98,专业课79;复试总分201(满分300)。

今年进入复试的学生中,初试平均分323,其中政治、英语、数学、专业课的平均分分别为66,72,93,92。

最终:初试排名42/80,复试排名12/80,总排名23/80。

80是指的进复试的有80个人。

(结尾有重点,中间读不下去了不要紧,一定要读最后面那一段,对考南理工帮助很大的。

)下面先说一下我的备考过程,首先我是一战,我是从2019年2月初开始准备考研,2月到6月因为本科学习的问题,每天学习的时间没有那么多,也就3~4个小时,从7月份正式开始学习,每天固定有9个小时的学习量,学习时间为8:50~11:50,14:00~17:30,19:00~22:00,每周六周天会在7点起床背诵这一周总结的东西,背诵内容包括重点单词、好的例句、好的作文句式和内容;后期改为背诵政治,背诵内容包括重要知识点,时间线的梳理,书本逻辑的归纳,做过的错题,徐涛老师的背诵大作战(微信公众号中后期的内容,关于大题的背诵)。

另外每天晚上回到宿舍也会学一个半小时,一开始是背单词和做几个数学选择填空题,后来是背政治知识点和做几个数学选择填空题,再后来是在手机上刷各位政治老师出的政治押题卷。

我们学校有专门的考研自习室,我暑假没有回家,从7月初开始,每天都会去自习室,而且保持固定的9个小时的学习时间,除了特殊情况从来没有断过(说到这里还是挺自豪的,也算是一直坚持吧)。

有的同学可能觉得我起的好晚,其实我也这么觉得,主要是我晚上一般1点睡觉(晚上稍微多学一会,夜里安静,学起来舒服),我不太习惯早起,大约8点多一点起床,收拾收拾吃个饭,然后去自习室学习了,而且我的研友跟我作息差不多...,都属于晚上多学会,早上多睡会那种,慢慢的也就习惯了。

南理工考研软件工程复习资料:提要与习题3(答案)

南理工考研软件工程复习资料:提要与习题3(答案)

习题参考答案【3-1】从下列有关系统结构图的叙述中选出正确的叙述。

(1) 系统结构图中反映的是程序中数据流的情况。

(2) 系统结构图是精确表达程序结构的图形表示法。

因此,有时也可将系统结构当作程序流程图使用。

(3) 一个模块的多个下属模块在系统结构图中所处的左右位置是无关紧要的。

(4) 在系统结构图中,上级模块与其下属模块之间的调用关系用有向线段表示。

这时,使用斜的线段和水平、垂直的线段具有相同的含义。

〖解〗(4)分析:系统结构图反映的是系统中模块的调用关系和层次关系,谁调用谁,有一个先后次序(时序)关系。

所以系统结构图既不同于数据流图,也不同与程序流程图。

数据流图仅描述数据在系统中如何流动,如何处理和存储,它不考虑时序关系。

图中的有向线段表示了数据流。

程序流程图描述程序中控制流的情况,即程序中处理的执行顺序和执行序列所依赖的条件,图中的有向线段(流线)表示的是控制流,从一个处理走到下一个处理。

但在系统结构图中的有向线段表示调用时程序的控制从调用模块移到被调用模块,并隐含了当调用结束时控制将交回给调用模块。

如果一个模块有多个下属模块,这些下属模块的左右位置可能与它们的调用次序有关。

例如,在用结构化设计方法依据数据流图建立起来的变换型系统结构图中,主模块的所有下属模块按逻辑输入、中心变换、逻辑输出的次序自左向右一字排开,左右位置不是无关紧要的。

所以只有最后的一个叙述是正确的。

【3-2】软件的开发工作经过需求分析阶段,进入( A )以后,就开始着手解决“怎么做”的问题。

常用的软件设计方法有( B )、( C )、( D )和( E )等方法。

供选择的答案:A ~ B.①程序设计②设计阶段③总体设计④定义阶段⑤SD方法⑥SP方法C. ①Jackson方法②瀑布法③快速原型法④回溯法D ~ E. ①LCP(Wanier)方法②递归法③Parnas方法④自下而上修正⑤逐步求精法⑥检测校正法〖解〗A. ②, B. ⑤, C. ①, D. ①, E. ③。

软件工程复习提纲(附答案)

软件工程复习提纲(附答案)

软件工程第一章软件工程介绍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实际的项目很少遵守瀑布模型提出的顺序客户通常难以清楚地描述所有的需求客户必须有耐心,因为只有在项目的后期,他们才能看到可执行的程序。

南理工考研软件工程复习资料:提要与习题5

南理工考研软件工程复习资料:提要与习题5

第五章软件测试一、复习要求1. 了解软件测试的目的和原则。

2. 了解软件错误的分类。

3. 了解软件测试的过程和策略。

4. 了解软件测试用例设计的方法,掌握逻辑覆盖、基本路径测试、因果图等测试用例设计方法。

5. 了解程序静态测试的方法。

6. 了解程序调试的概念。

二、内容提要1. 软件测试基础(1) 什么是软件测试软件测试是为了发现错误而执行程序的过程。

或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。

软件测试在软件生存期中横跨两个阶段:通常在编写出每一个模块之后就对它做必要的测试(称为单元测试)。

模块的编写者与测试者是同一个人。

编码与单元测试属于软件生存期中的同一个阶段。

在这个阶段结束之后,对软件系统还要进行各种综合测试,这是软件生存期的另一个独立的阶段,即测试阶段,通常由专门的测试人员承担这项工作。

(2) 软件测试的目的和原则Grenford J.Myers就软件测试目的提出以下观点:▪测试是程序的执行过程,目的在于发现错误;▪一个好的测试用例在于能发现至今未发现的错误;▪一个成功的测试是发现了至今未发现的错误的测试。

设计测试的目标是想以最少的时间和人力系统地找出软件中潜在的各种错误和缺陷。

如果我们成功地实施了测试,就能够发现软件中的错误。

测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。

此外,实施测试收集到的测试结果数据为可靠性分析提供了依据。

测试不能表明软件中不存在错误,它只能说明软件中存在错误。

软件测试的原则:①应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。

不应把软件测试仅仅看作是软件开发的一个独立阶段,而应当把它贯穿到软件开发的各个阶段中。

坚持在软件开发的各个阶段的技术评审,这样才能在开发过程中尽早发现和预防错误,把出现的错误克服在早期,杜绝某些发生错误的隐患。

软件工程第一二三章习题参考答案

软件工程第一二三章习题参考答案

第一章软件工程概述软件是计算机程序及其有关旳数据和文档旳结合。

软件危机是指在计算机软件开发和维护时所碰到旳一系列问题。

软件危机重要包括两方面旳问题: 一是怎样开发软件以满足对软件日益增长旳需求;二是怎样维护数量不停增长旳已经有软件。

软件工程是软件开发、运行、维护和引退旳系统措施。

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

软件工程采用工程旳概念、原理、技术和措施来开发与维护软件。

软件工程旳目旳是实现软件旳优质高产。

软件工程学旳重要内容是软件开发技术和软件工程管理。

软件开发措施学是编制软件旳系统措施, 它确定软件开发旳各个阶段, 规定每一阶段旳活动、产品、验收旳环节和完毕准则。

常用旳软件开发措施有构造化措施、面向数据构造措施和面向对象措施等。

习题参照答案:1) 1. 什么是软件危机?为何会出现软件危机?2)答: 软件危机是指在计算机旳开发和维护过程中所碰到旳一系列严重问题。

这些问题决不仅仅是不能正常运行旳软件才具有旳, 实际上, 几乎所有软件都不一样程度地存在这些问题。

3)出现软件危机旳原因:首先与软件自身旳特点有关, 另首先也和软件开发与维护旳措施不对旳有关。

软件不一样于硬件, 它是计算机系统中逻辑件而不是物理部件。

管理和控制软件开发过程相称困难。

软件是规模庞大, 并且程序复杂性将伴随程序规模旳增长而呈指数上升。

目前相称多旳软件专业人员对软件开发和维护尚有不少糊涂观念, 在实践过程中或多或少地采用了错误旳措施和技术, 这是使软件问题发展成软件危机旳重要原因。

总结如下:4)获得对旳旳顾客需求和对旳地描述需求很困难5)开发人员对需求旳对旳理解也有困难6)常常在没有对旳理解之前就仓促开始编程7)软件项目缺乏有效旳组织、管理和内部交流8)缺乏软件开发措施、模型和工具旳支持9)软件维护旳困难性2. 假设你是一家软件企业旳总工程师, 当你把图1.1给手下旳软件工程师们观看, 告诉他们及早发现并改正错误旳重要性时, 有人不一样意你旳观点, 认为规定在错误进入软件之前就清除它们是不现实旳, 并举例说: “假如一种故障是编码错误导致旳, 那么, 一种人怎么能在设计阶段清除它呢?”你怎么反驳他?答: 在软件开发旳不一样阶段进行修改付出旳代价是很不相似旳, 在初期引入变动, 波及旳面较少, 因而代价也比较低;在开发旳中期, 软件配置旳许多成分已经完毕, 引入一种变动要对所有已完毕旳配置成分都做对应旳修改, 不仅工作量大, 并且逻辑上也更复杂, 因此付出旳代价剧增;在软件已经完毕时再引入变动, 当然付出旳代价更高。

南理工考研软件工程复习资料:提要与习题1(答案)

南理工考研软件工程复习资料:提要与习题1(答案)

习题参考答案【1-1】软件是计算机系统中与硬件相互依存的另一部分,它是包括( A )、( B )及( C )的完整集合。

其中,( A )是按事先设计的功能和性能要求执行的指令序列。

( B )是使程序能够正确操纵信息的数据结构。

( C )是与程序开发、维护和使用有关的图文材料。

供选择的答案:A C. ①软件②程序③代码④硬件⑤文档⑥外设⑦数据⑧图表答案:A. ②, B. ⑦, C. ⑤分析:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及相关文档的完整集合。

其中,程序是按事先设计的功能和性能要求执行的指令序列。

数据是使程序能够正确操纵信息的数据结构。

文档是与程序开发、维护和使用有关的图文材料。

需要注意的是,程序与算法在含义上有不同:算法的每一条指令必须是最基本的、必须通过有限步做完,而程序没有这个要求。

【1-2】开发软件时对提高软件开发人员工作效率至关重要的是( A )。

软件工程中描述生存周期的瀑布模型一般包括计划、( B )、设计、编码、测试、维护等几个阶段,其中设计阶段在管理上又可以依次分成( C )和( D )两步。

供选择的答案:A.①程序开发环境②操作系统的资源管理功能③程序人员数量④计算机的并行处理能力B.①需求分析②需求调查③可行性分析④问题定义C、D.①方案设计②代码设计③概要设计④数据设计⑤运行设计⑥详细设计⑦故障处理设计⑧软件体系结构设计答案:A. ①, B. ①, C. ③, D. ⑥分析:有合适的程序开发环境可以提供有用的工具,大大提高开发人员的工作效率。

软件工程中描述软件生存周期的瀑布模型一般包括计划、需求分析、设计、编码、测试和运行维护等六个阶段。

需求分析完成对软件产品在功能、性能、用户接口、运行环境、可靠性、安全性、开发资源、开发进度、开发成本等方面的需求定义。

问题定义、可行性分析、需求调查都可能是需求分析中要做的一部分工作。

软件设计在管理上划分为概要设计与详细设计两个步骤。

南理工考研软件工程复习资料提要与习题1答案

南理工考研软件工程复习资料提要与习题1答案

习题参考答案1-1 A B )及)【、】软件是计算机系统中与硬件相互依存的另一部分,它是包括(( C A B )()是按事先设计的功能和性能要求执行的指令序列。

)(的完整集合。

其中,( C )是与程序开发、维护和使用有关的图文材是使程序能够正确操纵信息的数据结构。

(料。

供选择的答案:AC. 硬件③程序④①②软件代码?图表外设⑧数据⑤⑥文档⑦A. , B. , C. ⑤⑦②答案:分析:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及相关文档的完整集合。

其中,程序是按事先设计的功能和性能要求执行的指令序列。

数据是使程序能够正确操纵信息的数据结构。

文档是与程序开发、维护和使用有关的图文材料。

需要注意的是,程序与算法在含义上有不同:算法的每一条指令必须是最基本的、必须通过有限步做完,而程序没有这个要求。

1-2 A )。

软件工程中描述生】开发软件时对提高软件开发人员工作效率至关重要的是【( B )、设计、编码、测试、维护等几个阶段,其中设存周期的瀑布模型一般包括计划、( C D 两步。

))和(计阶段在管理上又可以依次分成(供选择的答案:A 操作系统的资源管理功能程序开发环境.②①计算机的并行处理能力③④程序人员数量B 问题定义.可行性分析①③需求分析需求调查④②CD 数据设计.①概要设计方案设计③、②代码设计④软件体系结构设计运行设计⑦⑥⑤⑧详细设计故障处理设计A. , B. , C. , D. ⑥①答案:①③分析:有合适的程序开发环境可以提供有用的工具,大大提高开发人员的工作效率。

软件工程中描述软件生存周期的瀑布模型一般包括计划、需求分析、设计、编码、测试和运行维护等六个阶段。

需求分析完成对软件产品在功能、性能、用户接口、运行环境、可靠性、安全性、开发资源、开发进度、开发成本等方面的需求定义。

问题定义、可行性分析、需求调查都可能是需求分析中要做的一部分工作。

软件设计在管理上划分为概要设计与详细设计两个步骤。

考研软件工程试题及答案

考研软件工程试题及答案

考研软件工程试题及答案一、单项选择题(每题2分,共20分)1. 软件工程的主要目标是()。

A. 提高软件的可靠性B. 提高软件的生产率C. 降低软件的成本D. 以上都是答案:D2. 软件需求分析阶段的主要任务是()。

A. 确定软件的功能需求B. 确定软件的非功能需求C. 确定软件的界面需求D. 确定软件的性能需求答案:A3. 在软件测试中,黑盒测试的主要依据是()。

A. 程序内部逻辑B. 程序外部功能C. 程序设计文档D. 用户操作手册答案:B4. 软件开发过程中,需求变更可能导致()。

A. 项目延期B. 成本增加C. 质量下降D. 以上都是答案:D5. 面向对象分析与设计的主要概念不包括()。

A. 对象B. 类C. 模块D. 继承答案:C二、多项选择题(每题3分,共15分)1. 以下哪些是软件工程的基本原则?()A. 系统性原则B. 可维护性原则C. 可测试性原则D. 可扩展性原则答案:ABCD2. 软件项目管理包括以下哪些方面?()A. 时间管理B. 成本管理C. 风险管理D. 质量管理答案:ABCD3. 软件测试的目的是()。

A. 发现软件中的缺陷B. 验证软件是否满足需求C. 确保软件的可靠性D. 提高软件的性能答案:ABC三、简答题(每题5分,共20分)1. 简述软件生命周期的各个阶段。

答案:软件生命周期包括需求分析、设计、编码、测试、维护等阶段。

2. 什么是软件危机?它主要表现在哪些方面?答案:软件危机是指在软件开发过程中出现的一系列问题,如成本超支、进度延误、质量低下等。

3. 请解释什么是软件重构。

答案:软件重构是指在不改变软件外部行为的前提下,对软件内部结构进行调整,以提高其可理解性和可维护性。

4. 什么是敏捷开发?答案:敏捷开发是一种以人为核心、迭代、循序渐进的软件开发方法,强调团队合作、客户反馈和对变化的响应。

四、计算题(每题10分,共20分)1. 假设一个软件项目的开发周期为18个月,预计成本为1000万元。

南理工考研软件工程复习资料:提要与习题5(答案)

南理工考研软件工程复习资料:提要与习题5(答案)

习题参考答案【5-1】为了把握软件开发各个环节的正确性和协调性,人们需要进行( A )和( B )工作。

( A )的目的是想证实在一给定的外部环境中软件的逻辑正确性。

它包括( C )和( D ),( B )则试图证明在软件生存期各个阶段,以及阶段间的逻辑( E )、( F )和正确性。

供选择的答案:A, B. ①操作②确认③验证④测试⑤调试C, D.①用户的确认②需求规格说明的确认③程序的确认④测试的确认E, F. ①可靠性②独立性③协调性④完备性⑤扩充性〖解〗:A.② B. ③ C. ② D. ③ E. ③ F. ④分析:到程序的测试为止,软件开发工作已经经历了许多环节,每个环节都可能发生问题。

为了把握各个环节的正确性,人们需要进行各种确认和验证工作。

所谓确认,是一系列的活动和过程,其目的是想证实在一个给定的外部环境中软件的逻辑正确性。

它包括需求规格说明的确认和程序的确认,而程序的确认又分为静态确认与动态确认。

静态确认一般不在计算机上实际执行程序,而是通过人工分析或者程序正确性证明来确认程序的正确性;动态确认主要通过动态分析和程序测试来检查程序的执行状态,以确认程序是否有问题。

所谓验证,则试图证明在软件生存期各个阶段,以及阶段间的逻辑协调性、完备性和正确性。

下图中所示的就是软件生存期各个重要阶段之间所要保持的正确性。

它们就是验证工作的主要对象。

确认与验证工作都属于软件测试。

在对需求理解与表达的正确性、设计与表达的正确性、实现的正确性以及运行的正确性的验证中,任何一个环节上发生了问题都可能在软件测试中表现出来。

【5-2】测试过程需要三类输入:( A )、( B )和( C )。

请选择正确的答案填入下图中以完成测试信息处理的全过程。

供选择的答案:A ~ C. ① 接口选择② 软件配置 ③ 硬件配置④ 测试配置 ⑤ 测试环境 ⑥ 测试工具 D ~ F. ① 排错 ② 可靠性分析 ③ 结果分析 ④ 数据分类 〖解〗:A. ② B. ④ C. ⑥ D. ③ E. ① F. ② 分析:测试信息流如图所示。

南理工考研软件工程复习资料:提要与习题1

南理工考研软件工程复习资料:提要与习题1

第一章软件工程概述一、复习要求1. 了解软件概念、特点及分类方法。

2. 了解软件发展及软件危机的起因。

3. 了解软件工程过程及软件生存期的概念。

4. 了解软件工程的概念及其要素。

5. 了解软件工程的基本目标和原则。

二、内容提要1.软件的概念、特点软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。

其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发,维护和使用有关的图文材料。

软件的特点是:(1) 软件是一种逻辑实体,而不是具体的物理实体。

因而它具有抽象性。

(2) 软件的生产与硬件不同,它没有明显的制造过程。

对软件的质量控制,必须着重在软件开发方面下功夫。

(3) 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。

任何机械、电子设备在运行和使用中,其失效率大都遵循如图1.1(a)所示的U型曲线(即浴盆曲线)。

而软件的情况与此不同,因为它不存在磨损和老化问题。

然而它存在退化问题,必须要多次修改(维护)软件,如图1.1(b)所示。

图1.1 失效率曲线(4) 软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。

为了解除这种依赖性,在软件开发中提出了软件移植的问题。

(5) 软件的开发至今尚未完全摆脱手工艺的开发方式。

(6) 软件本身是复杂的。

软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。

(7) 软件成本相当昂贵。

软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。

(8) 相当多的软件工作涉及到社会因素。

许多软件的开发和运行涉及机构、体制及管理方式等问题,甚至涉及到人的观念和人们的心理。

它直接影响到项目的成败。

2.软件的分类(1) 按软件的功能进行划分:·系统软件: 能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效地工作的软件。

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

第一章软件工程概述一、复习要求1. 了解软件概念、特点及分类方法。

2. 了解软件发展及软件危机的起因。

3. 了解软件工程过程及软件生存期的概念。

4. 了解软件工程的概念及其要素。

5. 了解软件工程的基本目标和原则。

二、内容提要. 软件的概念、特点1软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。

其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发,维护和使用有关的图文材料。

软件的特点是:(1) 软件是一种逻辑实体,而不是具体的物理实体。

因而它具有抽象性。

(2) 软件的生产与硬件不同,它没有明显的制造过程。

对软件的质量控制,必须着重在软件开发方面下功夫。

(3) 在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。

任何机械、电子1.1(a)所示的U型曲线(即浴盆曲线)。

而软设备在运行和使用中,其失效率大都遵循如图件的情况与此不同,因为它不存在磨损和老化问题。

然而它存在退化问题,必须要多次修改1.1(b) 所示。

(维护)软件,如图1.1 失效率曲线图(4) 软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。

为了解除这种依赖性,在软件开发中提出了软件移植的问题。

(5) 软件的开发至今尚未完全摆脱手工艺的开发方式。

(6) 软件本身是复杂的。

软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。

(7) 软件成本相当昂贵。

软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本是比较高的。

(8) 相当多的软件工作涉及到社会因素。

许多软件的开发和运行涉及机构、体制及管理方式等问题,甚至涉及到人的观念和人们的心理。

它直接影响到项目的成败。

软件的分类2.(1) 按软件的功能进行划分:·系统软件: 能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效地工作的软件。

例如,操作系统、数据库管理系统、设备驱动程序以及通信处理程序等。

·支撑软件: 是协助用户开发软件的工具性软件,其中包括帮助程序人员开发软件产品的工具,也包括帮助管理人员控制开发的进程的工具。

是在特定领域内开发,为特定目的服务的一类软件。

: ·应用软件(2) 按软件规模进行划分:按开发软件所需的人力、时间以及完成的源程序行数,可确定六种不同规模的软件。

表1.1软件规模的分类产品规模(源程序行数)类别参加人员数研制期限4 1周~微型0.5k 11k 2k 16~小型月~15k 50k 125 2 ~中型~~年50k520 3 2 100k ~大型~~年1000 100 45年~甚大型~1M(=1000k)1M10M550002000 10 ~极大型~~年规模大、时间长、很多人参加的软件项目,其开发工作必须要有软件工程的知识做指导。

而规模小、时间短、参加人员少的软件项目也得有软件工程概念,遵循一定的开发规范。

其基本原则是一样的,只是对软件工程技术依赖的程度不同而已。

(3) 按软件工作方式划分:·实时处理软件: 指在事件或数据产生时,立即予以处理,并及时反馈信号,控制需要监测和控制的过程的软件。

主要包括数据采集,分析,输出三部分。

允许多个联机用户同时使用计算机。

: ·分时软件能实现人机通信的软件。

·交互式软件:·批处理软件: 把一组输入作业或一批数据以成批处理的方式一次运行,按顺序逐个处理完的软件。

(4) 按软件服务对象的范围划分:·项目软件: 也称定制软件,是受某个特定客户(或少数客户)的委托,由一个或多个软件开发机构在合同的约束下开发出来的软件。

例如军用防空指挥系统、卫星控制系统。

·产品软件: 是由软件开发机构开发出来直接提供给市场,或是为千百个用户服务的软件。

例如,文字处理软件、文本处理软件、财务处理软件、人事管理软件等。

(5) 按使用的频度进行划分:有的软件开发出来仅供一次使用。

例如用于人口普查、工业普查的软件。

另外有些软件具有较高的使用频度,如天气预报软件。

(6) 按软件失效的影响进行划分:有的软件在工作中出现了故障,造成软件失效,可能给软件整个系统带来的影响不大。

.有的软件一旦失效。

可能酿成灾难性后果。

例如财务金融、交通通信、航空航天等软件。

我们称这类软件为关键软件。

3.软件的发展和软件危机2040年代中出现了世界上第一台计算机以后,就有了程序的概念。

其后经历了世纪自几十年的发展,计算机软件经历了三个发展阶段:5060 年代·程序设计阶段,约为至6070 年代·程序系统阶段,约为至70 年代以后·软件工程阶段,约为几十年来最根本的变化体现在:(1) 5060年代时,程序设计曾经被看做是一种任人人们改变了对软件的看法。

年代到发挥创造才能的技术领域。

当时人们认为,写出的程序只要能在计算机上得出正确的结果,程序的写法可以不受任何约束。

随着计算机的广泛使用,人们要求这些程序容易看懂、容易使用,并且容易修改和扩充。

于是,程序便从个人按自己意图创造的“艺术品”转变为能被广大用户接受的工程化产品。

(2) 软件的需求是软件发展的动力。

早期的程序开发者只是为了满足自己的需要,这种自给自足的生产方式仍然是其低级阶段的表现。

进入软件工程阶段以后,软件开发的成果具有社会属性,它要在市场中流通以满足广大用户的需要。

(3) 软件工作的范围从只考虑程序的编写扩展到涉及整个软件生存周期。

在软件技术发展的第二阶段,随着计算机硬件技术的进步,要求软件能与之相适应。

然而软件技术的进步一直未能满足形势发展提出的要求。

致使问题积累起来,形成了日益尖锐的矛盾。

这就导致了软件危机。

问题归结起来有:(1) 缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作的计划很难制定。

致使经费预算常常突破,进度计划无法遵循,开发完成的期限一拖再拖。

(2) 软件需求,在开发的初期阶段提得不够明确,或是未能得到确切的表达。

开发工作开始后,软件人员和用户又未能及时交换意见,造成开发后期矛盾的集中暴露。

(3) 开发过程没有统一的、公认的方法论和规范指导,参加的人员各行其事。

加之设计和实现过程的资料很不完整;或忽视了每个人工作与其他人的接口,使得软件很难维护。

(4) 未能在测试阶段充分做好检测工作,提交用户的软件质量差,在运行中暴露出大量的问题。

如果这些障碍不能突破,进而摆脱困境,软件的发展是没有出路的。

4. 软件工程过程和软件生存周期许多计算机和软件科学家尝试,把其它工程领域中行之有效的工程学知识运用到软件开发工作中来。

经过不断实践和总结,最后得出一个结论:按工程化的原则和方法组织软件开发工作是有效的,是摆脱软件危机的一个主要出路。

(1)(Software Engineering Process)软件工程过程软件工程过程是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。

软件工程过程通常包含四种基本的过程活动:P (Plan) : 软件规格说明。

规定软件的功能及其运行的限制;·D (Do) :软件开发。

产生满足规格说明的软件;·C (Check) :软件确认。

确认软件能够完成客户提出的要求;·A (Action) :软件演进。

为满足客户的变更要求,软件必须在使用的过程中演进。

·事实上,软件工程过程是一个软件开发机构针对某一类软件产品为自己规定的工作步.骤,它应当是科学的、合理的,否则必将影响到软件产品的质量。

(life cycle)(2) 软件生存周期正如同任何事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程。

我们称其为计算机软件的生存周期。

根据这一思想,把上述基本的过程活动进一步展开,可以得到软件生存周期的六个步骤。

: 可靠性以及接口等确定要开发软件系统的总目标,给出它的功能、·制定计划性能、方面的要求;研究完成该项软件任务的可行性,探讨解决问题的可能方案;制定完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查。

:编写出软件需求说·需求分析对待开发软件提出的需求进行分析并给出详细的定义。

明书及初步的用户手册,提交管理机构评审。

: 进而对每个模块要完把已确定了的各项需求转换成一个相应的体系结构。

·软件设计成的工作进行具体的描述。

编写设计说明书,提交评审。

: 把软件设计转换成计算机可以接受的程序代码。

·程序编写: 在设计测试用例的基础上检验软件的各个组成部分。

·软件测试:已交付的软件投入正式使用,并在运行过程中进行适当的维护。

·运行/维护(3) 软件生存周期模型跨越整个生存周软件生存周期模型是从软件项目需求定义直至软件经使用后废弃为止,期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。

a) :瀑布模型规定了各项软件工程活动,包括:制定开发计划,进行需求分瀑布模型1.2。

并且规定了它们自上而下,析和说明,软件设计,程序编码。

测试及运行维护,参看图相互衔接的固定次序,如同瀑布流水,逐级下落。

1.2 软件生存周期的瀑布模型图然而软件开发的实践表明,上述各项活动之间并非完全是自上而下,呈线性图式。

实际只有当其工作得到确中。

处理-输出-评审)-情况是,每项开发活动均处于一个质量环(输入1.21.2中由向上否则返工,在图认,才能继续进行下一项活动,在图中用向下的箭头表示;的箭头表示。

b) : 由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而演化模型可以先做试验开发,因此,使得开发项目难于做到一次开发成功,出现返工再开发在所难免。

其目标只是在于探索可行性,弄清软件需求;然后在此基础上获得较为满意的软件产品。

通常把第一次得到的试验性产品称为“原型”。

c) : 对于复杂的大型软件,开发一个原型往往达不到要求。

螺旋模型将瀑布螺旋模型螺旋模型沿着螺线旋转,并且加入两种模型均忽略了的风险分析。

模型与演化模型结合起来,1.3所示,在笛卡尔坐标的四个象限上分别表达了四个方面的活动,即:如图?制定计划──确定软件目标,选定实施方案,弄清项目开发的限制条件;?风险分析──分析所选方案,考虑如何识别和消除风险;?实施工程──实施软件开发?客户评估──评价开发工作,提出修正建议。

沿螺线自内向外每旋转一圈便开发出更为完善的一个新的软件版本。

1.3 螺旋模型图d) :喷泉模型对软件复用和生存周期中多项开发活动的集成提供了支持,主喷泉模型要支持面向对象的开发方法。

“喷泉”一词本身体现了迭代和无间隙特性。

系统某个部分常所谓无间隙是指在开发活动,常重复工作多次,相关功能在每次迭代中随之加入演进的系统。

相关文档
最新文档