软件工程答案.pdf_第1页
软件工程答案.pdf_第2页
软件工程答案.pdf_第3页
软件工程答案.pdf_第4页
软件工程答案.pdf_第5页
已阅读5页,还剩11页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程 作业及答案 1 1 什么是软件危机 它有哪些典型表现 为什么会出现软件危机 答 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严 重问题 概括地说 软件危机包含下述两方面的问题 如何开发软件 以满足对软件日益增长的需求 如何维护数量不断膨胀的已有软件 软件危机典型表现 对软件开发成本和进度的估计常常很不准确 用 户对 已完成的 软件系统不满意的现象经常发生 软件产品的质量往往 靠不住 软件常常是不可维护的 软件通常没有适当的文档资料 软件 成本在计算机系统总成本中所占的比例逐年上升 软件开发生产率提高 的速度 远远跟不上计算机应用迅速普及深入的趋势 产生软件危机的原因 一方面与软件本身的特点有关 另一方面也和 软件开发与维护的方法不正确有关 软件不同于硬件 它是计算机系统 中的逻辑部件而不是物理部件 管理和控制软件开发过程相当困难 软 件是规模庞大 而且程序复杂性将随着程序规模的增加而呈指数上升 目前相当多的软件专业人员对软件开发和维护还有不省糊涂观念 在实 践过程中或多或少地采用了错误的方法和技术 这是使软件问题发展成 软件危机的主要原因 1 2 假设你是一家软件公司的总工程师 当你把图1 1给手下的软件工程 师们观看 告诉他们及早发现并改正错误的重要性时 有人不同意你的 观点 认为要求在错误进入软件之前就清除它们是不现实的 并举例 说 如果一个故障是编码错误造成的 那么 一个人怎么能在设计阶 段清除它呢 你怎么反驳他 1 3 什么是软件工程 它有哪些本质特性 怎样用软件工程消除软件危机 答 软件工程是指导计算机软件开发和维护的一门工程学科 采用 工程的概念 原理 技术和方法来开发与维护软件 把经过时间考验而 证明正确的管理技术和当前能够得到的最好的技术方法结合起来 以经 济地开发出高质量的软件并有效地维护它 软件工程本质特性 1 软件工程关注于大型程序的构造 2 软件 工程的中心课题是控制复杂性 3 软件经常变化 4 开发软件的效率 非常重要 5 和谐地合作是开发软件的关键 6 软件必须有效地支持 它的用户 7 在软件工程领域中是由具有一种文化背景的人替具有另 一种文化背景的人创造产品 消除软件危机的途径 为了消除软件危机 首先应该对计算机软件 有一个正确的认识 必须充分认识到软件开发不是某种个体劳动的神秘 技巧 而应该是一种组织良好 管理严密 各类人员协同配合 共同完 成的工程项目 应该推广使用在实践中总结出来的开发软件的成功的技 术和方法 并且研究探索更好更有效的技术和方法 尽快消除在计算机 系统早期发展阶段形成的一些错误概念和做法 应该开发和使用更好的 软件工具 为了解决软件危机 既要有技术措施 方法和工具 又要 有必要的组织管理措施 1 6 什么是软件过程 它与软件工程方法学有何关系 答 软件过程是为了获得高质量软件所需要完成的一系列任务的框 架 它规定了完成各项任务的工作步骤 软件工程方法学包含软件过 程 1 7 什么是软件生命周期模型 试比较瀑布模型 快速原型模型 增量模 型和螺旋模型的优缺点 说明每种模型的适用范围 答 生命周期模型简洁地描述软件过程 规定了把生命周期划分成哪些 阶段及各个阶段执行顺序 瀑布模型历史悠久 广为人知 它的优势在于它是规范的 文档驱 动的方法 这种模型的问题是 最终开发出的软件产品可能并不是用户 真正需要的 快速原型模型正是为了克服瀑布模型的缺点而提出来的 它通过快 速构建起一个可在计算机上运行的原型系统 让用户试用原型并收集用 户反馈意见的办法 获取用户的真实需求 增量模型具有可在软件开发的早期阶段使投资获得明显回报和较易 维护的优点 但是 要求软件具有开放的结构是使用这种模型时固有的 困难 风险驱动的螺旋模型适用于内部开发的大型软件项目 但是 只有 在开发人员具有风险分析和排除风险的经验及专门知识时 使用这种模 型才会获得成功 快速原型模型 适合小型软件 螺旋模型 适合内部开发的大规模软件项目 2 1 在软件开发的早期阶段为什么要进行可行性研究 应该从哪些方面研 究目标系统的可行性 答 可行性研究的目的 就是用最小的代价在尽可能短的时间内确定问 题是否能够解决 至少应该从下述三方面研究每种解法的可行性 1 技术可行性 2 经济可行性 3 操作可行性 2 5 北京某高校可用的电话号码有以下几类 校内电话号码由4位数字组 成 第1位数字不是0 校外电话又分为本市电话和外地电话两类 拨校 外电话需先拨0 若是本市电话则再接着拨8位数字 第1位不是0 若是 外地电话则拨3位区码再拨8位电话号码 第1位不是0 请用2 5 2小节讲述的定义数据的方法 定义上述的电话号码 答 电话号码 校内电话 本市电话 外地电话 非零数字字符 1 2 3 4 5 6 7 8 9 校内电话 非零数字字符 3 数字 3 本市电话 0 非零数字字符 7 数字 7 外地电话 0 区码 非零数字字符 7 数字 7 3 1 为什么要进行需求分析 通常对软件系统有哪些需求 答 为了开发出真正满足用户需求的软件产品 首先必须知道用户 的需求 对软件需求的深入理解是软件开发工作获得成功的前提条件 不论我们把设计和编码工作做得如何出色 不能真正满足用户需求的程 序只会令用户失望 给开发者带来烦恼 确定对系统的综合要求 1 功能需求 2 性能需求 3 可靠性 和可用性需求 4 出错处理需求 5 接口需求 6 约束 7 逆向需 求 8 将来可以提出的要求 分析系统的数据要求 3 2 怎样与用户有效地沟通以获取用户的真实需求 答 与用户沟通获取需求的方法 访谈 面向数据流自顶向下求精 简 易的应用规格说明技术 快速建立软件原型 3 3 银行计算机储蓄系统的工作过程大致如下 储户填写的存款单或取 款单由业务员键入系统 如果是存款则系统记录存款人姓名 住址 或 电话号码 身份证号码 存款类型 存款日期 到期日期 利率及密 码 可选 等信息 并印出存单给储户 如果是取款而且存款时留有密 码 则系统首先核对储户密码 若密码正确或存款时未留密码 则系统 计算利息并印出利息清单给储户 请用数据流图描绘本系统的功能 并用实体 联系图描绘系统中的数据 对象 答 数据流图 储户 存款处理 取款处理 核对密码 现金库 存折 存款单 存折 无密码 取 款单 帐目 存折 无密码 取款单 储蓄所 储户 存款 取款 存款日期 取款日期 姓名利率 存款类型 住址利率 身份证号 利率 名称利率 地址 实体 联系图 M N 4 2 在什么情况下应该使用形式化说明技术 使用形式化说明技术时应 遵守哪些准则 答 在开发大型软件系统的过程中应该使用形式化说明技术 应用形式化方法的准则 1 应该选用适当的表示方法 2 应 该形式化 但不要过分形式化 3 应该估算成本 4 应该有形式 化方法顾问随时提供咨询 5 不应该放弃传统的开发方法 6 应 该建立详尽的文档 7 不应该放弃质量标准 8 不应该盲目依赖 形式化方法 9 应该测试 测试再测试 10 应该重用 5 4 美国某大学共有200名教师 校方与教师工会刚刚签订一项协议 按照协议 所有年工资超过 26 000 含 26 000 的教师工资将保持不 变 年工资少于 26 000的教师将增加工资 所增加的工资数按下述方 法计算 给每个由此教师所赡养的人 包括教师本人 每年补助 100 此外 教师有一年工龄每年再多补助 50 但是 增加后的年工资总额 不能多于 26 000 教师的工资档案储存在行政办公室的磁带上 档案中有目前的年工资 赡养的人数 雇用日期等信息 需要写一个程序计算并印出每名教师的 原有工资和调整后的新工资 要求 1 画出此系统的数据流图 2 写出需求说明 3 设计上述的工资调整程序 要求用HIPO图描绘设计结果 设计时请 分别采用下述两种算法 并比较这两种算法的优缺点 a 搜索工资档案数据 找出年工资少于 26 000的人 计算新工资 校核是否超过 26 000 储存新工资 印出新旧工资对照表 b 把工资档案数据按工资从最低到最高的次序排序 当工资数额超过 26 000时即停止排序 计算新工资 校核是否超过限额 储存新工 资 印出结果 答 1 数据流图 计算应涨工资S1 读赡养人数 读雇佣日期 计算新工资 计算工龄 计算应涨工资S2 赡养人口 人数 S1 新工资 S2 雇佣日期 日期 工龄 2 需求说明 1 任务概述 对于年工资未超过 2600的教师涨工资 每赡养1人补助 100 每有一年工龄补助 50 涨工资 上限为 2600 2 数据描述 数据库描述 工资表 功能需求 对于年工资未超过 2600的教师涨工资 每赡 养1人补助 100 每有一年工龄补助 50 涨工资上限为 2600 3 HIPO图 a 涨工资系统 检索1 0 修改2 0 校核3 0 打印4 0 打印4 0 校核3 0 修改2 0 排序1 0 涨工资系统 b 4 所画的流程图适合 a 种算法 6 8 画出下列伪码程序的流图 计算它的环形复杂度 你觉得这个程序 的逻辑有什么问题吗 C EXAMPLE LOOP DO WHILE Z 0 A B 1 IF A 10 THEN X A ELSE Y Z END IF IF Y0 THEN PRINT C ELSE PRINT K ENDIF STOP 答 对应的流图 1 2 3 4 5 8 10 9 7 6 11 12 14 13 环形复杂度 V G E N 2 17 13 2 6 存在的逻辑问题 1 当Z 0时易形成死循环 2 条件 Y 5 包含条件 Y 2 6 9 把统计空格程序的Jackson图 下图 改画为等价的程序流程图和盒 图 统计空格 程序体 印总数 处理字符串 印字符串 分析字符串 印空格数 分析字符 处理非空格 处理空格 I I S 开始 结束 文件尾 读一个字符串 换行 输出字符串 换行 统计空格数并输出 取下一个字符串 换行 输出空格总数 答 程序流程图 盒图 N S 图 文件不是文件尾 读一个字符串 换行 输出字符串 换行 统计空格数并输出 取下一个字符串 换行 输出空格总数 Y N 7 8 对一个包含10000条机器指令的程序进行一个月集成测试后 总共 改正了15个错误 此时MTTF 10h 经过两个月测试后 总共改正了25个 错误 第二个月改正了10个错误 MTTF 15h 要求 1 根据上述数据确定MTTF与测试时间之间的函数关系 画出 MTTF与测试时间 的关系曲线 在画这条曲线时做了什么假设 2 为做到MTTF 100h 必须进行多长时间的集成测试 当集成测试结束 时总共改正了多少个错误 还有多少个错误潜伏在程序中 答 1 所做假设 1 单位长度里的错误数近似为常数 2 失效率正比于软件中剩余的错误数 而平均无故障 时间与剩余的错误数成反比 3 发现的每一个错误都 立即正确地改正了 2 由Shooman公式 MTTF IT K ET EC T 其中 IT 104 MTTF1 10 n1 15 MTTF2 15 n2 25 得 MTTF1 IT K ET EC T1 10 10000 K ET 15 MTTF2 IT K ET EC T2 15 10000 K ET 25 1 解得程序中固有的错误总数ET 45 此外K 100 3 2 设MTTF 100 有 100 10000 100 3 45 x 解得x 42 所以 当集成测试结束时 改正了42个错误 还剩3个错 误 7 9 如对一个长度为100000条指令的程序进行集成测试期间记录下下面 的数据 a 7月1日 集成测试开始 没有发现错误 b 8月2日 总共改正100个错误 此时MTTF 0 4h c 9月1日 总共改正300个错误 此时 MTTF 2h 根据上列数据完成下列各题 1 估计程序中的错误总数 2 为使MTTF达到10h 必须测试和调试这个程序多长时间 3 画出MTTF和测试时间 之间的函数关系线 答 由Shooman公式 MTTF IT K ET EC T 其中 IT 105 MTTF1 0 4 T1 160 n1 100 MTTF2 2 T2 320 n2 300 得 MTTF1 IT K ET EC T1 0 4 100000 K ET 100 MTTF2 IT K ET EC T2 2 100000 K ET 300 1 解得程序中固有的错误总数ET 350 此外K 1000 2 设MTTF 10 有 10 100000 1000 350 x 解得x 340 由可靠性积累曲线EC t ET 1 exp K1t 得 100 350 1 exp 160K1 300 350 1 exp 320K1 解得 K 0 01 代入 340 350 1 exp K1t 350 1 exp 0 01t 得 t ln 35 0 01 356h 因此求得为使 MTTF 10 测试和调试该程序需要花费365h 8 1 软件的可维护性与哪些因素有关 在软件开发过程中应该采取哪些 措施才能提高软件产品的可维护性 答 1 决定软件可维护性的因素主要有下述5个 1 可理解性 2 可测试性 3 可修改性 4 可移植性 5 可重用性 在软件工程过程的每一个阶段都应该考虑并努力提高软件的可维护 性 在每个阶段结束前的技术审查和管理复审中 应该着重对可维护性 进行复审 在需求分析阶段的复审过程中 应该对将来要改进的部分和可能会 修改的部分加以注意并指明 应该讨论软件的可移植性问题 并且考虑 可能影响软件维护的系统界面 在正式的和非正式的设计复审期 应该从容易修改 模块化和功能 独立的目标出发 评价软件的结构和过程 设计中应该对将来可能修改 的部分预作准备 代码复审应该强调编码风格和内部说明文档这两个影响可维护性的 因素 在设计和编码过程中应该尽量使用可重用的软件构件 如果需要开 发新的构件 也应该注意提高构件的可重用性 每个测试步骤都可以暗示在软件正式交付使用前 程序中可能需要 做预防性维护的部分 在测试结束时进行最正式的可维护性复审 在完成了每项维护工作之后 都应该对软件维护本身进行仔细认真 的复审 维护应该针对整个软件配置 不应该只修改源程序代码 每当 对数据 软件结构 模块过程或任何其他有关的软件特点做了改动时 必须立即修改相应的技术文档 9 1 什么是面向对象方法学 它有哪些优点 答 OO objects classes inheritance communication with messages 也就是说 面向对象就是既使用对象又使用类和继承等机制 而且 对象之间仅能通过传递消息实现彼此通信 面向对象方法学的优点 1 与人类习惯的思维方法一致 2 稳定 性好 3 可重用性好 4 较易开发大型软件产品 5 可维护性好 9 5 什么是模型 开发软件为何要建模 答 所谓模型 就是为了理解事物而对事物作出的一种抽象 是对 事物的一种无歧义的书面描述 模型是一种思考工具 利用这种工具可 以把知识规范地表示出来 为了开发复杂的软件系统 系统分析员应该从不同角度抽象出目标 系统的特性 使用精确的表示方法构造系统的模型 验证模型是否满足 用户对目标系统的需求 并在设计过程中逐渐把和实现有关的细节加进 模型中 直至最终用程序实现模型 对于那些因过分复杂而不能直接理 解的系统 特别需要建立模型 建模的目的主要是为了减少复杂性 应该依据什么准则来评价用例图 脚本和状态图 11 1 面向对象设计应该遵循哪些准则 简述每条准则的内容 并说明遵 循这条准则的必要性 答 面向对象设计准则 1 模块化 2 抽象 3 信息隐藏 4 弱耦 合 5 强内聚 6 可重用 11 2 简述有助于提高面向对象设计质量的每条主要启发规则的内容和 必要性 答 1 设计结果应该清晰易懂 使设计结果清晰 易读 易懂 是提高软件可维护性和可重用性的重要措施 2 一般 特殊结构的深 度应适当 应该使类等级中包含的层次数适当 3 设计简单的类 应 该尽量设计小而简单的类 以便于开发和管理 4 使用简单的协议 一般说来 消息中的参数不要超过3个 5 使用简单的服务 一般只有 3 5行源程序语句 可以用仅含一个动词和一个宾语的简单句子描述它 的功能 6 把设计变动减至最小 即使出现必须修改设计的情况 也 应该使修改的范围尽可能小 12 1 面向对象实现应该选用哪种程序设计语言 为什么 答 开发人员在选择面向对象语言时 还应该着重考虑以下一些实际因 素 1 将来能否占主导地位 为了使自己的产品在若干年后仍然具有 很强的生命力 2 可重用性 采用面向对象方法开发软件的基本目的 和主要优点 是通过重用提高软件生产率 3 类库和开发环境 决定 可重用性的因素 不仅仅是面向对象程序语言本身 开发环境和类库也 是非常重要的因素 4 其他因素 对用户学习面向对象分析 设计和 编码技术所能提供的培训服务 在使用这个面向对象语言期间能提供的 技术支持 能提供给开发人员使用的开发工具 开发平台 发行平台 对机器性能和内存的需求 集成已有软件的容易程度等 12 4 良好的面向对象程序设计风格主要有哪些准则 答 良好的面向对象程序设计风格 即包括传统的程序设计风格准 则 也包括为适应面向对象方法所特有的概念 例如 继承性 而必须 遵循的一些新准则 提高可重用性 1 提高方法的内聚 2 减小方法的规模 3 保 持方法的一致性 4 把策略与实现分开 5 全面覆盖 6 尽量不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论