软件工程思考题-给学生
软件工程复习思考题
软件工程复习思考题1.试述软件工程的基本原理。
⑴模块化:模块是软件的组成部分,是具有独立功能且可命名的一段程序,所有模块组成整体,可以满足问题的要求。
模块化即按照一定的原则,将软件划分成若干个模块,每个模块完成一个特定的功能,然后把这些模块按照某种方法组装成一个软件系统。
(可降低复杂度、减少工作量)模块具有以下几种特性:接口:模块的输入输出。
功能:指模块实现什么功能。
逻辑:描述模块内部如何实现要求及所需的数据。
状态:该模块的运行环境,模块间调用与被调用关系。
⑵抽象:认识复杂现象过程所使用权的工具,只考虑事物本质的共同特性,忽略细节和其它因素。
通过抽象确定组成软件的过程实体。
⑶信息隐蔽:将模块实现自身功能的细节与数据"隐蔽"起来。
模块间仅交换为完成系统功能所必须的信息。
⑷模块独立性:每个模块只完成系统要求的独立的子功能。
2.软件项目管理的职能有哪些?3.试述总体设计的原则。
4.试述面向对象设计的启发规则。
P2611.设计结果应该清晰易懂2一般—特殊结构的深度应适当3.设计简单的类4.使用简单的协议5.使用简单的服务6.把设计变动减至最小5.为了具有良好的程序设计风格,应注意哪些方面的问题?程序设计风格是指一个人编制程序时所表现出来的特点、习惯、逻辑思路等。
要形成良好的程序设计风格,应从源程序文档化、数据说明、语句构造、输入输出和追求效率几个方面加以注意。
6.试比较程序流程图与PAD图的特点。
程序流程图是一种用规定的图形,指向线及文字说明来准确表示算法的图形,具有直观、形象的特点,能清楚地展现算法的逻辑结构.画程序框图的规则:使用标准的框图符号;框图一般按从上到下,从左到右的方向画;除判断框外,大多数程序框图的符号只有一个进入点和一个退出点,而判断框是具有超过一个退出点的唯一符号.PAD所描述程序的层次关系表现在纵线上。
每条纵线表示了一个层次。
把PAD图从左到右展开。
随着程序层次的增加,PAD逐渐向右展开。
软件工程思考题答案
第一章根本概念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. 请解释软件配置管理是什么?软件配置管理是指通过管理软件系统中的各种配置项和配置变更,以确保软件系统的正确、完整和可追踪。
它包括配置项识别、变更控制、版本控制、配置库管理等活动,旨在提高软件开发和维护过程的可控性和可靠性。
3. 请介绍软件测试的目的和重要性。
软件测试的目的是发现软件系统中的错误、缺陷和潜在问题,以便在软件交付之前进行修复和改进。
软件测试的重要性在于可以提高软件系统的质量和可靠性,降低软件使用过程中的风险和损失。
4. 什么是软件架构?软件架构是指软件系统的基本结构和组织方式。
它描述了软件系统中各个组件之间的关系和交互,以及软件系统的总体设计原则和理念。
软件架构可以帮助团队成员理解和沟通软件系统的设计和实现。
5. 请解释敏捷开发方法。
敏捷开发方法是一种以迭代、循环和适应性为核心的软件开发方法。
它强调团队合作、快速反馈和不断改进,在不断变化的需求环境下能够更加灵活地开发和交付高质量的软件系统。
6. 请介绍软件项目管理的过程和技术。
软件项目管理包括项目计划、项目组织、项目监控和项目交付等过程。
它涉及到时间管理、成本管理、风险管理、质量管理等技术和工具,以确保软件项目能够按时、按量和按质完成。
7. 请解释软件工程中的代码重构。
代码重构是指在不改变软件系统外部行为的前提下,通过对代码的重新组织和调整来改进软件系统的内部质量和可理解性。
软件工程课本练习题
(4)——是一种面向数据流的需求分析方法。这种方法通常与设计阶段的结构化设计衔接起来使用。
(5)面向对象分析模型通常包括——、——和——。
(6)——是某些对象的模板,抽象地描述属于该类的全部对象的属性和操作。
(3)制定项目的主要任务:1、项目资源计划 2、成本预算 3、进程安排
第二章
1.选择题
(1)需求分析阶段的工作可以分为4个方面:对问题的识别、分析与综合、制定需求规格说明书和(A)
A需求分析评审 B对问题的解决 C对过程的讨论 D功能描述
(2)以下不是结构化分析方法描述系统功能模型的方法是(D)
(4)传统的详细设计的工具主要包括( ADE )
A.程序流程图 B.数据结构设计
C.模块和接口 D.判定表
E.程序设计语言
2.填空题
(1)RUP(统一开发过程)模式的最大有点是__________的方法,该方法可以较为直观地建立起系统发构架,通过反复识别,避免需求中的漏项。
(2)类有属性、操作、约束以及其他成分等,属性__________所能具有的值,操作实现类的____________,用户接口就是__________,联系代表____________。
(3)详细设计需要对系统的模块做概要性的说明,主要包括________描述、_________描述和___________描述。
D.确定对象之间的通信 E.完成对象定义
(4)软件建模的三个模型是:( C)描述系统能做什么,( B)描述系统在何时、何地、由何角色、按什么业务规则去执行,以及执行的步骤或流程,( B)描述系统工作前的数据来自何处,工作中的数据暂存什么地方,工作后的数据放到何处,以及这些数据之间的关联。 A.设计模型 B.数据模型 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、按参与软件开发(生产)的人之职责来划分软件过程,形成三大类:基本过程、组织过程和支持过程,简述它们的含义以及每一过程所包含的活动。
答:基本过程是与软件开发直接相关的过程,包括获取过程、供应过程、开发过程、运行过程和维护过程。
软件工程(第四版)习题及解答1-7
软件工程(第四版)习题及解答1-7软件工程(第四版)习题及解答1-7软件工程一直是信息技术领域中一门重要的学科,它涉及到软件设计、开发、测试和维护等多个方面。
对于学习软件工程的学生来说,练习和解答一些相关习题是非常重要的。
本文将为大家提供《软件工程(第四版)》中的习题1-7的解答和详细讨论。
1. 习题1题目描述:什么是软件工程?为什么软件工程如此重要?解答:软件工程是一门学科,涵盖了软件开发的所有阶段,包括需求分析、软件设计、编码、测试和维护等。
软件工程关注如何以系统化的、规范的方法来开发高质量的软件。
软件工程之所以如此重要,原因有以下几点:首先,软件工程能够提供一个结构化的方法来开发软件,保证开发流程可控、可预测。
通过规范的过程和方法,可以减少软件开发过程中的风险和错误。
其次,软件工程将软件开发过程分解为不同的阶段,并引入了各种工具和技术来支持这些阶段的开发工作。
这些工具和技术能够提高开发效率,减少开发成本。
此外,软件工程还注重软件质量管理,包括软件测试、验证和验证等方面,以确保最终交付给用户的软件是高质量可靠的。
最后,软件工程也关注软件的维护和更新。
由于软件在使用过程中会面临各种问题和需求变化,软件工程可以帮助开发人员及时响应和解决这些问题,提供更好的用户体验。
2. 习题2题目描述:简要解释软件需求分析的目标和过程。
解答:软件需求分析的目标是识别和规范用户对软件系统的需求,确保开发人员和用户对软件系统的期望一致,并将这些需求转化为可行的系统规格说明。
软件需求分析的过程包括以下几个步骤:1) 需求收集:通过与用户沟通、调研等方式,收集用户对软件系统的需求。
可以采用面谈、问卷调查、观察等方法。
2) 需求分析和整理:对收集到的需求进行分析和整理,将其转化为可理解的形式。
可以使用需求建模工具和技术,如用例图、数据流图等。
3) 需求规格说明:在此阶段,将需求转化为详细的规格说明,包括功能需求、性能需求、质量需求等。
《软件工程》复习思考题全解
《软件⼯程》复习思考题全解《软件⼯程》复习知识点及思考题1需求分析是由分析员经过了解⽤户的要求,认真细致地调研、分析,最终建⽴⽬标系统的逻辑模型,并写出软件规格说明书。
2结构化程序设计主要强调程序的可读性。
3软件设计包括四个既独⽴⼜相互联系的活动,分别为体系结构设计、接⼝设计、数据设计和过程设计。
4 ⽤来辅助软件开发、运⾏、维护、管理、⽀持等过程中的活动的软件称为软件开发⼯具,通常称为CASE⼯具。
5系统调查的主要内容有哪些?(管理业务状况)6在系统分析的基础上,进⾏系统的总体设计和具体物理设计所依据的模型是什么模型。
(逻辑模型)7⽤原型法开发系统时,使⽤、评价系统原型阶段的主要任务是什么?(征求⽤户对系统原型的评价和改进意见。
)8⽤于描述系统⽬标及其与功能模块关系的图称为什么图?(功能结构图)9与设计测试数据⽆关的⽂档是哪个⽂档?(项⽬开发计划)10PAD(Problem Analysis Diagram)图是⼀种什么⼯具?(详细设计)11 系统设计阶段的主要⼯作内容之⼀是定义处理过程。
CMM是软件能⼒成熟度模型的中⽂宿写。
数据字典的建⽴应在系统分析阶段进⾏。
我国的软件⼯程标准可分为四类,即基础标准、开发标准、⽂档标准和管理标准。
12 设计⾼质量的软件是软件设计追求的重要⽬标。
可移植性、可维护性、可靠性、效率、可理解性和可使⽤性等都是评价软件质量的重要⽅⾯。
可移植性是反映出把⼀个原先在某种硬件或软件环境下正常运⾏的软件移植到另⼀个硬件或软件环境下,使该软件也能正确地运⾏的难易程序。
为了提⾼软件的可移植性,应注意提⾼软件的设备不依赖性。
可维护性通常包括可理解性、可修改性和可测试性。
通常认为,软件维护⼯作包括改正性维护、完善性维护和适应性维护。
其中完善性维护维护则是了为扩充软件的功能或提⾼原有软件的性能⽽进⾏的维护活动。
健壮性是指当系统万⼀遇到未预料的情况时,能够按照预定的⽅式作合适的处理。
13 软件设计中划分模块的⼀个准则是⾼内聚低耦合。
软件工程课后习题参考答案
软件工程课后习题参考答案一、概述软件工程作为一门跨学科的学科,涉及到软件开发的各个方面,对培养软件工程师的能力具有重要意义。
课后习题是巩固和深化学生对课程知识的理解和应用的重要途径。
本文将为软件工程课后习题提供一些参考答案,供学生参考和自我评估。
二、需求分析与规格说明1. 什么是软件需求?软件需求分析的目的是什么?软件需求是对问题域中用户对软件所期望的功能和性能的描述。
软件需求分析的目的是识别、理解、规范和管理软件系统开发的需求。
2. 软件需求分析的基本步骤是什么?软件需求分析的基本步骤包括需求获取、需求建模、需求验证和需求管理。
3. 什么是功能需求?什么是非功能需求?功能需求描述的是软件系统应具备的具体功能和行为。
非功能需求则描述了软件系统的其他属性,例如性能、安全性、可靠性等。
4. 举例说明一些常见的软件需求验证方法。
常见的软件需求验证方法包括需求审查、原型验证、测试和模型检查等。
三、软件设计与架构1. 什么是软件架构?软件架构的重要性是什么?软件架构是软件系统的基础结构和组织方式,决定了软件系统的可扩展性、可维护性和可演化性。
软件架构的合理设计能够降低开发和维护的难度。
2. 请简要介绍常见的软件架构模式。
常见的软件架构模式包括分层架构、客户-服务器架构、面向对象架构和微服务架构等。
3. 什么是设计模式?列举几个常见的设计模式。
设计模式是针对软件设计中的常见问题所提出的解决方案。
常见的设计模式包括单例模式、观察者模式、工厂模式和策略模式等。
4. 请简要介绍面向对象设计的原则。
面向对象设计的原则包括单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则和接口隔离原则等。
四、软件测试与质量保证1. 软件测试的目的是什么?请简要介绍测试驱动开发(TDD)。
软件测试的目的是发现软件产品中的错误和缺陷。
测试驱动开发是先编写测试用例,再根据用例编写代码的开发模式。
2. 请简要介绍黑盒测试和白盒测试。
黑盒测试是基于软件外部行为和需求的测试,不考虑软件的内部实现。
(建筑工程管理)软件工程导论期末思考题解答
(建筑工程管理)软件工程导论期末思考题解答《软件工程》期末思考题(计算机科学和技术专业)什么是软件?软件的特点有哪些?概念:软件是产品,由满足壹定要求的,具有可用性、可靠性的程序系统和和之相匹配的文档资料所组成。
特点:不可见(难以管理、控制开发过程)、不磨损、难维护(维护即修改原有设计)、复杂(复杂性随规模指数增加)、开发而成、手工定做、成本高。
什么是软件危机?软件危机的表现是什么?是指:软件开发、维护过程中遇到的壹系列严重问题。
如何开发软件,以满足对软件日益增长的需求。
如何维护数量不断膨胀的已有软件。
表现:估、满、靠、维、文、比、率。
开发成本、进度估计不准确。
用户对“已完成”的软件不满意。
质量不可靠。
不可维护。
没有适当文档资料。
软件成本于计算机系统总成本中所占的比例逐年上升。
软件开发生产率提高速度跟不上计算机普及速度。
软件危机产生的原因是什么?原因:软件自身特点:不可见(难以管理、控制开发过程)、难维护(维护即修改原有设计)、规模大(复杂性随规模指数增加)。
软件开发、维护方法不正确:忽视需求分析(定义时期)、轻视软件维护。
什么是软件工程?软件工程的基本内容有哪俩个方面?概念:采用工程的概念、原理、技术和方法来开发和维护软件,把正确的管理和最好的技术结合起来,以经济地开发出高质量的软件且有效地维护它。
俩方面:管理(开发、经济)、技术(方法、工具、过程)软件工程三个要素是什么?方法:开发技术方法。
工具:为运用方法提供的支撑环境。
过程:任务框架、工作步骤。
你知道的软件工程过程模型有哪些?瀑布模型原型模型螺旋模型迭代模型什么是软件生命周期?它有哪几个阶段?概念:软件从定义、开发、使用和维护,知道被废弃的过程。
阶段:定、性、需、概、详、变蛋、综、维问题定义可行性研究需求分析总体设计详细设计编码和单元测试综合测试软件维护可行性研究的任务是什么?了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究且论证本软件项目的可行性,编写可行性研究方案,制定初步项目开发计划。
软件工程课后题答案大全(详细)
软件工程习题解答第一章概述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.什么是软件危机?软件工程的目标是什么?软件危机指,随着计算机工业的发展,在软件开发过程中逐渐形成了一些矛盾。
比如:软件开发没有计划性;软件前期需求分析不足;软件开发过程没有规范等等。
这些矛盾表现在软件开发中导致了一系列问题,如开发计划无法顺利执行,成本昂贵,开发的软件错误百出等等。
正是这种软件危机才促使人们寻求解决方法,也就产生了软件工程。
软件工程的目标:软件工程是一门工程性学科,目的是成功地建造一个大型软件系统。
所谓成功,是要达到以下几个目标:1:付出较低的开发成本;2:达到要求的软件功能;3:取得较好的软件性能;4:开发的软件易于移植;5:需要较低的维护费用;6:能按时完成开发任务,及时完成开发任务,及时交付费用;7:开发的软件可靠性高2.什么是软件生存周期?它有哪几个活动?一个软件从开始计划起,到废弃不用止,称为软件生存周期。
一般来说,软件生存周包括计划、开发、运行三个时期,每一时期又可分为若干更小的阶段。
计划时期的主要任务是分析用户要求,分析新系统的主要目标以及开发该系统的可行性。
开发时期要完成设计和实现两大任务具体。
具体分为需求分析、概要设计、详细设计、编码、测试。
其中编码和测试是软件开发期的最后两个阶段。
运行时期是软件生存周期的最后一个时期,软件人员在这一时期的工作,主要是做好软件维护。
3.可行性研究的任务是什么?从技术、效益、社会因素等方面分析一个软件项目是否可以开发研究一下项目可不可行,技术上,时间上,人力上,成本上,能不能盈利4.什么是需求分析?什么是非功能需求?需求分析阶段的基本任务是什么?所谓"需求分析",是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。
可以说,“需求分析”就是确定要计算机“做什么”。
非功能需求描述了系统展现给用户的行为和执行的操作等,它包括产品必须遵从的标准、规范和约束,操作界面的具体细节和构造上的限制。
《软件工程》课堂讨论题目
《软件工程》课堂讨论题目1. 软件工程的定义是什么?软件工程是对软件开发过程的研究和应用,旨在通过系统化的方法来设计、开发和维护高质量的软件系统。
2. 软件工程的目标是什么?软件工程的目标是提高软件开发过程的效率和质量,以满足用户需求并实现预期的功能。
3. 软件工程的发展历程有哪些重要阶段?软件工程的发展历程可以分为以下几个重要阶段:- 编程阶段:早期的软件开发主要是由程序员直接编写代码,缺乏系统化的方法和过程。
- 结构化编程阶段:引入了结构化编程思想,提倡使用模块化和层次化的设计,以便更好地理解和维护代码。
- 软件工程阶段:出现了软件工程的概念,强调了系统化的开发方法、工程化的管理和质量保证。
- 敏捷开发阶段:在软件开发过程中注重快速迭代、灵活应变和与用户的高度互动。
4. 软件工程的重要性是什么?软件工程的重要性体现在以下几个方面:- 提高开发效率:软件工程方法可以帮助开发团队规划、组织和执行项目,提高开发效率。
- 提高软件质量:通过软件工程的方法和工具,可以提高软件的质量和可靠性,减少错误和缺陷。
- 管理复杂性:软件工程帮助开发团队管理和控制软件开发过程中的复杂性,确保项目的成功交付。
- 降低成本:软件工程可以帮助避免不必要的重复工作和资源浪费,从而降低开发和维护成本。
5. 软件生命周期是什么?软件生命周期是指将软件开发过程划分为不同的阶段,包括需求分析、设计、编码、测试、部署和维护等。
软件生命周期的目的是追踪和管理软件开发过程,并确保软件按时交付、满足用户需求。
6. 软件工程与计算机科学的区别是什么?软件工程是计算机科学的一个分支,两者有以下区别:- 范畴不同:计算机科学研究计算理论和算法,而软件工程则关注于应用这些理论和算法进行软件开发和项目管理。
- 目标不同:计算机科学追求对计算机系统和算法的理论完备性,而软件工程追求高效、高质量的软件开发和维护。
以上是关于《软件工程》课堂讨论题目的简要回答。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程思考题
第1章软件及软件工程介绍
1、简述什么是软件,什么是软件工程。
2、什么是软件危机?主要有哪些表现?
3、什么是软件工程?构成软件工程的要素是什么?
4、什么是软件生存周期?它有哪几个活动?
第2章软件需求获取与确认
1、需求分析阶段的基本任务是什么?需求分析的过程包括哪些?
2、什么是用例?用例图的主要内容有哪些?
3、简述UML 的USE CASE图的作用
第3章结构化分析建模
1、结构化分析方法是一种建模技术,请描述结构化分析模型的内容。
2、在对数据流图进行分解时需要注意哪些问题?
答:(1)父图、子图的平衡。
父图中某一转换的输入、输出数据流和分解这个转换的子图的输入、输出数据流必须完全一致。
(2)对加工处理建立唯一、层次性的编号。
(3)数据守恒。
随着加工的分解,数据流也被分解。
但数据流的分解必须是无损的,即数据守恒。
数据守恒加工的分解才是正确的。
判断数据守恒的方法:子图所有外部输入(输出)数据流的合成是其父加工的所有输入(输出)数据流。
(4)数据存储之间不应该有数据流。
第4章总体设计
1、什么是模块独立性?衡量模块独立性的两个标准是什么?各表示什么含义?
2、结构化程序设计的基本要点是什么?
答:(1)自顶向下:总体到细节;抽象到具体;全局到局部。
(2)逐步求精:对复杂问题,应设计一些子目标作过渡,逐步细化。
(3)模块化:把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。
(4)限制使用goto 语句
第5章详细设计与编码
1、程序语言选择时,一般应考虑哪些方面?
2、举例说明各种程序设计语言的特点及适用范围?
第6章软件测试
1、软件测试的目的是什么?软件测试中,应注意哪些原则?
2、什么是白盒测试法?什么是黑盒测试法?采用黑盒技术测试用例有哪几种方法?这些方法各有什么特点?
3、比较α测试与β测试,说明其异同。
第7章-第9章面向对象分析与设计
1、与传统开发方法相比,面向对象方法有什么优点?
2、简述OOA模型及OOA过程。
3、描述OOA与OOD之间的关系。
第12章软件维护
1、维护工作的种类有哪些?其中哪一类维护是最主要的?
2、软件维护的副作用有哪些?
3、什么是软件可维护性?可维护性度量的特性是什么?
第13章软件项目管理
程序复杂性的度量方法有哪些?
第14章软件工程标准及软件文档
1、请说明软件文档的作用?软件开发项目生存期各阶段包含哪些文档?
第15章软件过程与软件过程改进
1、试论述CMM的主要作用
答:CMM基本用途:(1)软件过程评估;(2)软件过程改进;(3)软件能力评价
2、企业实施CMM的意义有哪些?
答:(1)规范软件开发过程及管理;(2)规范市场竞争;(3)帮助企业进行内部软件过程改进;(4)增加企业的国际竞争能力(5)可以降低软件开发风险。