第一章
什么是软件?软件和程序的区别是什么?
答:⑴软件是程序、数据以及开发、使用和维护程序需要的所有文档的完整集合。软件的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必须的数据。
⑵软件不是程序,程序是软件的一部分。程序是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。它是由软件开发人员设计和编码的。程序执行时一般要输入一定的数据,也会输出运行的结果。没有相关文档,仅有程序是不能称之为软件产品的。
什么是软件生存周期?划分生存周期的主要原则是什么?
答:(1)软件的生存周期是指某一软件项目被提出并着手实现开始,直到该软件报废或停止
使用为止所经历的时间。
(2)主要原则:各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可
能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。 1.3什么是软件危机?它有哪些主要表现?为什么会产生软件危机?
答:(1)软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 (2) 主要表现:对软件开发成本和研制进度的估计常常很不精确,导致经费预算经
常突破,进度超时完成;由于开发人员常常对用户需求只有模糊的了解以及开发人员和用户又未能及时交换意见,导致已完成的软件不能满足用户的需要;软件产品质量差,可靠性得不到保证;软件产品可维护性差;软件成本在计算机系统总成本中所占的比例逐年上升,软件的发展跟不上硬件的发展;软件开发生产率提高的速度远远跟不上计算机应用速度普及深入趋势,软件发展跟不上用户的要求。 (3) 产生软件危机的原因:造成软件危机的原因与软件自身的特点有关,也与软件
开发人员在开发和维护时采用的生产方式、方法、技术有关。软件是计算机系统中的逻辑部件,软件产品往往规模庞大,结构复杂。给软件的开发和维护带来客观的困难;软件开发的管理困难。由于软件规模大、结构复杂、又具有无形性,导致管理困难,进度控制困难,可靠性无法保证;软件开发费用不断增加,维护费用急剧上升,直接威胁计算机应用的扩大;软件开发技术落后;生产方式落后;开发工具落后,生产效率提高缓慢。另外软件开发人员忽视需求分析的重要性,轻视软件维护也是造成软件危机的原因。
什么是软件工程?怎样利用软件工程消除软件危机?
答:(1)软件工程是指导计算机软件开发和维护的一门学科
(2)首先应该对计算机软件有一个正确的认识,彻底清除“软件就是程序” 的错误观念;要使用好的开发技术和方法,并且要不断研究探索更好更有效的技术和方法;要有良好
的组织、严密的管理,各类人员要相互配合,共同完成任务,充分认识软件开发不是某种个体劳动的神秘技巧;应该开发和使用好的软件工具,从而有效提高软件生产率。采用“工程化”的思想做指导来解决软件研究中面临的困难和混乱。 何谓面向对象软件工程?简述它和传统软件工程的区别与联系?
答:(1)以面向对象程序设计为基础的软件工程。
(2) 传统软件工程是以结构化程序设计为基础,而面向对象软件工程是以面向对象程序设计为基础。与面向过程的软件工程的开发思想相比,面向对象开发方法不再是以功能划分为导向,而是以对象作为整个问题分析的中心,围绕对象展开系统的分析与设计工作。在开发过程方面,面向对象软件工程和传统软件工程一样也是把软件开发划分为分析、设计、编码和测试等几个阶段,但各个阶段的具体工作不同,除了在编码阶段使用的语言不同外,面向对象软件工程为待开发软件确定“类与对象”一般在需求分析阶段进行,设计阶段则主要完成对象内部的详细设计;而在传统软件工程中,将软件设计划分为“总体设计”和“详细设计”,分别完成软件的总体结构图的设计和各个模块内部算法的详细设计。即:传统软件工程开发过程包括需求分析、总体设计、详细设计、面向过程的编码和测试;面向对象软件工程开发过程包括需求分析与对象抽取、对象详细设计、面向对象的编码和测试。 什么是软件生存周期模型?试比较本章介绍的四种模型的优缺点,说明每种模型的使用范围 答:(1) 软件生存周期模型即为软件开发模型,是描述软件开发过程中各种活动如何执行的模型,是软件过程、活动、任务的结构框架。
优点 缺点 只有当分析员能够做出准确的需求分析时,才能得到预期的正确结果。它是一种理想的线性开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。 适用范围 适合于需求很明确的软件项目开发的模型,对于经常变化的项目而言,瀑布模型毫无价值。 瀑布模型 能清晰直观地表达软件开发全过程,明确规定要完成的主要活动和任务,用来作为软件项目工作的基础。 快速原型模通过实践让用户了解在实际中开发原型系统型 未来目标系统的概使用的语言效率有时会貌,以便判断哪些功很低,所选用的开发技能是符合需要的,哪术和工具不一定符合主些方面需要改进。反流的发展;快速建立起复改进,最终建立完来的系统结构加上连续全符合用户需求的新的修改可能会导致产品系统。克服瀑布模型质量低下。 的缺点,减少由于软件需求不明确带来的开发风险。这种模型适合预先不能确切定义需求的软件系统的开发。 增量模型 有较大的灵活性。能够在较短的时间内向用户提交一些有用的工作产品。开发出一部分,向用户展示一部分,可让用户及早看到部分软件,及早发现问题。整个系统是由一个个构件集成在一起的,当需求变更时只变更部分部件,而不必影响整个系统。 螺旋模型 加入了瀑布模型与增量模型都忽略了的风险分析,使用原型及其他方法来尽量降低风险 各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,冒所有构件集成不到一起的风险。 适合于一些需求可变、模糊不定的软件系统的开发 适合于软件要求不明确,设计方案有一定风险的软件项目。 该模型需要有相当丰富的风险评估经验和这方面的专门技术,这使该模型的应用受到一定限制。 将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。 第二章 在软件开发早期阶段为什么要进行可行性研究?可行性研究的任务是什么?应该从哪几个方面研究目标系统的可行性?
答:(1)避免或者减轻项目开发后期可能出现的困境。
(2)其主要任务是,首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项
目的约束和限制,必须分析几种可能解法的利弊,从而判定原定系统的目标和规模是否现实,系统完成后带来的效益是否大到值得投资开发这个系统的程度。 (3)经济可行性、技术可行性、操作可行性、法律可行性。 2.2 成本—效益分析可用哪些指标进行度量?
答:成本方面包括开发成本和运行维护成本;效益方面包括经济效益和社会效益,经济效益可以用货币的时间价值 、投资回收期、纯收入来度量。
2.3 有人认为,只懂技术的分析员不一定能圆满完成可行性研究的任务。你同意这种看法
吗?为什么?
答:同意。因为可行性研究的任务包括三个方面,除了技术可行性之外,还需要进行经济可行性、操作可行性、社会和法律方面的可行性研究,而只懂技术的分析员对其他方面的研究有可能不满足用户的要求,所以只懂技术的分析员不一定能圆满完成可行性研究的任务。 2.4 在【例 】中,把投资改为 6000 元,每年节约金额改为 2000 元,年利率为 6%,试
计算投资回收期和纯收入。 解:如下表 年 将来值(元) (1+n*I) 现在值(元) 累计的现在值 (元) 1 2 3 4 5 2000 2000 2000 2000 2000 投资回收期为 / +3=(年) 纯收入为 =(元) 2.5 为方便旅客,某航空公司拟开发一个飞机票预定系统。旅游公司把预定机票的旅客信
息(姓名、年龄、工作单位、身份证号码、旅游时间、旅游目的地等)输入进该系统,系统为旅客安排航班,打印出取票通知和账单,旅客在飞机起飞前的 3 天之内凭取票通知和账单交款取机票,系统校对无误即打印出飞机票给旅客。 请写出开发此系统的问题定义,并通过可行性研究分析此系统的可行性。
答:问题定义:飞机票预定系统
主要实现以下功能:
查询功能:把旅游时间、旅游目的地等输入进该系统, 系统显示符合要求的航班。
预定机票:把预定机票的旅客信息(姓名、年龄、工作单位、身份证号码、旅游时间、
旅游目的地等)输入进该系统,系统为旅客安排航班,打印出取票通知和账单,并更新记录。 校对并打印机票:旅客在飞机起飞前的 3 天之内凭取票通知和账单交款取机票,系统
校对无误即打印出飞机票给旅客。 可行性研究应从经济可行性、技术可行性、操作和社会、法律的角度阐述其可行性,这部分
省略…… 试为习题 写可行性研究报告的主要内容。 (本题略)
第三章
为什么要进行需求分析?需求分析要经过哪些步骤?
答:(1)可行性研究阶段粗略了解了用户的需求,甚至还提出了一些可行的方案,但是可行性研究的基本目的是最小的代价在尽可能短的时间内确定问题是否存在可行的解法,因此许多细节都被忽略了,可行性研究并不能代替需求分析,
它实际上并没有准确地回答“系统必须做什么”这个关键问题。 (2)步骤:
1.需求获取:调查研究。从分析当前系统包含的数据开始,分析当前信息处
理的方法与存储的不足,用户希望改进的主要问题及其迫切性等。
2. 需求提炼:分析建模。需求提炼的主要任务是建立分析模型。把来自用户的信息加以分析,通过抽象建立起目标系统的分析模型。
3.需求描述:编写 SRS。 为了使需求描述具有统一的风格,可以采用已有的且可满足项目需要的模板,也可以根据项目特点和软件开发小组的特点,对标准进行适当的改动,形成自己的 SRS 模板。
4. 需求验证。由分析员和用户一起对需求分析结果进行严格的审查、验证。 确保需求说明可作为软件设计和最终系统验收的依据。
需求分析阶段的基本任务是什么?怎样理解分析阶段的任务是决定“做什么”,而不是“怎样做”?