第一章
1-1 什么是软件危机?
答:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 1-3 什么是软件工程? 有哪些本质特性?怎样用软件工程消除软件危机? 答:是指导计算机软件开发和维护的一门工程学科。 特性略。
技术措施和管理措施消除软件危机。
1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。 目前使用得最广泛的软件工程方法学(2种):
答:1.传统方法学:也称为生命周期方法学或结构化范型。
优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。
缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 2.面向对象方法学:对象+类+消息+通信
优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。
1-5
答:(1)1985年对计算机存储容量的需求,估计是 M=4080e0.28 (1985-1960) =4474263字
价格P=0.048*0.721985-1974*4474263=5789(美元)
(2)可按每月20个工作日计算,每人每月可开发出200条指令,为了装满存储器,需要的工作量是 4474263/200=22371人月
22371*4000=89484000(美元)
(3)1995年对存储容量的需求,估计为
M=4080e0.28 (1995-1960) =73577679字
字长为32位,则这个存储器的价格为
P=0.003*32*0.721995-1974*73577679 =7127(美元) 在1995年一名程序员每天可开发出30条指令,每月开发600条指令,需要的工作量是73577679/600=122629 人月,成本为122629*6000=735776790美元
1-6 什么是软件过程?它与软件工程方法学有何关系? 答:
? 软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。它定义了运用技术方法的顺序、应该交付的文档资料、为保证软件质量和协调软件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。 ? 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型。软件过程是软件工程方法学的3个重要组
成部分之一。
1-7 什么是软件生命周期模型?软件生命周期划分成哪些阶段。简单描述重要的过程模型。 答:
? 软件生命周期(各阶段)软件生命周期由软件定义、软件开发和运行维护三个时期组成。
1. 软件定义时期划分为三个阶段:问题定义、可行性研究和需求分析 2. 开发时期:总体设计、详细设计、编码和单元测试、综合测试。 3维护时期:主要任务是使软件持久地满足用户的需要
生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也成为过程模型。
– 瀑布模型:优点:1.可强迫开发员采用规范的方法2.严格地规定
了每个阶段必须提交的文件3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
– 缺点:传统的瀑布模型过于理想化,是由文档驱动的。
– 快速原型模型:通过快速构建起一个可在计算机上运行的原型系
统,让用户试用原型并收集用户反馈意见的方法,获取用户真正的需要。 – 增量模型:优点:能在较短时间内向用户提交可完成部分工作的产
品;逐步增加产品功能可以使用户有较充实的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
螺旋模型:优点:对可选方案和约束条件的强调有利于已有软件的重用;减少了过多测试;维护只是螺旋模型中另一个周期。
1-11 说明敏捷过程的适用范围。
答: 敏捷过程具体对变化和不确定性的更快速、更敏捷的反应特性,而且在快速的同时仍然能 保持可持续的开发速度,因此较适用于开发可用资源及开发时间都有较苛刻约束的小型项目。
第二章
2-1 在软件开发的早期阶段为什么要进行可行性研究?应该从那些方面研究目标系统的可行性? 答:
并非任何问题都有简单明显的解决办法,事实上,许多问题不可能在预定的系统规模或时间期限之内解决。如果没有可行的解,那么花费在这项工程上的任何时间、人力、软硬件资源和经费,都是无谓的浪费。可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能否解决。
? 可行性研究的任务:1.进一步分析和澄清问题;2.导出系统的逻辑模型;3.从逻辑模型出发,提出若干种系统实现方案4.研究每种实现方案的可行性:
? 技术上的可行性 ——使用现有的技术能实现这个系统吗?
? 经济上的可行性 ——这个系统的经济效益能超过它的开发成本吗? (投资与效益)
? 操作可行性 ——系统的操作方式在这个用户组织内行得通吗? ? 社会、政策允许的可行性 2-4 答: 问题定义:
本题要开发一个病人监护系统,实现对病人症状的自动监护,形成病人日志记录,减少人力的浪费。
在监控过程中,随时接受病人的生理信息(脉搏、体温、血压、心电图),对病人的不正常生理信息(超出医生规定的安全范围的信息)发出警告,并向护士发出警告信息。护士还可以根据需要打印病人的病情报告。
采集器处理信号生理信号文件病情报告生成预警信号病人报告 2-5 北京某高校可用的电话号码由以下几类:校内电话号码由4位数字组成,第一位数字不是零;校外电话又分为本市电话和外地电话两类,拨校外电话先拨0,若是本地电话再接着拨8位数字(固话第一位不是0)或11位数字(移动电话第一位为1);若是外地电话,则拨3位区码再拨8位电话号码(固话第一位不是0),或拨0再拨11位数字(移动电话第一位为1)。请用数据定义的方法,定义上述电话号码。 答:
? 电话号码=[校内电话号码|校外电话号码]
? 校内电话号码=非零数字+ 3 位数字 //后面继续定义 ? 校外电话号码=[本市号码|外地号码] ? 本市号码=数字零+8位数字
? 外地号码=数字零+3位数字+8位数字 ? 非零数字=[1|2|3|4|5|6|7|8|9] ? 数字零=0
? 3位数字=3{数字}3 //3至3个数字 ? 8位数字=非零数字+7位数字 ? 7位数字=7{数字}7
? 数字=[0|1|2|3|4|5|6|7|8|9]
第三章
3-1 为什么要进行需求分析?通常对软件系统有哪些需求?
答:为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求,不论软件工程师把设计和编码工作做得如何出色,不能真正满足用户需求的程序只会令用户失望。需求分析的任务不是确定系统怎样完成它的工作,而是确定系统必须完成哪些工作,对目标系统提出完整、清晰、准确、具体的要求。
一、综合需求
功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求 二、数据要求 三、行为建模机制
3-2 怎样与用户沟通以获取真实需求? 答:
一 访谈:正式访谈、非正式访谈 、情景分析技术 二面向数据流自顶向下求精 三简易的应用规格说明技术 四 快速建立软件原型 3-3银行计算机储蓄系统 答:
一、系统的分层数据流图
存款单存单取款单银行系统利息清单存款利率业务员储户储户
存款单存款 1存单存款利率D1 储户存款文件利息清单取款 2取款单利率设置 3D2 存款利率文件