软件工程思考题
软件工程复习思考题
软件工程复习思考题1.试述软件工程的基本原理。
⑴模块化:模块是软件的组成部分,是具有独立功能且可命名的一段程序,所有模块组成整体,可以满足问题的要求。
模块化即按照一定的原则,将软件划分成若干个模块,每个模块完成一个特定的功能,然后把这些模块按照某种方法组装成一个软件系统。
(可降低复杂度、减少工作量)模块具有以下几种特性:接口:模块的输入输出。
功能:指模块实现什么功能。
逻辑:描述模块内部如何实现要求及所需的数据。
状态:该模块的运行环境,模块间调用与被调用关系。
⑵抽象:认识复杂现象过程所使用权的工具,只考虑事物本质的共同特性,忽略细节和其它因素。
通过抽象确定组成软件的过程实体。
⑶信息隐蔽:将模块实现自身功能的细节与数据"隐蔽"起来。
模块间仅交换为完成系统功能所必须的信息。
⑷模块独立性:每个模块只完成系统要求的独立的子功能。
2.软件项目管理的职能有哪些?3.试述总体设计的原则。
4.试述面向对象设计的启发规则。
P2611.设计结果应该清晰易懂2一般—特殊结构的深度应适当3.设计简单的类4.使用简单的协议5.使用简单的服务6.把设计变动减至最小5.为了具有良好的程序设计风格,应注意哪些方面的问题?程序设计风格是指一个人编制程序时所表现出来的特点、习惯、逻辑思路等。
要形成良好的程序设计风格,应从源程序文档化、数据说明、语句构造、输入输出和追求效率几个方面加以注意。
6.试比较程序流程图与PAD图的特点。
程序流程图是一种用规定的图形,指向线及文字说明来准确表示算法的图形,具有直观、形象的特点,能清楚地展现算法的逻辑结构.画程序框图的规则:使用标准的框图符号;框图一般按从上到下,从左到右的方向画;除判断框外,大多数程序框图的符号只有一个进入点和一个退出点,而判断框是具有超过一个退出点的唯一符号.PAD所描述程序的层次关系表现在纵线上。
每条纵线表示了一个层次。
把PAD图从左到右展开。
随着程序层次的增加,PAD逐渐向右展开。
《软件工程导论》参考答案
参考答案(范村长下载的)第1章一、选择题1. D2. C3. B4. D5. B6. A7. D二、填空题1. 程序文档数据2. 抽象模块化信息隐蔽局部化一致性完备性可验证性3. 问题定义可行性研究需求分析4. 软件生命周期模型顺序性依赖性5. 制定计划风险分析实施工程客户评价6. 结构化分析结构化设计结构化程序设计数据流自顶向下,逐步求精功能的分解与抽象三、思考题1. 答:软件产品是一种无形的逻辑产品,是人们脑力劳动的结晶。
软件产品只能以程序、数据和文档的形式出现。
其存储介质是磁盘、磁带或光盘。
通过计算机的执行才能体现出来。
与硬件产品的制造不同,软件产品的成本主要花在研制上,而产品的制造实质上是所开发产品的拷贝。
软件产品不会像硬件产品一样磨损,但仍然需要维护,而且维护的成本很高。
软件产品的开发主要靠脑力劳动,所以产品研制的成本很高,很难像硬件产品那样实现工业化生产。
2. 答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件的日益增长的需求;如何维护数量不断膨胀的软件。
具体来说,软件危机主要有以下一些典型表现。
对软件开发成本和进度的估计常常很不准确。
用户对所交付的软件系统不满意的现象时有发生。
软件产品的质量往往靠不住。
软件常常是不可维护的。
软件文档资料通常不完整、不合格。
软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。
软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上日益增长的软件需求。
3. 答:软件工程的基本目标是在给定的成本、进度等条件下,开发出满足用户需求的软件产品。
简单来说,也就是要成功地建造一个大型软件系统。
软件项目的成功主要是要达到以下几个目标:付出较低的软件开发成本;达到用户所要求的软件功能;取得较好的软件性能;所开发的软件易于移植、可重用性好;需要较低的软件维护费用;能按时完成开发任务,及时交付使用;软件工程面临的主要问题是:软件费用、软件可靠性、软件维护、软件生产率和软件重用等。
软件工程思考题答案
第一章根本概念1.软件的特点是什么?软件的定义:软件=程序+数据+文档软件的特点:1)软件是逻辑实体;具有抽象性;软件的形态不可见;--必须通过观察、分析、思考、判断来了解其功能、性能和其它特性。
2〕软件是人脑思维的产物,其生产过程与硬件不同。
--开发过程的质量控制及软件产品保护问题。
3〕软件的开发和运行受计算机系统限制。
--软件移植问题。
4〕软件的开发技术落后,手工开发方式仍占统治地位。
--开发效率低。
2.2006年发布的国家分类标准是什么?1〕按功能:系统软件、支撑软件、应用软件2〕按规模:微型软件、小型软件、大型软件、甚大型软件、极大型软件3〕按工作方式:实时处理软件、分时软件、交互式软件、批处理软件4〕按效劳对象:工程软件、产品软件5〕按使用频度:使用频度低、使用频度高6〕按失效影响:不良影响、严重影响3.软件危机的表现有哪些?1)软件开发进度难以预测2)软件开发本钱难以控制3)用户对产品功能难以满足4)软件产品质量无法保证5)软件产品难以维护4.产生软件危机的原因?1)用户需求不明确2)缺乏正确的理论指导3)软件开发规模越来越大4)软件开发复杂度越来越高5.什么是软件工程三要素?软件工程的三要素:方法、工具和过程。
6.软件工程的根本目标是什么?①付出较低的开发本钱②到达要求的软件功能③取得较好的软件性能④开发的软件易于移植⑤需要较低的维护费用⑥能按时完成开发工作,及时交付使用7软件工程的根本原那么是什么?①抽象:采用分层次抽象,自顶向下、逐层细化的方法控制软件开发过程的复杂性。
②信息隐蔽:将模块设计成“黑箱〞,实现的细节隐藏在模块内部,不让模块的使用者直接。
这就是信息封装,使用与实现别离的原那么。
③模块化:如C语言程序中的函数过程,C++ 语言程序中的类。
模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。
④局部化:要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块之间具有松散的耦合,模块内部具有较强的内聚。
软件工程(软件需求)习题与答案
软件工程(软件需求)习题与答案软件工程(软件需求)习题与答案1. 引言在软件工程领域,软件需求是项目成功的关键之一。
对于开发者来说,了解和熟悉软件需求的基本概念和流程是至关重要的。
本文将针对软件工程中的软件需求进行习题和答案的探讨,帮助读者更好地理解和应用相关知识。
2. 习题集2.1 习题一:什么是软件需求?为什么软件需求很重要?答案:软件需求是指软件开发过程中,对于所要开发的软件系统的功能、性能以及其他特点的描述和规定。
软件需求的编写和理解对于项目的成败具有决定性的作用。
准确的软件需求能够指导开发团队进行开发工作,并确保最终的软件产品符合用户的期望。
2.2 习题二:软件需求的分类是什么?答案:软件需求可以分为功能需求和非功能需求两类。
功能需求描述了软件系统应具备的功能和行为,非功能需求则描述了软件系统的性能、可靠性、安全性等方面的需求。
2.3 习题三:请列举几个软件需求的常见问题。
答案:常见的软件需求问题包括:- 不完整的需求描述:缺少必要的细节和规范,导致开发团队无法准确理解用户需求。
- 冲突的需求:不同的用户提出了矛盾的要求,导致开发过程复杂化。
- 模糊的需求:需求描述含糊不清,无法量化和验证。
- 可测量性问题:需求无法被准确地测量和评估。
- 可行性问题:需求不符合项目的可行性要求,无法被合理地实施。
3. 答案解析3.1 习题一解析软件需求是对软件系统功能、性能和其他特点的描述和规定。
软件需求的重要性在于它能够指导开发团队进行开发工作,并确保最终产品符合用户期望。
缺乏准确的软件需求往往导致项目失败或产品无法满足用户需求。
3.2 习题二解析软件需求可以分为功能需求和非功能需求两类。
功能需求描述了软件系统应具备的功能和行为,如注册、登录等;非功能需求描述了软件系统的性能、可靠性、安全性等方面的需求,如响应时间、可扩展性等。
3.3 习题三解析常见的软件需求问题包括需求描述不完整、冲突的需求、模糊的需求、可测量性问题以及可行性问题。
(0010)《软件工程》复习思考题及参考答案
(0010)《软件工程》复习思考题模拟试卷一(开卷)“商场管理信息系统”问题描述:库房管理员负责录入商品的入库和出库信息,系统自动根据库房管理员的输入修改库房的库存商品信息;当商品的库存数量低于临界值,系统自动打印出缺货商品的采购单交给采购员。
售货员负责登入商品销售信息(品名,编号,销售量,单价),系统根据售货员的输入,自动修改前台商品库存信息,当前台商品数量低于临界值,系统打印出领货通知单交给库房管理员。
问题1:画出尽可能详细的“商场管理信息系统”数据流图。
问题2:按照软件工程的规范写出“商品入/出库信息”的数据字典(定义到第2层)。
问题3:根据问题1中你所画的数据流图,采用面向数据流的方法,画出系统的软件结构图问题4:已知“销售模块”的IPO表如下,请画出该模块的程序流程图。
问题5说明你采用了什么测试方法。
模拟试卷二(开卷)“报刊订阅系统”问题描述:系统保存所有通过邮局发行的报刊的与发行有关的信息;接受订阅者的订阅和付款,并保存订阅、付款日期和金额、以及投递信息;输出投递和订阅清单;接受顾客的查询服务;统计各报刊的各阶段的总订阅数,并输出各报社、各杂志社的订单汇总表。
问题1:画出尽可能详细的“报刊订阅系统”数据流图。
问题2:按照软件工程的规范写出“报刊订单”的数据字典(定义到第2层)。
问题3:根据问题1中你所画的数据流图,采用面向数据流的方法,画出系统的软件结构图问题4问题5:请至少设计出两组测试数据,用于测试问题4中你设计的程序,并说明你采用了什么测试方法和目的。
(0010)《软件工程》复习思考题答案模拟试卷一“商场管理信息系统”问题描述:库房管理员负责录入商品的入库和出库信息,系统自动根据库房管理员的输入修改库房的库存商品信息;当商品的库存数量低于临界值,系统自动打印出缺货商品的采购单交给采购员。
售货员负责登入商品销售信息(品名,编号,销售量,单价),系统根据售货员的输入,自动修改前台商品库存信息,当前台商品数量低于临界值,系统打印出领货通知单交给库房管理员。
软工复习大纲—思考题
第1章的思考题●软件的定义:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。
●遗留软件的定义:年代较久,甚至过于久远的旧软件,存在质量差的特点。
●软件与其他工程原则制造的制品的区别? (1.1)1.软件是一种逻辑实体,具有抽象性;2.软件没有明显的制造过程;3.软件在使用过程中,没有磨损、老化的问题;4.软件对硬件和环境有着不同程度的依赖性;5.软件的开发至今尚未完全摆脱手工作坊式的开发方式,生产效率低;6.软件是复杂的,而且以后会更加复杂;7.软件的成本相当昂贵;8.软件工作牵涉到很多社会因素。
●软件特征与硬件特征的区别?(1.2)1.软件是设计开发的,而不是传统意义上生产制造的;2.软件不会“磨损”;3.虽然整个工业向着基于构件的构造模型发展,然而大多数软件仍是根据实际的顾客需求定制的。
●为什么说软件不用随着时间而演化的说法是错误的.(1.4.1)因为随着时间的推移,一个软件或由于下述原因发生演化:•软件需要修改其适应性,从而满足新的计算环境或者技术的需求。
•软件必须根据新的业务需求进行升级。
•软件必须拓展以具有与更多现代系统和数据库的协作能力。
•软件构架必须进行改建以适应多样化的网络环境。
第2章的思考题●软件生命周期:软件产品或软件系统从设计、投入使用到被淘汰的全过程。
●软件工程的四个层次以及之间的关系:工具、方法、过程和质量关注点●软件工程的通用框架以及框架活动:沟通、策划、建模、构建和部署●软件构建与软件部署的区别:软件构建包括编码和测试,是在开发阶段由开发人员来完成;软件部署是将所完成的部分交付给客户,由客户对其进行评测和反馈意见,此时开发人员提供技术支持和维护。
●什么是软件过程:软件工程可以定义为一系列模式的组合,这些模式定义了一系列的软件开发中所需的活动、动作、工作任务、工作产品及相关的行为。
第3章的思考题●软件开发的原型模型的各个阶段(phase)沟通、快速策划、建模快速设计、构建原型、部署交付产品及反馈●叙述风险分析在演化模型(螺旋模型)中的作用.评价方案、识别风险、消除风险●软件工程中的基于构件的软件过程模型的主要优势基于构件开发模型能够使软件复用,软件复用会为软件工程师带来极大受益。
软件工程思考题答案
《软件工程》思考题答案2、软件工程是什么时候提出来的?它主要包括哪些方面?软件工程的提出:伴随着软件危机的出现以及解决过程中软件工程学的主要内容是软件开发技术和软件工程管理:软件开发技术包含软件工程方法学、软件工具和软件开发环境;软件工程管理学包含软件工程经济学和软件管理学5、面向对象系统设计的特点面向对象分析设计界限不明显面向对象分析和设计通常采用迭代方法和传统的设计方法类似,面向对象设计也是基于模块化和功能独立等方法之上6、需求分析的主要任务建立分析模型,完成用户需求报告:分析模型是一组描述软件需求的模型;编写软件需求规格说明(SRS)需求分析的特点:用户需求具有动态性用户需求具有模糊性用户与设计者在对需求的认识和理解上存在偏差对需求分析,用户和设计者应共同承担责任需求规格说明书内容:一、概述二、目标系统描述三、目标系统功能需求四、目标系统性能需求五、目标系统界面与接口需求六、目标系统其他需求七、目标系统假设与约束需求分析重要:●需求分析工作对于整个系统的成败影响最大●用户需求报告是第一个最重要的文档,是用户、软件开发人员和项目管理人员三者必须遵守的一根基线●需求分析中的错误对后续工作影响较大●需求分析时期的工作量约占整个开发系统工作量的1/47、●数据流图DFD、数据字典DD和加工说明PSPEC●控制流图CFD、控制状态说明CSPEC和状态变迁图STD●关系实体图E-R图1.8、概要设计的主要任务是什么?它与需求分析有什么关系?主要任务:1.设计软件系统结构(简称软件结构)2.数据结构及数据库设计3.编写概要设计文档4.评审关系需求分析--产生软件功能规格说明书,需要确定用户对软件的需求,要作到明确、无歧义。
不涉及具体实现方法。
用户能看得明白,开发人员也可据此进行下面的工作(概要设计)概要设计--产生软件概要设计说明书,说明系统模块划分、选择的技术路线等,整体说明软件的实现思路。
并且需要指出关键技术难点等。
软工大纲思考题
软工大纲思考题(1~10题)作者:zxh 出自:同等学力申请硕士学位(数学+网络+软工)浏览/评论:560/0 日期:2005年4月26日 17:45软工大纲思考题(1~10题)1、何谓软件?并结合一个具体的软件开发,说明软件的基本构成。
答:软件=程序+数据+文档。
例如在开发一个教师招聘管理信息系统的过程中,首先要有计划,要进行可行性分析,这就产生了最终软件的文档部分中的第一部分项目计划书;如果获得了项目的开发权,接下要进行的是需求分析和设计,这又必须产生需求规格说明书、概要设计说明书和、详细设计说明书,这也是软件文档的一部分。
同时还要进行数据设计,这就包含了软件的另一个组成部分——数据;然后进行编码,编码主要的产品是程序,但程序中也应该有必要的注释,以提高程序的可读性;随后是测试,测试要有测试计划、测试用例设计、测试结果等相关文档;交付用户之前还要编写用户说明书、培训资料等文档。
在运行期间,进行的维护工作也要产生相应的维护记录。
2、软件工程的概念与图1所示的软件工程框架之间的关系。
答:按照IEEE1993年的定义,软件工程是将系统的化的、规范化的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。
软件工程框架:也就是说,软件工程的目标是开发可用的、正确的和合算的软件;为了达到这个目标,在包括基本过程、支持过程和组织过程软件过程中,必须坚持“选取适宜的开发范型原则、采用合适的设计方法、提供高质量的工程支持和重视软件工程管理”的原则。
4、如何理解ISO12207标准中的“软件过程”这一术语?答:软件过程是一组活动的集合,而活动是任务的集合,任务是把输入变成输出的一组操作。
5、按参与软件开发(生产)的人之职责来划分软件过程,形成三大类:基本过程、组织过程和支持过程,简述它们的含义以及每一过程所包含的活动。
答:基本过程是与软件开发直接相关的过程,包括获取过程、供应过程、开发过程、运行过程和维护过程。
软件工程的100道问答题
1、什么是软件危机?产生软件危机的原因?怎样消除?2、什么是软件工程?包括哪些内容?3、软件生存周期包含哪些内容?4、软件开发模型有几种?各有什么特点?7、在软件开发的早期阶段,为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?8、一个软件开发系统的可行性研究报告应如何编写?9、数据流图有哪几种基本符号?10、画数据流图原则是什么?11、数据流图在软件分析中的作用是什么?12、数据字典的作用?13、什么是数据字典?有几个定义?各自特点是什么?14、有几种效益的分析方法?15、需求分析的任务是什么?16、需求分析通常采用哪些分析技术?17、什么是结构化分析?他的结构化体现在哪里?18、简述面向对象分析技术的主要步骤?19、原型开发技术的目的,特点是什么?20、简述总体设计的一般过程?21、什么叫软件结构?什么叫软件工程?二者之间关系?22、解释深度、宽度、扇出、扇入对软件的影响。
23、什么叫模块化?M代表的含义是什么?24、模块化的三个重要特征是什么?阐明各自的作用。
25、举例说明各种耦合情况和各种内聚情况。
26、简述设计准则的内容。
27、简述层次方框图与软件结构图的异同点。
28、事物型软件结构图有什么特点?原因是什么?29、详细设计的任务是什么?30、什么是结构化程序设计?用N-S图表示三种基本结构。
31、简述Jackson程序设计方法的主要内容。
32、简述Wariner程序设计方法的主要内容。
35、 C语言属于第几代语言?第四代语言特点是什么?36、简述高级语言的应用特点和内在特点。
37、试分析程序设计语言特点及软件可*性、可理解性、可修改性、可测试性及成本的关系。
38、选择一种语言的实用标准是什么?39、简述开发环境、计算机体系结构、软件设计方法、软件开发过程与程序设计语言之间的促进和制约作用。
40、程序的编码风格主要体现在哪几个方面?41、软件测试的基本任务是什么?测试与调试区别是什么?42、软件测试的目标是什么?43、软件测试分几个步骤进行?每个步骤解决什么问题?44、软件测试有几种方法?每种方法的特点是什么?45、软件出错有几种类型?验证其程序正确性有几种方法?46、什么是单元测试和集成测试?他们各有什么特点?47、简述渐增式测试方法与非渐增式测试方法的优劣。
《软件工程》复习思考题全解
《软件⼯程》复习思考题全解《软件⼯程》复习知识点及思考题1需求分析是由分析员经过了解⽤户的要求,认真细致地调研、分析,最终建⽴⽬标系统的逻辑模型,并写出软件规格说明书。
2结构化程序设计主要强调程序的可读性。
3软件设计包括四个既独⽴⼜相互联系的活动,分别为体系结构设计、接⼝设计、数据设计和过程设计。
4 ⽤来辅助软件开发、运⾏、维护、管理、⽀持等过程中的活动的软件称为软件开发⼯具,通常称为CASE⼯具。
5系统调查的主要内容有哪些?(管理业务状况)6在系统分析的基础上,进⾏系统的总体设计和具体物理设计所依据的模型是什么模型。
(逻辑模型)7⽤原型法开发系统时,使⽤、评价系统原型阶段的主要任务是什么?(征求⽤户对系统原型的评价和改进意见。
)8⽤于描述系统⽬标及其与功能模块关系的图称为什么图?(功能结构图)9与设计测试数据⽆关的⽂档是哪个⽂档?(项⽬开发计划)10PAD(Problem Analysis Diagram)图是⼀种什么⼯具?(详细设计)11 系统设计阶段的主要⼯作内容之⼀是定义处理过程。
CMM是软件能⼒成熟度模型的中⽂宿写。
数据字典的建⽴应在系统分析阶段进⾏。
我国的软件⼯程标准可分为四类,即基础标准、开发标准、⽂档标准和管理标准。
12 设计⾼质量的软件是软件设计追求的重要⽬标。
可移植性、可维护性、可靠性、效率、可理解性和可使⽤性等都是评价软件质量的重要⽅⾯。
可移植性是反映出把⼀个原先在某种硬件或软件环境下正常运⾏的软件移植到另⼀个硬件或软件环境下,使该软件也能正确地运⾏的难易程序。
为了提⾼软件的可移植性,应注意提⾼软件的设备不依赖性。
可维护性通常包括可理解性、可修改性和可测试性。
通常认为,软件维护⼯作包括改正性维护、完善性维护和适应性维护。
其中完善性维护维护则是了为扩充软件的功能或提⾼原有软件的性能⽽进⾏的维护活动。
健壮性是指当系统万⼀遇到未预料的情况时,能够按照预定的⽅式作合适的处理。
13 软件设计中划分模块的⼀个准则是⾼内聚低耦合。
软件工程期末试卷(十套含答案)
软件工程期末试卷(十套含答案)一、选择题(每题1分,共5分)A. 方法论B. 工具C. 过程D. 人员2. 下列哪一项不是软件生命周期的阶段?A. 需求分析B. 设计C. 编码D. 销售与市场A. 瀑布模型B. 喷泉模型C. 增量模型D. 敏捷模型4. 下列哪种方法不是软件需求获取的方法?A. 问卷调查B. 访谈C. 观察D. 编码A. 单一职责原则B. 开放封闭原则C. 里氏替换原则D. 依赖倒置原则二、判断题(每题1分,共5分)1. 软件工程的目标是生产出高质量的软件产品。
(√/×)2. 在软件开发过程中,需求分析阶段是最重要的阶段。
(√/×)3. 软件开发模型只有瀑布模型和喷泉模型两种。
(√/×)4. 在面向对象方法中,类是现实世界中实体的抽象。
(√/×)5. 软件测试的目的是证明软件的正确性。
(√/×)三、填空题(每题1分,共5分)1. 软件工程的三要素包括方法论、工具和______。
2. 软件生命周期包括需求分析、设计、编码、测试和______。
3. 在面向对象方法中,对象是现实世界中实体的______。
4. 软件开发模型包括瀑布模型、喷泉模型、增量模型和______。
5. 软件测试的目的是发现软件中的______。
四、简答题(每题2分,共10分)1. 简述软件工程的目标。
2. 简述软件生命周期的阶段。
3. 简述面向对象方法的基本概念。
4. 简述软件开发模型的作用。
5. 简述软件测试的目的。
五、应用题(每题2分,共10分)1. 假设你是一个软件开发人员,你需要为一个图书馆开发一个图书管理系统。
请列出该系统的需求。
2. 请解释瀑布模型和喷泉模型的区别。
3. 请解释面向对象方法中的继承和多态的概念。
4. 请解释软件测试中的黑盒测试和白盒测试的区别。
5. 请解释软件维护的类型。
六、分析题(每题5分,共10分)1. 假设你是一个软件开发人员,你需要为一个在线购物网站开发一个支付系统。
(建筑工程管理)软件工程导论期末思考题解答
(建筑工程管理)软件工程导论期末思考题解答《软件工程》期末思考题(计算机科学和技术专业)什么是软件?软件的特点有哪些?概念:软件是产品,由满足壹定要求的,具有可用性、可靠性的程序系统和和之相匹配的文档资料所组成。
特点:不可见(难以管理、控制开发过程)、不磨损、难维护(维护即修改原有设计)、复杂(复杂性随规模指数增加)、开发而成、手工定做、成本高。
什么是软件危机?软件危机的表现是什么?是指:软件开发、维护过程中遇到的壹系列严重问题。
如何开发软件,以满足对软件日益增长的需求。
如何维护数量不断膨胀的已有软件。
表现:估、满、靠、维、文、比、率。
开发成本、进度估计不准确。
用户对“已完成”的软件不满意。
质量不可靠。
不可维护。
没有适当文档资料。
软件成本于计算机系统总成本中所占的比例逐年上升。
软件开发生产率提高速度跟不上计算机普及速度。
软件危机产生的原因是什么?原因:软件自身特点:不可见(难以管理、控制开发过程)、难维护(维护即修改原有设计)、规模大(复杂性随规模指数增加)。
软件开发、维护方法不正确:忽视需求分析(定义时期)、轻视软件维护。
什么是软件工程?软件工程的基本内容有哪俩个方面?概念:采用工程的概念、原理、技术和方法来开发和维护软件,把正确的管理和最好的技术结合起来,以经济地开发出高质量的软件且有效地维护它。
俩方面:管理(开发、经济)、技术(方法、工具、过程)软件工程三个要素是什么?方法:开发技术方法。
工具:为运用方法提供的支撑环境。
过程:任务框架、工作步骤。
你知道的软件工程过程模型有哪些?瀑布模型原型模型螺旋模型迭代模型什么是软件生命周期?它有哪几个阶段?概念:软件从定义、开发、使用和维护,知道被废弃的过程。
阶段:定、性、需、概、详、变蛋、综、维问题定义可行性研究需求分析总体设计详细设计编码和单元测试综合测试软件维护可行性研究的任务是什么?了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究且论证本软件项目的可行性,编写可行性研究方案,制定初步项目开发计划。
软件工程课后题答案大全(详细)
软件工程习题解答第一章概述1.软件产品的特性是什么?a.软件产品是一种逻辑产品。
b.软件产品的生产主是研制,软件产品的成本主要体现在软件的开发和研制上,软件开发完成后,复制就产生了大量软件产品。
c.软件产品不会用坏,不存在磨损、消耗问题。
d.软件产品的生产主要是脑力劳动,还未完全摆脱手工开发方式,而且碰分是"定做"的。
e.软件费用不断增加,成本相当昂贵。
2.软件产品有几个阶段?各有何特征?阶段 A.程序设计时代(1946-1956) B.程序系统时代(1956-1968) C.软件工程时代(1968-今)生产方式个体手工劳动作坊式小集团合作生产工程化的生产工具机器语言、汇编高级语言数据库、开发工具、开发环境、网络、分布式、面向对象技术开发方法追求编和技巧,追求程序运行效率个人技巧,开始提出结构化方法硬件特征价格贵、存储容量小、运行可靠性差速度、容量、工作可靠性有明显提高,价格降低,销售有爆炸性增长向超高速、大容量、微型化以及网络化方软件特征只有程序、程序设计概念,不重视程序设计方法程序员数量猛增,已意识到软件开发的重要性,开发技术没有新的突破,大量软件开发的需求已提出,开发人员的素质和工程兵的开发技术不适应规模大、结构复杂的软件开发,产生了尖锐矛盾,导致软件危机的产生开发技术有很大进步,但未能获得突破性进展,软件价格不断上升,没有完全摆脱软件危机3.什么是软件危机?其产生的原因是什么?软件危机:软件发展第二阶段的末期,由于计算机硬件技术的进步。
一些复杂的、大型的软件开发项目提出来了,但,软件开发技术的进步一直未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。
主要表现在以下几个方面:a.经费预算经常突破,完成时间一再拖延。
b.开发的软件不通满足用户要求。
c.开发的软件可维护性差。
d. 开发的软件可靠性差。
软件危机产生的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的:a.软件的规模越来越大,结构越来越复杂。
软件工程思考题
软件工程思考题姓名:班级:学号:日期:第一章1.查阅资料,看看还有哪些软件开发的方法和模型。
它们的基本思想是什么,有什么特点。
软件开发方法:一、Parnas方法信息隐蔽原则:在概要设计时列出将来可能发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。
第二条原则是在软件设计时应对可能发生的种种意外故障采取措施。
二、SASD方法用结构化分析(SA)对软件进行需求分析,然后用结构化设计(SD)方法进行总体设计,最后是结构化编程(SP)。
三、面向数据结构的软件开发方法1、Jackson方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的程序结构图。
该方法也可与其它方法结合,用于模块的详细设计。
Jackson方法有时也称为面向数据结构的软件设计方法。
2、Warnier方法Warnier方法与Jackson方法类似。
差别有三点:一是它们使用的图形工具不同,分别使用Warnier图和Jackson图;另一个差别是使用的伪码不同;最主要的差别是在构造程序框架时,Warnier方法仅考虑输入数据结构,而Jackson方法不仅考虑输入数据结构,而且还考虑输出数据结构。
四、问题分析法考虑到输入、输出数据结构,指导系统的分解,在系统分析指导下逐步综合。
这一方法的具体步骤是:从输入、输出数据结构导出基本处理框;分析这些处理框之间的先后关系;按先后关系逐步综合处理框,直到画出整个系统的PAD图。
五、面向对象的软件开发方法这是一种自底向上和自顶向下相结合的方法,而且它以对象建模为基础,从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构。
OO技术在需求分析、可维护性和可靠性这三个软件开发的关键环节和质量指标上有了实质性的突破,彻底地解决了在这些方面存在的严重问题,从而宣告了软件危机末日的来临。
1、自底向上的归纳OMT从问题的陈述入手,构造系统模型。
从。
在自底向上的归纳过程中,为使子类能更合理地继承父类的属性和行为,可能需要自顶向下的修改,从而使整个类体系更加合理。
软件工程习题附答案
软件工程习题附答案软件工程是一门研究和应用如何以系统性、规范化、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。
以下是一些软件工程的习题及答案,希望能帮助您更好地理解这门学科。
一、选择题1、软件生命周期中所花费用最多的阶段是()A 详细设计B 软件编码C 软件测试D 软件维护答案:D解析:软件维护阶段需要对软件进行修改、优化和修复,由于软件在使用过程中可能会遇到各种问题和需求变更,所以维护阶段通常会花费大量的时间和资源。
2、下面不属于软件工程的 3 个要素的是()A 工具B 过程C 方法D 环境答案:D解析:软件工程的三要素是方法、工具和过程。
方法为软件开发提供了“如何做”的技术;工具为方法的运用提供了自动的或半自动的软件支撑环境;过程是将方法和工具结合起来,以达到合理、及时地进行软件开发的目的。
3、软件可行性研究实质上是要进行一次()需求分析和设计过程。
A 简化、压缩的B 详细的C 彻底的D 深入的答案:A解析:可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决,其实质是进行一次简化、压缩的需求分析和设计过程。
4、软件测试的目的是()A 证明软件的正确性B 找出软件中的所有错误C 尽可能多地发现软件中的错误D 调试程序答案:C解析:软件测试的目的是尽可能多地发现软件中的错误,而不是证明软件的正确性,也不可能找出软件中的所有错误。
5、下面描述中,不符合结构化程序设计风格的是()A 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B 自顶向下C 注重提高程序的执行效率D 限制使用 goto 语句答案:C解析:结构化程序设计强调清晰的结构和良好的可读性,注重程序的可理解性和可维护性,而不是过于追求执行效率。
二、填空题1、软件生存周期一般可分为问题定义、可行性研究、()、设计、()、测试、运行与维护阶段。
软件工程思考题
软件工程思考题1.什么是软件危机?软件工程的目标是什么?软件危机指,随着计算机工业的发展,在软件开发过程中逐渐形成了一些矛盾。
比如:软件开发没有计划性;软件前期需求分析不足;软件开发过程没有规范等等。
这些矛盾表现在软件开发中导致了一系列问题,如开发计划无法顺利执行,成本昂贵,开发的软件错误百出等等。
正是这种软件危机才促使人们寻求解决方法,也就产生了软件工程。
软件工程的目标:软件工程是一门工程性学科,目的是成功地建造一个大型软件系统。
所谓成功,是要达到以下几个目标:1:付出较低的开发成本;2:达到要求的软件功能;3:取得较好的软件性能;4:开发的软件易于移植;5:需要较低的维护费用;6:能按时完成开发任务,及时完成开发任务,及时交付费用;7:开发的软件可靠性高2.什么是软件生存周期?它有哪几个活动?一个软件从开始计划起,到废弃不用止,称为软件生存周期。
一般来说,软件生存周包括计划、开发、运行三个时期,每一时期又可分为若干更小的阶段。
计划时期的主要任务是分析用户要求,分析新系统的主要目标以及开发该系统的可行性。
开发时期要完成设计和实现两大任务具体。
具体分为需求分析、概要设计、详细设计、编码、测试。
其中编码和测试是软件开发期的最后两个阶段。
运行时期是软件生存周期的最后一个时期,软件人员在这一时期的工作,主要是做好软件维护。
3.可行性研究的任务是什么?从技术、效益、社会因素等方面分析一个软件项目是否可以开发研究一下项目可不可行,技术上,时间上,人力上,成本上,能不能盈利4.什么是需求分析?什么是非功能需求?需求分析阶段的基本任务是什么?所谓"需求分析",是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。
可以说,“需求分析”就是确定要计算机“做什么”。
非功能需求描述了系统展现给用户的行为和执行的操作等,它包括产品必须遵从的标准、规范和约束,操作界面的具体细节和构造上的限制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《软件工程》期末思考题江超群2016/12/171•什么是软件?软件的特点有哪些?国标中对软件的定义为:与计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。
可以认为:软件=程序+数据+文档特点:软件是复杂的;软件是一个逻辑产品而不是物理产品;软件是开发的,而不是制造的;软件具有柔性;软件不会“磨损”;至今还未完全摆脱手工开发模式,大部分产品是定制的;软件成本相当曰車昂贵。
2•什么是软件危机?软件危机的表现是什么?软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
表现:如那件开发进度难以预测;软件开发成本难以控制;用户对产品功能难以满足;软件产品质量无法保证;软件产品难以维护;软件缺少适当的文档资料。
3. 软件危机产生的原因是什么?软件本身:1)软件本身是逻辑部件,缺乏可见性,开发过程的进展情况和质量难以预测、难以衡量。
2)不会用坏,维护意味着修改原设计。
3)规模庞大,多人合作,难以统一成高质量的整体。
开发、维护方法不当:对用户的需求没有准确的认识,仓促上阵,急于求成。
4. 什么是软件工程?软件工程的基本内容有哪两个方面?将工程的原理应用于软件设计、开发以获得有效的和经济的软件、软件开发过程和软件系统。
IEEE定义:⑴将系统的、规范的、可度量的方法应用于软件的开发、运行和维护的过程;(2)上述方法的研究。
基本内容有技术和管理两方面。
5. 软件工程三个要素是什么?软件工程作为一种层次化的技术,有方法、工具和过程三大要素,并由于其涉及学科内容的极为广泛,而分为三个分支:软件开发技术、软件项目管理技术、软件质量管理技术。
6•你知道的软件工程过程模型有哪些?瀑布模型、增量模型、演化模型、喷泉模型、基于构件的开发模型、形式化方法模型。
7•什么是软件生命周期?它有哪几个阶段?软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。
包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护从哪几方面进行可行性研究?市场可行性、政策可行性技术可行性一般要考虑的情况包括开发的风险即设计出的系统能否达到要求的功能和性能 资源的有效性;相关技术的发展是否支持;经济可行性进行开发成本的估算以及了解取得效益的评估 ,确定要开发的项目是否值得投资。
社会可行性要开发的项目是否存在任何侵权问题,运行方式在用户组织内是否可行,现有管理制度 、人员素质、操作方式是否可行。
软件需求分析从哪几方面进行?可以分为:功能需求、性能需求、可靠姓需求和可用性需求、出错处理需求、接口需求等多个方进行需求分析的步骤什么?确定系统的综合需求; 分析系统的数据需求; 导出逻辑模型; 修正系统开发计划。
用什么图可以描述系统的业务?业务流程图或UML 活动图 组织结构图用什么图可以描述系统的功能?数据流图或UML 用况图什么是数据流图?它包括几种基本符号?其作用是什么?是描述数据处理的工具。
从数据传输和加工的角度,以图形的方式刻画数据流从输入到输出的移 动变换过程,是一种功能模型。
数据流数据存储图1数据流图基本符8.9.面。
10.1) 2) 3) 4)11.12. 13.加工{处理)•变换数拒的处理14. 画出你所做项目的0层(或1层)数据流图15. 说出画数据流图的原则,至少5条1)数据流图上所有符号只限于四种基本图形元素2)主图必须包括四种基本元素,缺一不可3)主图上的数据必须封闭在外部实体之间,外部实体可以不止一个4)每个加工至少有一个输入数据流和一个输出数据流5)每个数据流都应有与相联系的加工6)数据文件必须既有读操作,也有写操作7)需按层给加工编号(但不表示先后顺序),8)任何一个子图必须与它上一层的一个加工对应,二者的输入数据流和输出数据流必须一致9)图上每个元素都必须有名字10)数据流图中不可夹带控制流(这与程序流程图有本质区别)11)初画时可忽略琐碎的细节,集中精力于主要的数据流16. 什么是数据字典,它与数据流图有什么关系?是关于数据信息的集合,它对数据流图中的各个元素作完整的定义与说明,是数据流图的补充工具。
数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目。
关系:数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用。
只有数据流图和对数据流字典中每个元素的精确定义放在一起,才能共同构成系统的规格说明。
17. 需求分析阶段产生的主要文档?1)软件需求规格说明书2)初步的用户手册3)确认测试计划18. 什么是软件概要设计,该阶段的基本任务是什么?概括地回答“怎样实现目标系统”。
基本任务:1)设计软件系统结构(软件结构)2)用户界面及数据库设计3)编写概要设计文档a)概要设计说明书b)数据库设计说明书c)用户手册d)修订测试计划4)评审19. 什么是模块独立性?衡量模块独立程度的标准是什么?使每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。
衡量模块独立性程度的度量标准a)耦合:衡量不同模块间相互依赖的紧密程度。
b)内聚:衡量一个模块内部各元素彼此结合的紧密程度。
20. 什么是耦合?什么是内聚?耦合:模块间的联系的紧密程度。
无耦合、松散耦合、紧密耦合。
由低到高:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共环境耦合、内容耦合。
内聚:模块内各个元素彼此结合的紧密程度。
由低到高:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、信息内聚、功能内聚。
21. 画出你所做项目的软件结构图22. 用户界面设计准则有哪些?1)用户界面适合于软件的功能2)容易理解(无误、提示信息)3)一致性(风格、术语、步骤、动作)4)减少用户记忆的负担5)及时反馈信息6)出错处理7)适应各种用户(初学者/专家、色盲等)8)国际化(图标、语言、单位、日期格式等)9)个性化(与众不同、记忆深刻)10)合理的布局(行列对齐、尺寸合理、缩放正常)11)和谐的色彩23. 概要设计阶段产生的主要文档?a)概要设计说明书b)数据库设计说明书c)用户手册d)修订测试手册24. 你在概要设计说明书中主要使用的图是什么,表达什么?25. 什么是详细设计?内容?说明应该怎样具体地实现这个系统。
主要内容:数据结构与算法26. 描述算法的工具有哪些?算法流程图;盒图(N-S图);问题分析图(PAD图);判定表;判定树;过程设计语言(伪代码、PDL)图2程序流程图和盒图图3 PAD 和判定表r 头尊艇L 国内柔客其它船 拧李垂呈-W>3(1厂头等舱—国外乘客L 其它龍行李重贡—免费^<-JU图4判定树27. 算法流程图和系统流程图的区别是什么?系统流程图:描绘系统物理模型的传统工具。
他的基本思想是用图形符号以黑盒子的形式描绘系统 理念的每个部件包括程序, 文件,数据库,表格,人工过程等,表达信息在给个部件之间流动的情况, 而不是表示对信息进行加工处理的控制过程。
反映了主体框架。
程序流程图:描述了程序中控制流地情况,即程序中处理的执行顺序和执行序列所依赖的条件, 途中有向线段表示的是控制流从一个处理走到下一个处理。
28. 详细设计阶段产生的主要文档?详细设计说明书■ 0世)陡畀咆 (3)s^kaff wS f 循坏体)W*FAT UNTILP(Problem Analysis Diagram)(1}帧序给构 住)选弹站构UMIL C(后测试搪环112 3 4 S 6 7 89国内彙客 T T TT F FF F头嫌枪T F TF T FT FFPT T F F TT 1f¥M*W<30 TFFFFFFFF处费7(W-30) X2V(W-W) X3V(W-30) X4VV(W-30) X6 VV(W-30) X8V(W-3<J) X13V残疾乘客」U-30)*2FF 常乘客 JU 3«1)*4 -硯疾乘客JU-3O>*3L 正當乘 ^_(W-30)*6 残疾乘客JU-30)M 匚正當乘客 正常乘客尸12(el)AB(c2)(4)・H1LE ■豎塑 (5) UKTlLtXggWHIlF PS __(糖耳*0门〕聲夕结构:4)多分支送择型(先测试循29. 什么是软件设计说明书?主要包括什么内容?概要设计说明书是概要设计阶段的工作成果,它应说明功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计奠定基础。
详细设计说明书是详细设计阶段的主要成果,也是编码阶段主要参考的文档。
主要包括引言、总体设计、程序设计说明。
30. 你认为编码时要注意的问题有哪些?1)变量命名规范2)编码格式规范3)多加注释4)少用或不用goto语句5)使用C/C++时,申请了内存空间就要记得释放内存空间31. 什么是软件测试?应该由谁去测试?软件测试是软件开发过程中必须伴有的质量保证活动。
软件测试是软件质量保证的关键元素,代表了规约、设计和编码的最终检查。
通常,项目的开发人员不参与系统测试。
测试小组通常是独立于实现人员的,理想情况下,某些测试小组成员已经是有经验的测试人员。
测试人员需要熟悉测试系统规格说明,而且熟悉测试方法和工具。
32. 软件测试的目标是什么?软件调试的目的是什么?测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。
软件调试的目的是确定错误的位置、性质并纠正。
33. 什么是白盒测试,设计白盒测试方案的技术是什么?白盒测试是根据被测程序的逻辑结构设计测试用例;力求提高测试覆盖率。
设计白盒测试用例的方法:逻辑覆盖法。
语句覆盖、判定覆盖、条件覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖。
34. 什么是黑盒测试,黑盒测试的主要方法是什么?黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。
在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。
黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
主要测试方法:等价类划分、边界值分析法、错误推测。
35. 什么是测试用例?一个测试用例包括哪些内容?测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。