2019软件工程简答题集锦
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程简答题集锦
1、为什么事务型软件的结构常常具有中间大两头小的形状?
答:扇入高则上级模块多,能够增加模块的利用率;扇入低则表示下级模块的复杂性。
事务型软件常常具有中间大两头小的形状,具有良好的软件设计结构,瓮型结构。表明它在底层模式中使用了较多高扇入共享模块。
2、什么是软件需求,可以从哪些方面描述软件需求?
答:软件需求是指一个软件系统必须遵循的条件或具备的能力。
条件与能力:①系统为了解决问题或达到目的所具备的条件或能力,即系统的外部特性;②系统为了满足合同,规范或其他规定文档所具备的条件或能力,即系统的内部特性。
软件需求一般包括三个不同的层次:业务需求,用户需求,功能需求
软件需求的特性:①功能性②可用性③可靠性④性能⑤可支持性⑥设计约束
3、面向对象设计模型包含哪几个层次?主要内容?
答:面向对象设计模型包含:
①系统架构层。描述整个系统的总体架构,使所设计的软件能够满足客户定义的需求,并实现支持客户需求的技术基础设施;
②类和对象层。使系统能从通用的方式创建并不断逼近特殊需求,该层同时包含了每个对象的设计表示。
③消息层。描述对象间的消息模型,它建立了系统的内部和外部接口,包含使得每个对象能够和其协作者通信的细节。
④责任层。包含针对每个对象的所有属性和操作的数据结构和算法的设计。
4、多模块程序的测试有哪些层次?各层次主要解决什么问题?
答:多模块测试有4个层次
①单元测试:通过对象模块的静态分析和动态测试,使其代码达到模块说明的要求;
②集成测试:把经过单元测试的模块逐步组成具有良好一致性的完整程序;
③确认测试:确认组装完毕的程序是否满足软件需求规格说明书的要求;
④系统测试:检查把确认测试合格的软件安装到系统之后,能否与系统中其余部分协调运行,并实现SRS的需求。
5、瀑布开发模式有哪些特点?存在的主要问题?如何改进?
答:瀑布开发模型是一种基于软件生存周期的线性开发模型
主要特点:①阶段间的顺序和依赖性;
②推迟实现的观点;
③保证质量的观点
每个阶段都必须完成规定的文档,每个阶段都要对完成的文档进行复审,以便尽快发现问题,消除隐患。
存在的问题:按照瀑布模型来开发软件,只有当分析员能够做出准确的需求分析时,才能得到预期的结果,不幸的是,由于多数用户不熟悉计算机,系统分析员对用户的专业也往往了解不深,因此很难在开发的初始阶段彻底弄清楚软件的需求。为了解决这个问题,人们提出了“快速原型模型”
阶段:用户需求、需求分析、概要设计、详细设计、编码、测试、运行维护
不足:缺乏灵活性,无法解决需求不明确或不准确的问题。由于用户不可能一次性提出所有的需求,而瀑布模型是一种线性开发模型,因此瀑布模型不能适应用户在开发后期提出的需求变更。
6、什么是软件危机?软件危机有什么表现?软件危机产生的原因?如何解决软件危机?
软件危机是计算机软件开发、使用和维护过程所遇到的一系列严重问题和难题,它包含两个部分:如何开发软件,以解决软件日益增长的需求;如何维护数量不断膨胀的已有软件。软件危机的表现:
①对软件的开发成本和进度的估算很不准确,常常出现实际成本比估算成本高出一个数量级,实际进度比计划进度拖延几个月甚至几年的时间,这些都降低了开发商的信誉,引起用户的不满。
②用户对已完成的软件不满意的情况时有发生;
③软件产品的质量往往是不可靠的;
④软件常常是不可维护的;
⑤软件通常没有适当的文档资料,文档资料不全或不准确,使得软件开发和维护产生难以想象的问题和难以解决的难题;
⑥软件开发和维护产生的费用占计算机系统总成本的比例逐年上升;
⑦开发软件的生产率往往跟不上计算机应用的普及速度。
软件危机的原因:
①软件自身的原因:是逻辑部件,缺乏可见性。规模庞大、复杂,修改、维护苦难;
②软件开发和维护的方法不当,忽视需求分析,认为软件开发就是程序编写,轻视软件维护;
③供求矛盾将是永恒的主题,面对日益增长的软件需求,人们显得力不从心。
7、什么是软件工程?
软件工程是运用工程、科学和数学的原理和方法研制的、维护计算机软件和有关技术及管理方法。
把系统的、规范的、可度量的途径应用到软件开发、运行和维护的过程,也就是把工程应用于软件。
软件工程包括技术和管理两方面的内容,是技术和管理紧密结合形成的工程学科。
中心思想:是把软件当作一种工程化的方法和原理对软件进行计划、开发和维护
个性化方法结构化方法面向对象方法软件复用
过程式编程范型、面向对象编程范型、基于构件技术的编程范型
8、什么是软件生存周期?
软件生存周期是指一个软件从立项起,到废弃不用止,统称为软件的生存周期。
软件生存周期分为计划、开发和运行三个阶段
由于软件生存周期被划分为多个较小的阶段,使得因为软件规模增长而大大增加的复杂性变得较易控制和管理。
典型的软件生存周期:计划、需求分析、软件分析、软件设计、编码、软件测试、运行维护
9、软件测试方法:
软件测试方法分为静态测试和动态测试,静态测试是被测试程序不在机器上执行而采用人工检测和计算机辅助静态分析手段对程序进行检测。动态测试是通过运行程序发现错误,对软
件产品进行动态测试时可以采用黑盒测试和白盒测试法。黑盒测试法在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。白盒测试法在不考虑软件的功能特性情况下进行测试。
软件测试目的:为了寻找软件错误而运行程序的过程,目的是为了发现程序中的错误。任务是在计算机上运行程序,暴露出程序中潜在的错误。
10、衡量模块独立性的两个定性指标是什么?这两个标准的定义分别是什么?在我们的软件设计中,关于模块独立性我们追求的目标是什么?
内聚和耦合。耦合是指不同模块之间相互依赖的紧密程度,内聚标志同一模块不同元素之间互相依存的紧密程度。高内聚低耦合。
11、软件设计各层次功能?
系统架构层:描述整个系统的整体架构。使所设计的软件满足客户定义的需求,并实现支持用户需求的技术基础设施。
类和对象层:使系统能从通用的方式创建并不断逼近特殊需求,同时包含了各对象的设计表示
消息层:表示对象间的消息模型。建立了系统的内部和外部接口,使得每个对象可以与其协作者通信。
责任层:包含针对每个对象的属性和操作的数据结构和算法的设计。