目录
第一章 软件工程基础
一、填空题
二、简答题
第二章 可行性分析及研发策划
一、填空题
二、简答题
第三章 软件需求分析
一、填空题
二、简答题
第四章 软件设计
一、填空题
二、简答题
1、软件是计算机系统中的程序(指令)、数据及其文档(+服务)的总称。
2、软件的类型按功能可以分为系统软件、支撑软件、应用软件3种类型。
3、国家标准GB/T 11457-1995《软件工程术语》对软件工程的的定义是软件开发、运行、维护和引退的系统方法。
4、软件工程是指导计算机软件开发和维护的工程学科。
5、软件工程采用工程的概念、原理、技术和方法来开发与维护软件。
6、软件工程的目标是实现软件研发与维护的优质、高效和自动化。
7、软件工程学的主要内容是软件开发技术和软件工程管理。
8、软件的特征有智能性、抽象性、人工方式、复杂性和系统性、泛域性、智能复制性、非损及更新性。
9、软件危机的主要原因是软件本身特点及开发方法。
10、20世纪60年代提出了软件工程的概念。
11、软件生存周期是从开始研发软件到软件停止使用的整个过程。软件生存周期划分阶段的目的主要是便于确立系统开发计划,明确各类开发人员的分工与职责范围,以便选用不同的开发方法、技术模型,加强管理、分工协作、保证质量、提高效率。软件生存周期划分阶段的原则主要包括(1)各阶段的任务相对独立。便于分阶段计划、逐步完成。(2)同一阶段的工作任务性质尽量相同。有利于软件开发和组织管理,明确开发人员的分工与职责,以便协同工作、保证质量。
12、软件的开发方法多种多样,结构化方法和面向对象的方法是常用的最基本的开发方法。
1、什么是软件?软件和程序的区别是什么?
答:软件是计算机及手机等终端设备运行的指令、数据和资料与服务的集合,包括指令程序、数据、相关文档和完善的售后服务的完整集合。程序是软件的一部分。
2、什么是软件危机?软件危机的主要表现是什么?怎样消除软件危机?
答:软件危机是指20世纪60年代在计算机软件的研发、运行、维护和管理过程中,出现一系列严重问题的现象。
主要表现在7个方面:
(1)软件运行经常出现功能、性能不满意或出现故障等现象。
(2)软件产品的质量、可靠性和安全等方面时常达不到标准。软件产品质量难以保证,甚至在开发过程中就被迫中断。
(3)软件开发管理差,对成本和进度难估计准确。
(4)系统市场出现无法维护、升级或更新现象。
(5)开发效率低,无法满足应用迅速发展与提高实际需要。
(6)研发成本难控制,在总成本中所占的比例不断大幅上升。
(7)软件开发没有标准、完整、统一规范的文档资料。
解决软件危机的主要措施有3个方面:
(1)技术方法。运用软件工程的技术、方法和标准规范。
(2)开发工具。选用先进高效的软件工具,同时采取切实可行的实施策略。
(3)组织管理。研发机构需要组织高效、管理制度和标准严格规范、职责明确、质量保证、团结互助、齐心协力,注重文档及服务。
3、什么是软件工程?软件工程与软件工程方法学有何关系?
答:软件工程是软件开发、运行、维护和引退的系统方法。软件工程是软件工程方法学的三个重要组成部分之一。
4、软件工程学的主要内容是什么?
答:软件工程学的主要内容包括软件开发技术和软件工程管理两个方面。
5、比较各种软件开发模型(模式)的特点。
软件开发模型 | 特点 | 缺点 | 适用类型 |
瀑布模型 | (1)开发过程的顺序性 (2)严格要求保证质量 (3)统筹兼顾,不早编程 |
将充满回溯且相互折叠的软件开发过程硬性地分为多个阶段,随着开发软件规模的增加,造成的危害大增。 | 适用于软件需求明确,开发技术成熟,工程管理较严格的场合下使用。 |
快速原型模型 | (1)确定需求上优于瀑布模型(通过原型与用户交互) (2)提供学习手段,通过开发原型和演示原型对开发者和使用者了解系统都有积极作用 (3)有的软件原型可以成为最终产品的一部分 |
(1)适用需求不明确 (2)快速建立的系统结构加连续修改可能导致产品质量低下,原型系统的内部结构可能不好 |
适合于可以先尽快构建成一个原型的应用系统 |
增量模型 | 灵活性很强,可使其适应变化的能力优于瀑布模型和快速原型模型 | (1)需要软件具备开放式的体系结构。 (2)软件过程的控制易失去整体性。容易退化为边做边改模型。 |
适用于软件需求不明确、设计方案有一定风险的软件项目 |
螺旋模型 | (1)将瀑布模型和快速原型模型结合,强调了其他模型所忽视的风险分析 (2)大型软件开发项目有较好的风险控制 |
(1)需要风险评估的经验 (2)契约开发通常需要事先制定过程模型和发布产品 (3)普及不如瀑布模型、快速原型模型、增量模型 |
适合于大型复杂系统 |
喷泉模型 | (1)克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。可使开发过程具有迭代性和无间隙性。 (2)无缝,可同步开发,提高开发效率,节省开发时间,适应面向对象软件。 |
可能随时加各种信息、需求与资料,需严格管理文档,审核的难度加大 | 主要适合于利用面向对象技术的软件开发项目 |
1、软件可行性分析的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。
2、可行性分析的目的不是去开发一个软件项目,而是研究这个软件项目是否值得去开发、其中的问题能否解决。
3、可行性分析实质上是要进行一次简化、压缩了的需求分析和设计过程,要在较高层次上以较抽象的方式进行需求分析和设计过程。
4、可行性分析需要从技术可行性、经济可行性、社会可行性3个方面分析研究每种解决方法的可行性。
5、技术可行性是对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。
6、经济可行性一般要考虑的情况包括开发的风险、资源的有限性和技术。
7、技术可行性的研究包括成本-效益分析、公司经营长期策略、开发所需的成本和资源和潜在的市场前景。
8、社会可行性所涉及的范围包括合同、责任、侵权、用户组织的管理模式、规范及技术人员常常不了解的陷阱等。
9、典型的可行性风险有下列步骤:确定项目规模和目标、研究正在运行的系统、建立新系统的高层逻辑模型、导出和评价各种方案、推荐可行的方案和编写可行性分析报告。
10、一个可行性分析报告的主要内容如下:引言、可行性分析的前提、对现有系统的分析、所建议系统的技术可行性分析、系统的经济可行性分析、社会因素可行性分析、其他可供选择方案、结论意见。
11、成本-效益分析首先是估算将要开发的系统的开发成本,然后与可能取得的效益进行比较和权衡。
12、效益分析分为有形效益和无形效益两种。有形效益可以用货币的时间价值、投资回收期、纯收入等指标进行度量;无形效益主要从性质上、心理上进行衡量,很难直接进行量的比较。
13、投资回收期就是使累计的经济效益等于最初的投资费用所需要的时间。项目的纯收入是指在整个生存周期之内的累计经济效益(折合成现在值)与投资之差。
14、项目开发计划的主要内容包括项目概述、实施计划、人员组织及分工和交付期限。
15、纯收入是软件生存周期内两项值之差,这两项是经济效益与投资。
16、软件工程有两种效益,它们是无形效益和有形效益。
17、可行性分析具体步骤的最后一步是编写可行性报告。
18、系统的经济效益等于因使用新的系统而增加的收入加上使用新的系统可以节省的运行费用。
19、成本-效益分析的目的是从经济角度评价开发一个新的软件项目是否可行。
20、可行性分析中描述系统最高物理模型的工具是系统流程图。
21、可行性分析的第一个具体步骤是确定项目的规模和目标。
22、研究开发资源的有效性是进行技术可行性分析的一方面。
23、在软件的可行性分析中,可以从不同的角度对软件进行研究,其中是从软件的功能可行性角度考虑的是技术可行性。
24、在遵循软件工程原则开发软件过程中,计划阶段应该依次完成系统定义、软件计划、需求分析。
25、技术可行性要解决技术风险问题。
26、在软件工程项目中,不随研发人数的增加而使软件的生产率增加的主要因素是参与人员之间的通信困难 。
27、指定软件计划的目的在于尽早对拟开发的软件进行科学合理评估,软件计划的任务是管理与调度。
28、研究软硬件资源的有效性是进行技术可行性研究的一方面。
29、可行性分析要进行的需求分析和设计应是简化、压缩的。
30、系统流程图用于可行性分析中的当前运行系统的描述。
31、系统流程图是描述物理系统的工具。
1、为什么要进行可行性分析?应该从哪些方面研究目标系统的可行性?
答:可行性分析的目的是围绕影响软件项目研发的各种因素的可行性进行全面、系统的分析论证。主要是以尽可能小的成本在较短时间和特定条件下确定软件项目是否值得研发,是否可行。
2、可行性分析的任务有哪些?
可行性分析主要任务主要是:决定软件项目“做还是不做(是否可行)”、及完成对可行项目的“初步方案”。
3、研究项目的技术可行性一般要考虑的情况有哪些?
(1)对新软件功能的具体指标、运行环境及条件、响应时间、存储速度及容量、安全性和可靠性等的要求;
(2)对网络通信功能的要求等;
(3)确定在现有资源条件下的技术风险及项目能否实现等。
4、可行性分析包括哪些步骤?
(1)明确系统规模和目标;
(2)认真研究现行系统:
(3)确定系统逻辑模型;
(4)制定并推荐技术方案;
(5)编写可行性分析报告;
(6)评审论证。
1、用于描述基本加工说明的3种描述工具是结构化语言、判定表、判定树。
2、数据字典中有4类条目,分别是数据流、数据项、数据存储、基本加工。
3、需求分析阶段产生的最重要的文档是需求规格说明书。
4、数据流图DFD利用图形符号表示系统中的各个元素,表达了系统中各种元素之间的信息流动。
5、DFD是描绘物理系统的传统工具,它用图形符号来表示系统中的各个元素。
6、在需求分析阶段,需要确定问题的综合需求,这些需求包括功能需求、性能需求、环境需求、用户界面需求。另外还有可靠性、安全性、保密性、可移植性、可维护性等方面的功能。
7、需求分析阶段所要编写的文档包括需求规格说明书、初步用户使用手册、确认测试计划。
8、数据流图的4种基本成分是数据流、加工、数据存储、数据源点或终点。
9、在绘制分层的DFD时,父图与子图的输入输出数据流要平衡。
10、需求分析的困难主要体现在4个方面:问题的复杂性、交流障碍、不完备性不一致性、需求易变性。
11、软件质量必须从需求分析开始,在整个开发过程加以保证。
12、SA方法的基本思想是自顶向下、逐步分解。
13、DFD是常用的进行软件需求分析的图形工具,其基本符合是加工、数据流、数据存储和外部实体。
14、判定表和判定树是DFD中用以描述加工的工具,它通常描述的对象是组合组件。
15、系统流程图是描述物理系统的工具。
16、在程序的描述和分析中,用于指明数据来源、流向和处理的辅助图形是DFD。
17、U/C矩阵是用来进行子系统划分的方法。
18、需求规格说明书的作用包括软件设计的依据、用户与开发人员对软件要做什么的共同理解、软件验收的依据。
19、软件需求分析阶段的工作,主要包括对问题的识别、分析与综合、编写需求分析文档以及需求分析评审。
20、进行需求分析可使用多种工具包括数据流图、判定表、数据字典等。
1、什么是需求分析?需求分析的特点是什么?
需求分析主要是高清软件应用用户的实际具体需求,包括功能需求、性能需求、数据需求、安全可靠性要求、运行环境和将来可能的业务变化及拓展要求等,并建立系统的逻辑模型,写出“软件需求规格说明(SRS)”等文档。
需求分析的特点及难点,主要体现5个方面:
(1)指标确定难;
(2)需求动态性;
(3)交流共识难;
(4)完备一致难;
(5)深入完善难。
2、简述需求分析的目的和原则。
软件需求分析主要目的是获取用户及项目的具体需求,通过对实际需求的获取、分析、文档化和验证等需求分析过程,为软件的进一步设计和实现提供依据。
需求分析的基本原则:
(1)功能分解,逐层细化;
(2)表达理解问题的数据域和功能域;
(3)建立模型(业务模型、功能模型、性能模型、接口模型等)。
3、需求分析的任务和步骤是什么?
需求分析的基本任务是通过软件开发人员与用户的交流和讨论,准确地分析理解原系统,定义新系统的基本功能、性能、开发时间、投资情况人员安排等,并获得需求规格说明书。
步骤:
(1)确定目标系统的具体要求;
(2)建立目标系统的逻辑模型;
(3)编写需求文档,验证确认需求。
4、需求分析方法的类型有哪些?
目前常用的需求分析方法分为4种:功能分解法、结构化分析法、信息建模法和面向对象的分析方法。
1、软件工程中的总体设计又称为概要设计。
2、在软件工程中的设计阶段,需要充分体现软件工程的“模块化”“抽象”“信息隐蔽”等基本原则。
3、系统详细设计阶段最后产生的文档是详细设计说明书。
4、软件运行中的浮动位置菜单又称为弹出式菜单。
5、数据的显示形式主要包括字符显示和图形显示。
6、一组语句在程序中多处出现,为了节省内存空间把这些语句放在一个模块中,该模块是偶然内聚。
7、SD方法的原则是使每个模块执行一个功能。
8、软件详细设计工具可分为图形工具、设计语言和表格工具。
9、为了提高模块的独立性,模块之间最好是数据耦合。
10、详细设计的任务是确定每个模块的算法和数据结构。
11、数据库设计时的概念数据模型一般用E-R图表示。
1、系统设计分成哪两个阶段?各要完成什么任务?
软件设计分为两个阶段:总体设计和详细设计。总体设计主要确定总体架构、总体设计文档和方案。详细设计是具体细化,确定组成模块及联系、处理过程、数据库及网络、界面设计、软件设计文档(含具体方案)等。
2、总体设计的原则有哪些?
由宏观到微观、逐步求精。
3、模块的耦合性、内聚性包括哪些种类?
耦合:外部耦合、公共耦合、内容耦合、数据耦合、控制耦合
内聚:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚
4、用户界面应具备哪些特性?
(1)可使用性;
(2)灵活性;
(3)界面的复杂性与可靠性。