考研真题复现:
A以精炼语言简要回答问题(共 50 分)特别要求:每小题的回答不超过 150 汉字!
1、如何针对需求模型中的每个用例设计其实现方案?
2、当用户参与需求评审时,用户往往难于理解需求规格说明中与软件技术相关的内容。你有什么办法帮助用户理解需求规格说明?
3、在需求分析模型中,边界类、控制类、辅助类、实体类的职责分别是什么?
B以精炼语言简要回答问题(共 50 分)特别要求:每小题的回答不超过 150 汉字!
1、软件需求分析模型的质量要素主要有哪些?
2、在面向对象的软件设计过程中,如何确定类之间的继承关系?
3、软件设计规约的主要内容有哪些?
4、在需求分析模型中,边界类、控制类、辅助类、实体类的职责分别是什么?
C以精炼语言简要回答问题(共 50 分)特别要求:每小题的回答不超过 150 汉字!
1、(10 分)如何评审软件需求分析模型?
2、(10分)按照你的经验和理解,哪些软件质量因素会对目标软件的可维护性造成较大影响?
3、(15 分)如何针对需求模型中的每个用例设计其实现方案?
4、(15分)在面向对象的软件设计过程中,如何由顺序图推导出类图中的部分操作?
D
1.说明下工程和科学的区别
2.什么是集成测试,什么是单元测试,单元测试用例和集成测试用例有什么区别
3.功能性需求和非功能性需求
4.写出四个体系结构视角
5.质量模型的可用性
E
一、(10 分)软件工程方法学包含哪 3 个要素?请简要说明,
二、(10分)结构化需求分析方法需要在哪三个方面进行分析建模?
三、(10分)软件项目计划的基础是估算。为了制定合理的计划,都应该进行哪些估算,使用哪些估算方法?
F
一、(10分)简述软件生命周期的各阶段划分和基本任务。
二、(10分)简述对软件需求一般从哪四个方面进行验证?
G
1,统一过程中有哪四个阶段,各阶段需要完成的主要工作有哪些?
2.面向对象如何实现模块独立性,其体现耦合和内聚的含义是什么?
3,某公司拟开发一个地铁自动收费信息管理系统,你认为需要从哪几个方面进行可行性分析?
4,某大学的校园卡系统有一天突然崩溃,系统的维护人员紧急集合起来处理该问题,维护人员通过测试分析后发现网络、硬件设备等工作正常,如果你是该系统的维护人员,你认
5.假设你是某个软件公司的系统分析师,公司近年来为多个中小学开发了教务管理系统请简要说明在开发该类软件时,如何与用户进行有效沟通以获取用户的真实需求?
为导致系统崩溃的可能原因是什么,以及应该采取什么样的合理措施?
H
1.成本效益分析法是确定客户是否应当进行业务计算机化的基本技术。如果某高校确定使用软件系统来管理学生的实习过程,需要采用一定的方式来估算软件规模。你认为可以采用什么方法来估算软件规模?
2.你认为应该如何测试一个共享单车系统的实用性、可靠性和健壮性?
3.需求分析的正确性和准确性是决定软件项目成败的关键因素,如果你是某个软件公司的需求分析师,你认为应该如何进行需求评审?
4.如果要开发一个移动通信公司的计费系统,你认为需要从哪几个方面进行可行性分析?
5.假设你是某个软件公司的系统分析师,公司近年来已经为中小学开发了多款家校通手机APP软件,请简要说明该类软件面向对象分析流的基本过程。
I
1.为什么说喷泉模型较好地体现了面向对象软件开发过程无缝和迭代的特性?
2.在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目,标系统的可行性?
3.为什么要进行需求分析?通常对软件系统有哪些需求?
4.简述建立对象模型的过程。
5,什么是软件可靠性?什么是软件的可用性?两者的主要区别是什么?.
6.软件的可维护性与哪些因素有关?在软件开发过程中应该采取哪些措施来提高软件产品的可维护性?
J
1,什么是软件工程?怎样用软件工程消除软件危机?
2.系统流程图与数据流程图有什么区别?
3,为什么说面向对象方法学比传统方法学在可重用性方面要好?
4.为什么软件需要维护?简述软件维护的过程。
5.什么是单元测试和集成测试?他们各有什么特点?
6,你认为一个好的软件开发人员应具备哪些基本素质?
K
1.什么是计算机软件?软件的特点是什么?
2.什么是软件过程模型?都有哪些典型的软件过程模型?
3.简述软件工程的基本原则。
4,简述什么是软件生命周期,根据国家标准《计算机软件开发规范》,软件生命周期主要包括哪几个阶段?
5.软件测试的目的和原则是什么?
6.简述软件维护工作过程。为什么说软件维护过程是一个简化的软件开发过程?
L
1,简述文档在软件工程中的作用。
2.简述瀑布模型的优缺点。
3.什么是 α 测试和β 测试?
4.软件生命期各阶段的任务是什么?
5,什么是抽象类?在建模时有时使用抽象类有什么好处?
6.为什么要进行软件项目管理?
M
1.什么是软件工程?简述软件工程的基本原理及软件工程的目标。
2,什么是软件配置管理?主要任务是什么?
3,动态测试的四个阶段分别是什么?请简述各阶段的主要工作?
4.需求分析有哪些特点?
5,有哪些主要的软件开发方法?
6,根据瀑布模型为下列任务排序:验收测试、项目计划、单元测试、需求复审、成本估计、总体设计、设计复审、市场调研、详细设计、系统测试、实现、编制需求规格说明书。
N
1.简述文档在软件工程中的作用。
2.简述瀑布模型的优缺点。
3.什么是a 测试和β 测试?
4.软件生命期各阶段的任务是什么?
5.什么是抽象类?在建模时有时使用抽象类有什么好处?
6.为什么要进行软件项目管理?
O
1.什么是软件工程?简述软件工程的基本原理及软件工程的目标。
2.有哪些主要的软件开发方法?
3.为什么面向对象的方法能够有效地解决软件需求中存在的问题?
4.软件重用的效益是什么?
5,影响软件代码效率的因素有哪些?
6.软件测试通常包含哪几个基本步骤?
P
1.简述瀑布模型的优缺点。
2.为什么软件需要维护?简述软件维护的过程。
3,简述软件生命周期各阶段的基本任务。
4,简述软件开发中文档的重要性。
5.什么是结构化程序设计?简述结构化程序设计的基本要点。
6.软件开发环境应具有高度的通用性,在此,通用性包括哪些方面?
Q
1.一个软件能既正确又不可靠吗?解释自己的答案。
2.什么是软件过程?它与软件工程方法学有何关系?
3.软件测试的基本准则是什么?
4.简述继承重用与多态重用,它们有何关系?
5.为什么传统方法开发的复杂软件难以维护?为什么面向对象(00)方法所开发的软件可维护性好?试说明原因。
6.CMM 的基本思想是什么?为什么要把能力成熟度划分成 5个等级?
R
1、什么是软件工程?它的目标是什么?
2、简述瀑布模型的优缺点?
3、软件危机的表现是什么?
4、软件黑盒测试与白盒测试的区别有哪些?
5、软件设计阶段的任务有哪些?
S
1、软件生命周期分为哪三个时期?每一时期所完成的基本任务是什么?
2、给出2种常用的软件开发模型,并说明它们有何特点?
3、阐述面向对象的特征,并做简要的解释。
4、软件测试的基本任务是什么?测试与调试的区别是什么?
5、为什么要进行软件维护?
T
1.简述瀑布模型的特点?
2.可行性研究的步骤是怎样的?
3.详细设计所使用的工具有哪些?
4.需求分析的任务是什么?
5.程序设计方法主要有哪几种?
6.传统软件方法学存在的问题有哪些?
U
1.分析软件危机产生的主要原因有哪些?
2.说明结构化程序设计的主要思想是什么?
3.软件测试包括哪些步骤?说明这些步骤的测试对象是什么?
4.需求分析与软件设计二个阶段任务的主要区别是什么?
5.软件过程成熟度模型分为哪五级?
V
1、什么是模块的作用范围?什么是模块的控制范围?他们之间应该建立什么关系?
2、采用黑盒技术设计测试用例有哪几种方法?这些方法各有什么特点?
3、调试的目的是什么?调试有哪些技术手段?
4、Rumbaugh等人提出的对象模型技术,包括哪三种模型?
5、CMM(软件过程成熟度模型)将软件机构的软件过程成熟度分为哪几级?给出他们的名称。
W
1、在软件开发过程中,为了达到软件开发目标,必须遵循哪些原则?
2、简述软件生命翔各阶段的任务?
3、试述软件测试过程。
4、当前主流的软件开发技术(编程语言和数据库)包括哪些?各有什么特点?
5、什么是典型的软件三层结构?软件设计分层有什么好处?
X
1、(7分)什么是模块的内聚,举出3种内聚类型并就其内聚程度进行排序。
2、(6分)简述软件测试和调试的区别。
3、(6分)总体设计应考虑哪些问题?
4、(6分)为什么要进行软件维护?
Y
1、(7分)软件工程的基本原则有哪些?
2、(6分)可行性研究的任务有哪些?
3、(5分)模块的耦合包括哪些类型?
4、(5分)影响软件可维护性的因素有哪些?
5、(6分)简述三种面向对象模型的主要功能。
6、(5分)简述结构化程序设计的要点。
7、(6分)简述软件工程方法学的三要素。
Z
1.什么是软件过程?它与软件工程方法学有何关系?
2.可行性研究的目的和任务是什么?
3.软件需求规格说明书由哪些部分组成?
4,总体设计过程包括的主要内容?
5.什么是白盒测试?白盒测试从覆盖源程序语句的详尽程度分析有哪些覆盖标准?
【皮皮灰】软件工程简答题100问
一、需求相关问题(约 18 问)
需求模型用例实现方案设计:分析用例场景,确定参与对象和交互过程,细化步骤,考虑异常处理,选择合适的算法和数据结构来实现。
帮助用户理解需求规格说明(含技术内容):采用用户熟悉的语言和示例,避免过多技术术语;提供直观的图表,如流程图、界面原型;进行现场演示和讲解。
需求分析模型中各类职责
边界类:负责系统与外部的交互,如用户界面、接口等。
控制类:协调和控制其他类之间的交互,处理业务逻辑。
辅助类:提供辅助性功能,如工具类、日志记录类。
实体类:用于存储和管理系统中的业务实体数据。
软件需求分析模型质量要素:完整性、准确性、一致性、可行性、可验证性等。
需求分析模型评审:检查模型是否满足用户需求、是否完整准确、是否符合标准规范、是否可行等;可以通过专家评审、用户参与评审等方式进行。
软件需求验证方面:正确性、完整性、一致性、可行性。
获取用户真实需求(沟通方式):访谈用户,组织需求研讨会,观察用户工作场景,制作原型让用户反馈,建立反馈渠道及时沟通。
二、软件设计相关问题(约 12 问)
面向对象设计确定类继承关系:分析类之间的 “is - a” 关系,从通用到特殊进行梳理,根据业务规则和功能相似性来确定。
软件设计规约内容:包括软件的架构设计、模块设计、接口设计、数据结构设计、算法设计等方面的详细描述。
由顺序图推导类图操作:分析顺序图中的消息传递,确定发送和接收消息的对象,将消息转换为类的操作,考虑操作的参数和返回值。
实现模块独立性(面向对象)及耦合内聚含义:通过封装、继承和多态实现模块独立性。耦合是指模块之间的依赖程度,内聚是指模块内部功能的紧密程度。低耦合高内聚是理想状态。
软件体系结构视角(四个):逻辑视角、物理视角、开发视角、运行视角。
质量模型可用性:包括易学习性、易操作性、易用性、用户满意度等方面。
结构化程序设计要点:自顶向下逐步求精,限制使用 goto 语句,采用顺序、选择、循环三种基本结构。
总体设计考虑问题:系统架构、模块划分、模块接口、数据存储设计、系统性能等。
三、测试相关问题(约 10 问)
单元测试和集成测试及用例区别
单元测试:针对软件中的最小单元(如函数、类)进行测试,关注单元内部逻辑。
集成测试:测试多个单元组合后的功能,关注单元之间的接口和交互。
单元测试用例:侧重于单元的输入输出和内部逻辑路径。
集成测试用例:侧重于接口参数传递、消息交互等。
软件测试基本步骤:单元测试、集成测试、系统测试、验收测试。
测试用例设计(黑盒技术)方法及特点
等价类划分:将输入域划分为等价类,从每个类中选取代表值,特点是高效减少测试用例数量。
边界值分析:关注输入输出边界值,特点是容易发现边界错误。
决策表法:用于处理多个条件组合的情况,特点是能全面覆盖条件组合。
测试与调试区别:测试是发现软件中的错误,调试是定位和修复错误。
软件黑盒测试与白盒测试区别
黑盒测试:不考虑内部结构,关注输入输出,验证功能是否符合需求。
白盒测试:基于代码内部逻辑,检查程序的语句、分支、路径等覆盖情况。
软件可靠性和可用性及区别
软件可靠性:在规定条件和时间内,软件不发生故障的概率。
软件可用性:软件在特定环境下能够被用户使用的程度。
区别:可靠性侧重于故障概率,可用性侧重于用户使用的方便程度。
动态测试四个阶段及工作
单元测试阶段:测试单元功能,检查代码逻辑。
集成测试阶段:测试单元之间的接口和集成后的功能。
系统测试阶段:对整个系统进行功能、性能等测试。
验收测试阶段:由用户或代表用户的人员进行测试,确认软件是否满足需求。
测试共享单车系统(实用性、可靠性、健壮性)
实用性:测试用户是否能方便地使用功能,如开锁、计费准确等。
可靠性:在规定条件下,系统长时间正常运行的能力,如服务器稳定性。
健壮性:测试系统对异常情况的处理能力,如网络波动、恶劣天气等情况。
四、软件工程基础相关问题(约 20 问)
软件工程定义及消除软件危机方式:软件工程是将系统的、规范的、可量化的方法应用于软件的开发、运行和维护。通过采用工程化的方法,如合理的软件过程模型、有效的项目管理等来消除软件危机。
软件工程方法学三要素:方法、工具和过程。方法是完成软件开发的技术方法;工具是支持软件开发的工具软件;过程是软件开发的工作流程。
软件生命周期阶段划分及任务
可行性研究阶段:确定项目是否可行,从技术、经济、社会等方面进行分析。
需求分析阶段:明确用户需求,建立需求模型。
设计阶段:包括总体设计和详细设计,确定软件架构和模块细节。
编码阶段:将设计转换为代码。
测试阶段:检查软件是否符合需求,发现并修复错误。
维护阶段:对软件进行修改和完善,以适应新的需求和环境。
软件过程模型及典型模型
定义:软件过程模型是软件开发全部过程、活动和任务的结构框架。
典型模型:瀑布模型(顺序性强)、喷泉模型(面向对象、迭代无缝)、敏捷模型(快速响应变化)等。
软件工程基本原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
软件危机表现:成本超支、进度拖延、质量不达标、软件维护困难等。
软件与计算机软件定义及特点
定义:计算机软件是计算机系统中的程序及其文档。
特点:抽象性、复杂性、易变性、维护成本高、不可见性等。
软件过程与软件工程方法学关系:软件过程是软件项目开发的一系列活动流程,软件工程方法学是指导软件过程的理论、方法和工具集合。
软件配置管理及任务:对软件项目中的配置项进行标识、版本控制、变更控制等,确保软件产品的完整性和一致性。
文档在软件工程中的作用:记录软件需求、设计思路、开发过程、测试结果等,方便开发人员沟通、维护软件和用户使用。
软件开发方法主要类型:结构化方法、面向对象方法、原型化方法等。
软件重用效益:提高开发效率、降低成本、提高软件质量等。
影响软件代码效率因素:算法复杂度、数据结构选择、编程语言特性、编译器优化等。
软件开发环境通用性方面:支持多种编程语言、多种开发方法、多种硬件平台、多种操作系统等。
CMM(软件过程成熟度模型)基本思想及等级划分原因
基本思想:用于评估和改进软件组织的软件过程能力。
划分原因:便于软件组织对照评估,逐步提升软件过程能力。
软件三层结构及分层好处:通常包括表示层、业务逻辑层、数据访问层。分层有利于分工开发、维护和扩展系统,提高软件的可维护性和可扩展性。
模块内聚类型及排序(内聚程度):功能内聚(最强)> 顺序内聚 > 通信内聚。
模块耦合类型:内容耦合(最差)、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合(最好)。
面向对象模型(三种)主要功能
对象模型:描述系统中的对象及其关系,是面向对象分析的核心。
动态模型:描述系统的动态行为,如对象的状态变化和交互过程。
功能模型:描述系统的功能,从用户角度出发说明系统的功能需求。
可行性研究目的和任务:目的是判断项目是否值得开发,任务包括技术可行性、经济可行性、社会可行性等方面的研究。
五、系统相关问题(约 10 问)
系统流程图与数据流程图区别:系统流程图主要描述系统物理过程和处理步骤;数据流程图主要关注数据在系统中的流动和处理,不涉及物理实现细节。
系统可行性分析方面(地铁自动收费、移动通信计费等)
技术可行性:现有技术是否能支持系统开发,如软件技术、硬件设备等。
经济可行性:开发成本和收益是否合理,包括投资成本、运营成本和预期收益。
社会可行性:系统是否符合社会道德、法律、政策等要求,是否被用户接受。
系统崩溃原因分析及措施(校园卡系统为例):可能是软件本身的漏洞、数据错误、并发访问量过大等原因。措施包括备份数据、回滚操作、修复软件漏洞、优化系统性能等。
当前主流软件开发技术(编程语言和数据库)及特点
编程语言:Python(简洁灵活、应用广泛)、Java(跨平台、面向对象)等。
数据库:MySQL(开源、易用)、Oracle(性能强、功能全)等。
六、特殊测试相关问题(约 3 问)
α 测试和 β 测试定义
α 测试:在开发环境下,由用户在开发者的指导下进行测试,主要用于发现软件早期的错误。
β 测试:在用户实际环境下,由多个用户对软件进行测试,主要用于发现软件在实际使用中的问题。
抽象类定义及建模好处:抽象类是不能实例化的类,通常包含抽象方法。建模时使用抽象类可以更好地体现类之间的层次关系,实现代码的复用和扩展。
七、项目管理相关问题(约 7 问)
软件项目管理的原因:有效控制项目进度、成本和质量,合理分配资源,协调团队成员,降低项目风险,确保软件项目能够按时、按预算、高质量地完成。
软件项目计划估算内容和方法
估算内容:包括规模估算、工作量估算、成本估算、进度估算等。
估算方法:代码行估算、功能点估算用于规模估算;类比估算、参数估算用于工作量和成本估算;甘特图、PERT 图用于进度估算。
软件维护过程与软件开发过程关系:软件维护过程类似于一个简化的软件开发过程,包括理解现有系统、修改软件、测试修改后的软件、重新交付软件等步骤。
影响软件可维护性的因素:软件的可读性、可理解性、模块独立性、文档质量、测试用例的完备性等。
提高软件可维护性的措施:采用良好的编程风格,提高模块独立性,完善文档,进行充分的测试,建立有效的维护管理机制。
软件生命周期各阶段任务(从项目管理角度)
需求阶段:收集、分析和定义需求,建立需求基线。
设计阶段:制定软件架构和详细设计方案,进行设计评审。
开发阶段:按照设计进行编码和单元测试。
测试阶段:执行各种测试活动,确保软件质量。
维护阶段:处理用户反馈,修改和更新软件。
软件过程成熟度模型(CMM)等级:初始级、可重复级、已定义级、已管理级、优化级,每个等级代表了软件组织在软件过程能力上的不同成熟程度。
八、程序设计相关问题(约 4 问)
程序设计方法类型:结构化程序设计(基于过程)、面向对象程序设计、面向过程与面向事件驱动程序设计等。
传统软件方法学问题:软件可维护性差、软件复用性低、对需求变更适应性弱、开发过程中模块之间的耦合度高。
结构化程序设计主要思想:按照功能逐步分解问题,采用顺序、选择和循环三种基本结构构建程序,使得程序的逻辑清晰,易于理解和维护。
面向对象方法学在可重用性方面的优势:通过类的封装、继承和多态,能够方便地实现代码复用。可以创建通用的基类,派生出具有特定功能的子类,子类可以继承基类的属性和方法,并且可以通过多态性实现不同的行为。
九、软件规格说明书相关问题(约 3 问)
软件需求规格说明书组成部分:引言(目的、范围等)、总体描述(产品描述、用户特点等)、具体需求(功能需求、非功能需求等)、附录(术语表、参考资料等)。
软件设计规格说明书内容重点:系统架构、模块设计(包括接口、数据结构等)、算法设计、运行设计(如系统启动、运行控制等)、出错处理设计等。
软件测试规格说明书要点:测试目的、测试范围、测试策略(如采用的测试方法)、测试用例设计、测试环境配置、测试进度安排等。
十、其他杂项问题(约 3 问)
工程和科学的区别:科学主要是探索自然规律、追求真理,侧重于发现新知识、理论研究。工程则是应用科学知识和技术手段,来设计、开发和实现产品或系统,更注重实践和解决实际问题。
软件中的功能性需求和非功能性需求
功能性需求:软件必须实现的功能,如用户登录、数据查询、业务处理等功能相关的需求。
非功能性需求:包括性能(响应时间、吞吐量等)、可靠性、可用性、安全性、可维护性等软件质量相关的需求。
继承重用与多态重用及关系
继承重用:子类继承父类的属性和方法,实现代码的复用。
多态重用:通过同一操作作用于不同对象产生不同的行为,增强程序的灵活性和可扩展性。
关系:继承是多态的基础,多态是继承基础上的进一步扩展,它们共同提高了面向对象软件的复用性。