软件工程
第一部分 传统软件开发方法
1、软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2、软件危机有哪些主要表现?
⑴ 软件开发成本和进度的估计很不准确。
⑵ 用户对开发的软件系统常常不满意。
⑶ 软件产品的质量往往靠不住。
⑷ 软件没有适当的文档资料,软件不可维护。
⑸软件开发成本逐年上升,软件开发生产率跟不上计算机应用。
3、软件危机包含下述两方面的问题:①如何开发软件,以满足对软件日益增长的需求;② 如何维护数量不断膨胀的已有软件。
4、软件生命周期
一个软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常 把软件经历的这个漫长的时期称为软件生命周期。
5、消除软件危机的途径
(1)彻底消除“软件就是程序”的错误观念。
(2)必须充分认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完 成的工程项目。
6、软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术 和方法来开发与维护软件,把正确的管理技术和最好的技术方法结合起来,以经济地开 发出高质量的软件并有效地进行维护,这就是软件工程。
7、软件工程目标和内容是什么?
软件工程的目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于
移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发 的软件可靠性高。
软件工程的内容:研究内容包括开发技术和开发管理两个方面。开发技术主要研究:软件开 发方法,开发过程,开发工具和环境。开发管理主要研究:软件管理学, 软件经济学,软件心理学。
8、软件工程具有下述本质特性
⑴软件工程关注于大型程序的构造
⑵软件工程的中心课题是控制复杂性
⑶软件经常变化
⑷开发软件的效率非常重要
⑸和谐地合作是开发软件的关键
⑹软件必须有效地支持它的用户
⑺软件工程师的领域知识影响其创造产品
9、软件工程的7条基本原理
(1)用分阶段的生命周期计划严格管理
(2)坚持进行阶段评审
(3)实行严格的产品控制
(4)采用现代程序设计技术
(5)结果应能清楚地审查
(6)开发小组的人员应该少而精
(7)承认不断改进软件工程实践的必要性
10、面向对象方法学具有下述4个要点。
(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。
(2)把所有对象都划分成类(class)。
(3)按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层 次结构的系统(也称为类等级)。
(4)对象彼此间仅能通过发送消息互相联系。
11、软件生命周期由哪些时期组成?各个时期划分成哪些阶段?
软件生命周期(各阶段)软件生命周期由软件定义、软件开发和运行维护三个时期组成。
1.软件定义时期划分为三个阶段:问题定义、可行性研究和需求分析
2.开发时期:总体设计、详细设计、编码和单元测试、综合测试。
3.维护时期:主要任务是使软件持久地满足用户的需要。
12、什么是软件过程?
软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成 各项
任务的工作步骤。
软件过程定义了运用技术方法的顺序、应该交付的文档资料、为保证软件质量和协调软 件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。
13、(1)瀑布模型的特点:
•阶段间具有顺序性和依赖性
•推迟实现的观点
•质量保证的观点
(2)瀑布模型优点:
•可强迫开发人员采用规范的方法(如结构化技术);
•严格地规定了每个阶段必须提交的文档;
•要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
(3)瀑布模型缺点:
•最主要的是“瀑布模型是由文档驱动的”,在文档方面花费了在量的人力与物力。 14.可行性研究的任务是什么?
(1)进一步分析和澄清问题的定义,在澄清问题的基础上,导出系统的逻辑模型;
(2)从系统逻辑模型中,选择问题的若干种主要解法,研究每一种解法的可行性,为以后 的行动提出建议;
(3)如果问题没有可行的解,建议停止系统开发;如果问题有可行的解,应该推荐一个较 好的解决方案,并为工程制定一个初步的计划。
15.可行性研究包括哪几方面的内容?
⑴ 技术可行性,使用现有的技术能实现这个系统吗?
⑵ 经济可行性,这个系统的经济效益能超过它的开发成本吗?
⑶ 操作可行性,系统的操作方式在用户组织内行得通吗?
⑷ 法律可行性,开发系统是否违反国家法律,是否侵犯他人利益。
(5)社会效益可行性,开发的系统能为用户带来怎样的社会经济效益。
16、数据流图是一种图形化技术,它对系统的逻辑功能进行描绘,图中没有任何具体的物理 元素,只是描绘数据在软件中流动和被处理的逻辑过程。
17、数据字典是关于数据的信息的集合,是对数据流图中包含的所有元素的定义的集合。 数据字典由下列4类元素组成:(1)数据流(2)数据项(即数据元素):组成数据流和数 据存储的最小元素。(3)数据存储(4)处理
18、在需求分析时,结构化分析方法应遵守哪些准则?
(1)必须理解并描述问题的信息域,建立数据模型。
(2)必须定义软件应完成的功能,建立功能模型。
(3)必须描述作为外部事件结果的软件行为,建立行为模型。
(4)必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。
19、什么是需求分析?需求分析阶段的基本任务是什么?
需求分析:软件分析员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求 陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。
基本任务:
⑴问题识别,软件分析员和用户确定对问题的综合需求,这些需求包括功能需求,性能 需求,环境需求,用户界面需求。
⑵分析与综合,导出软件的逻辑模型。
⑶编写文档,包括编写"需求规格说明书","初步用户使用手册","确认测试计划","修改 完善软件开发计划" 。
20、从哪些方面验证软件需求的正确性?
(1)一致性:所有需求必须是一致的,不能互相矛盾。
(2)完整性:需求必须是完整的,规格说明书应包括用户需求的每个功能或性能。
(3)现实性:用户需求应该是用现有的硬件技术和软件技术来实现的。
(4)有效性:需求是正确有效的,确实能解决用户面对的问题。
21、有哪些验证软件需求的方法?
(1)验证需求的一致性:审查软件需求规格说明书是否丰在冗余、遗漏、不一致等问题。 (2)验证需求的现实性:分析利用现有的软、硬件技术实现目标系统的可能性。
(3)验证需求的完整性和有效性:审查软件需求规格说明书是否完整、准确地描述目标 系统的需求。
模块化设计的目的22、总体设计目的是什么?总体设计的任务是什么?
总体设计目的就是回答“系统应该如何实现?”。这个阶段有两个任务:
①划分出组成系统的物理元素一一程序、文件、数据库、人工过程和文档等;
②设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块 相互间的关系。
23、模块是数据说明,可执行语句等程序对象的集合,它是构成程序的基本构件。
模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把 若干模块构成一个整体,完成用户需求。
模块化的目的是使一个复杂的大型软件简单化。
24、什么是模块独立性?写出模块独立性重要的理由。
模块独立性是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且 接口简单。
模块独立性重要的理由主要有两条:
第一,有效的模块化(即具有独立的模块)的软件比较容易开发出来。
第二,独立的模块比较容易测试和维护。
25、耦合是对一个软件结构内不同模块之间互连程度的度量。
内聚指模块功能强度的度量,即一个模块内部各个元素彼此结合的紧密程序的度量。 数据耦合:指两模块之间有调用关系,传递的是简单的数据值。
功能内聚:指模块内所有元素共同完成一个功能,缺一不可。
26、在开发软件过程中总结出了哪些启发规则?
⑴改进软件结构提高模块独立性
⑵模块规模应该适中
⑶深度、宽度、扇出和扇入都应适当
⑷模块的作用域应该在控制域之内
⑸力争降低模块接口的复杂程度
⑹设计单入口单出口的模块
⑺模块功能应该可以预测
27.详细设计的任务是什么?
⑴为每个模块确定采用的算法;
⑵确定每一模块使用的数据结构;
⑶确定模块接口的细节;
⑷编写过程设计说明书;
⑸设计每一模块的测试用例。
28、结构程序设计有哪些好处?
⑴ 开发出的程序结构层次清晰;
⑵ 不使用GOTO语句,程序的静态和动态结构情况比较一致;
⑶ 控制结构有确定的逻辑模式;
⑷ 可重用的代码量大;
⑸ 程序的逻辑结构清晰,有利于程序正确性证明。
29、程序流程图的主要优点是:对控制流程的描绘很直观,便于初学者掌握。
程序流程图的主要缺点如下:
⑴程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流 程,而不去考虑程序的全局结构。
⑵程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程 序设计的精神,随意转移控制。
⑶程序流程图不易表示数据结构。
30、N-S图的特点:
⑴功能域(即控制结构)明确,可以从盒图上一眼就看出来。
⑵不可能任意转移控制。
⑶很容易确定局部和全程数据的作用域。
⑷很容易表现嵌套关系,也可以表示模块的层次结构。
31、PAD图的主要优点如下:
⑴使用PAD图设计出来的程序必然是结构化程序。
⑵PAD图所描绘的程序结构十分清晰。
⑶用PAD图表现程序逻辑,易读、易懂、易记。
⑷容易将PAD图转换成高级语言源程序。
⑸PAD图的符号支持自顶向下、逐步求精方法的使用。
32、Jackson图有哪些结构?它又有哪些优点?
Jackson图有三种结构:顺序结构、选择结构和重复结构。
它有下面优点:
⑴便于表示层次结构,而且是对结构进行自顶向下分解的有力工具;
⑵形象直观可读性好;
⑶既能表示数据结构也能表示程序结构。
33、定量度量程序复杂程度的方法有哪三方面价值?
⑴把程序的复杂程度乘以适当常数即可估算出软件中错误的数量,以及软件开发需要的 工作量。
⑵定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣; ⑶程序的定量的复杂程度可以作为模块规模的精确限度。
34、G.Myers给出的关于测试的一些规则:
(1)测试是为了发现程序中的错误而执行程序的过程;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论