软件工程必中题
第一章基本概念 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++语言程序中的类。模块化有助于 信息隐蔽和抽象,有助于表示复杂的系统。 ④ 局部化:要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模 块之间具有松散的耦合,模块内部具有较强的内聚。这有助于控制解的复杂 性。 ⑤ 确定性:软件开发过程中所有概念的表达应是确定的、无歧义性的、规范的。 ⑥ 一致性:整个软件系统的各个模块应使用一致的概念、符号和术语。程序内 部接口应保持一致。软件和硬件、操作系统的接口应保持一致。系统规格说 明与系统行为应保持一致。用于形式化规格说明的公理系统应保持一致。 ⑦ 完备性:软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程 度。为了保证系统的完备性,在软件开发和运行过程中需要严格的技术评审。 ⑧ 可验证性:开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解 应遵循系统易于检查、测试、评审的原则,以确保系统的正确性。 8. 软件工程的基本原理是什么? ① 用分阶段的生命周期严格管理; ② 坚持进行阶段评审; ③ 实行严格的产品控制; ④ 采用现代程序设计技术; ⑤ 结果应能清楚地审查; ⑥ 开发小组人员应少而精; ⑦ 承认不断改进软件工程实践的必要性。 9. 瀑布模型有什么特点? 1)最早出现的软件开发模型,它提供了软件开发的基本框架。 2)瀑布模型的本质是一次通过,即每个活动只执行一次,最后得到软件产品。 3)瀑布模型有利于大型软件开发过程中人员的组织及管理,有利于软件开发方 法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率。 4)里程碑或基线驱动,或者说文档驱动; 瀑布模型的缺陷: ① 由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软 件的效果。这样软件与用户见面的时间间隔较长,也增加了一定的风险。 ② 在软件开发前期末发现的错误传到后面的开发活动中时,可能会扩散,进 而可能会造成整个软件项目开发失败。 ③ 在软件需求分析阶段,完全确定用户的所有需求是比较困难的,甚至可以 说是不太可能的。 瀑布模型即生存周期模型,其核心思想是按工序将问题化简,将功能的实现与设 计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现 分开。瀑布模型将软件生命周期划分为软件计划、需求分析和定义、软件设计、 软件编码、软件测试、软件运行维护6个阶段,规定了他们自上而下、相互衔接 的固定次序,如同瀑布流水逐级下落。 10. 说明生命周期的划分? 一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程称为 软件生存期或叫生命期。包括计划、需求分析、软件计划、程序编码、软件测试 和运行维护6各阶段。 11. 列出软件生存期的几个主要模型? 瀑布模型、原型模型、螺旋模型、增量模型、构件组装模型、统一过程模型、第 四代技术 12. 瀑布模型软件开发方法的基本过程? 定义阶段:计划、需求分析 开发阶段:设计、编码、测试 维护阶段:运行维护 13. 增量模型有什么特点? 1)融合了线性顺序模型的基本成份和原型实现模型的迭代特征。 2)增量模型采用随着日程时间的进展而交错的线性序列。每一个线性序列产生 软件的一个可发布的,,增量,,。 3)增量模型强调每一个增量均发布一个可操作产品。早期的增量是最终产品的 “可拆卸”版本,但他们确实提供了给用户服务的功能,并且提供了给用户评 估的平台。 将软件产品看作一组增量构件,每次设计、实现、集成、测试和交付一块构件, 直到所有构件全部实现为止。 特点: 1)任务或功能模块驱动,可以分阶段提交产品; 2)有多个任务单,这些多个任务单的集合,构成项目的一个总任务书(总用户需 求报告)。 14. 几种主要的软件开发方法? 1)结构化开发方法 2)面向对象的方法 15. 软件工程的“五个面向” ? 1)面向流程分析 2)面向数据设计3)面向对象实现 4)面向功能测试 5)面向过程管理 第二章软件策划 1. 可行性分析的目的? 1)用最小的代价在尽可能短的时间内确定问题是否能够解决。 2)确定问题是否能够解决和值得解决。 3)分析可能的利弊关系。 2. 可行性分析最为敏感的方面是什么? ⑴经济可行性:经济效益能否超过开发成本? ⑵技术可行性:现有技术能否实现?技术风险的各种因素? ⑶操作可行性:用户的接受程度如何? ⑷法律可行性:是否合法,是否侵犯他人的利益。 3. 可行性研究的步骤有哪些? ① 系统调研(复查系统规模和目标) ② 现行系统分析(研究目前正在使用的系统) ③ 建议新系统(导出新系统的高层逻辑模型) ④ 模型评审(重新定义问题) ⑤ 导出和评价可供选择的解决方案 ⑥ 推荐一个方案并说明理由 ⑦ 推荐行动方针 ⑧ 书写文档提交审查(可行性分析报告) 4. 软件计划的步骤有哪些? ① 估计软件的规模及所需的资源; ② 制定时间表; ③ 鉴别和评估风险; ④ 约定与限制条件。 5. 软件计划书的内容有哪些? ① 软件范围 ② 环境资源 ③ 进度安排