软件工程课后习题答案(钱乐秋版)
软件工程---课后习题答案.doc
软件工程---课后习题答案.doc第一章1.1什么是计算机软件?软件的特点是什么?计算机软件是指计算机系统中的程序及其文档软件的特点:●软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。
●软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大。
●软件的使用没有硬件那样的机械磨损和老化问题。
1.2简述软件的分类,并举例说明1.系统软件系统软件居于计算机系统中最接近硬件的一层,其他软件一般都通过系统软件发挥作用。
例如:编译软件、操作系统。
2.支撑软件支撑软件是支撑软件的开发和维护的软件。
例如:数据库管理系统、网络软件、软件工具、软件开发环境。
3.应用软件应用软件是特定应用领域专用的软件。
例如:工程/科学计算机软件、嵌入式软件、产品线软件、Web应用软件、人工智能软件。
1.3简述软件语言的分类,并举例说明。
1.需求定义语言是用于书写软件需求定义的语言。
例如:PSL/PSA。
2.功能性语言是用于书写软件功能规约的语言,通常又称为功能规约语言。
例如:广谱语言、Z语言。
3.设计性语言是用于书写软件设计规约的语言。
例如:PDL。
4.实现性语言也称为程序设计语言,是用于书写计算机程序的语言。
例如:C、java、PROLOG、FORTRAN、COBOL、Modula。
5.文档语言是用于书写软件文档的语言。
通常用自然语言或半形式化语言书写。
1.4什么是软件工程?软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。
软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。
1.5简述软件工程的基本原则。
软件工程原则包括围绕工程设计、工程支持和工程管理所提出的以下4条基本原则。
1.选取适宜的开发模型必须认识需求定义的易变性,采用适宜的开发模型,保证软件产品满足用户的要求。
2.采用合适的设计方法合适的设计方法有助于这些特征的实现,以达到软件工程的目标。
软件工程课后答案(清华大学出版社--钱乐秋)
(2)如果一条指令的长度为一个字,则使存储器装满程序共 需4474263条指令。
在1985年一名程序员每天可开发出10条指令,如果每月 有20个工作日,则每人每月可开发出10×20条指令。
为了开发出4474263条指令以装满存储器,需要的工作量
D2存款利率
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
19
作业及解答(第3章)
E1 储户
F7密码
F2取款单
P3.1 输入取款信息
无效取款信息
F5存款信息 D1存款信息
P3.2 密码校验
F7密码
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
D3生理信息
F4警告信息
F2生理信号
P1 接收信号
定时的生理信号
P5 更新日志
F2生理信号 定时的 生理信号
E1 护士
E3 时钟
F3日前、时间
P4 定时取样 生理信号
F6日志
F6日志
D1患者日志
E1
护士
F1要求报告
P6
13:07:42
重庆工学产院生计病算情机报科告学与工程学院 李梁(liliang@)
定时的生理信号 F6日志
P5 更新日志
D1患者日志
E1 护士
13:07:42
F6日志 F1要求报告
P6 产生病情报告
重庆工学院计算机科学与工程学院 李梁(liliang@)
11
E2 病人
P2 分析信号
F2生理信号 F5安全范围
危及病人信息 D2患者安全范围
软件工程(钱乐秋)第04章-设计工程
• 软件设计工程概述 • 软件设计原则 • 软件体系结构设计 • 部件级设计技术 • 设计规约与设计评审
内容摘要
• 软件设计工程概述 • 软件设计原则 • 软件体系结构设计 • 部件级设计技术 • 设计规约与设计评审
软件设计工程概述
• 软件需求分析解决“做什么”的问题,软 件设计过程则解决“怎么做”的问题
抽象化与逐步求精
• 抽象,是在软件设计的规模逐渐增 大的情况下,控制复杂性的基本策 略。
• 抽象的过程是从特殊到一般的过程, 上层概念是下层概念的抽象,下层 概念是上层概念的精化和细化。
• 软件工程过程的每一步都是对较高 一级抽象的解作一次具体化的描述
• 软件设计中主要抽象手段有:过程抽象 和数据抽象
软件体系结构的风格
• 绝大多数可以被归类为相对小数量的体 系结构风格之一
• 每种风格描述一种系统范畴,范畴包括:
– ①一些实现系统所需的功能的部件(如数据 库、计算模块);
– ②一组用来连接部件“通信、协调和合作” 的“连接子”;
– ③定义部件之间怎样整合的系统约束; – ④使设计者能够理解整个系统属性并分析已
知属性的语义模型。
数据为中心体系结构
• 一些数据(比如一个文件或者数据库)保 存在整个结构的中心,并且被其他部件频 繁地使用、添加、删除、或者修改
数据流风格的体系结构
• 这种结构适用于输入数据被一系列的计算 或者处理部件变换成输出数据。
调用和返回风格的体系结构
• 这种风格使一个软件设计者设计出非常容 易修改和扩充的体系结构。
5) 标记耦合:两个模块之间通过参数表传递一 个数据结构的一部分(如某一数据结构的子结 构),就是标记耦合。
6) 数据耦合:两个模块之间仅通过参数表传递 简单数据,则称为数据耦合。
软件工程课后习题答案2
12
作业及解答(第3章)
从问题陈述可知,复印机的状态主要有“闲置”、“复印
”、“缺纸”和“卡纸”。引起状态转换的事件主要是“ 复印命令”、“完成复印命令”、“发现缺纸”、“装满 纸”、“发生卡纸故障”和“排除了卡纸故障”。
13
作业及解答(第4章)
14
补充:请将下图的DFD转换为软件结构图。 (注:图中⊕表示或者)
1
作业及解答(第3章)
1. 银行计算机储蓄系统的工作过程大致如下:储户填写的 存款单或取款单由业务员键入系统,如果是存款则系统记 录存款人姓名、住址(或电话号码)、身份证号码、存款类 型、存款日期、到期日期、利率及密码(可选)等信息,并 印出存单给储户;如果是取款而且存款时留有密码,则系 统首先核对储户密码,若密码正确或存款时未留密码,则 系统计算利息并印出利息清单给储户。 请用数据流图描绘本系统的功能,并用实体-联系图描绘 系统中的数据对象。
21
不能是两个分开的子系统,是相同的前台单个处理
银行储蓄系 统
存 款 单 款
率 利
利 存单 息清单
密 码
业务单据录 入
利 率
存款单
取
单
储蓄业务处理
存款单
单据输出
利 息
存单
款
存单
密码
取
利率
清
利
单
密 码
单
息
存款利 率设置
存款单据输 入
取款单 据输入
存款
取款
存单
利息清单
22
(2)机票预定系统 为了方便旅客,某航空公司拟开发一个机票预定系 统。旅行社把预定机票的旅客信息(姓名、性别、 工作单位、身份证号码、旅行时间、旅行目的地等 )输入该系统,系统为旅客安排航班,旅客在飞机 起飞前一天凭取票通知和账单交款取票,系统核对 无误即印出机票给顾客
软件工程课后习题答案
第一章习题参考答案1﹑软件产品的特性是什么?答:软件产品特性:⑴是一种逻辑产品,与物质产品有很大的区别。
⑵软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。
⑶软件产品不会用坏,不存在磨损,消耗。
⑷生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是"定做"的⑸开发软件的费用不断增加,致使生产成本相当昂贵。
2﹑软件生产有几个阶段?各有何特征?答:⑴程序设计时代:这个阶段生产方式是个体劳动,使用的生产工具是机器语言,汇编语言。
⑵程序系统时代:这个阶段生产方式是小集团合作生产,使用的生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。
⑶软件工程时代:这个阶段生产方式是工程化的生产,使用数据库﹑开发工具﹑开发环境﹑网络﹑分布式﹑面向对象技术来开发软件。
3﹑什么是软件危机?产生原因是什么?答:软件开发技术的进步未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
产生原因:⑴软件规模越来越大,结构越来越复杂。
⑵软件开发管理困难而复杂。
⑶软件包开发费用不断增加。
⑷软件开发技术落后。
⑸生产方式落后,仍采用手工方式。
⑹开发工具落后,生产率提高缓慢。
4﹑什么是软件工程?它目标和内容是什么?答:软件工程就是用科学的知识程和技术原理来定义,开发,维护软件的一门学科。
软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
软件工程内容:研究内容包括开发技术和开发管理两个方面。
开发技术主要研究:软件开发方法,开发过程,开发工具和环境。
开发管理主要研究:软件管理学,软件经济学,软件心理学。
5﹑软件工程面临的问题是什么?答:软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。
软件工程(钱乐秋)第03章-需求工程
内容摘要
• 需求工程概述 • 需求获取 • 需求分析、协商与建模 • 需求规约与验证 • 需求管理
软件需求包括
• 功能需求 • 性能需求 • 用户或人的因素 • 环境需求 • 界面需求 • 文档需求
– 提问和回答在汇总后应能够反映用户需求的全貌。
• 例子:“赛艇比赛成绩计算系统”的第 一次面谈的准备计划
初次与Dartchurch航行俱乐部的航行秘书(DR)接触,面谈有关 事宜。(在电话交谈时,了解到他们希望得到的是一个“价廉”的, 基于PC的系统,以用于计算赛艇比赛成绩)
时间:2005-6-5
• 数据需求 • 资源使用需求 • 安全保密要求 • 可靠性需求 • 软件成本消耗与开
发进度需求
• 其他非功能性要求
需求获取方法与策略
• 建立顺畅的通信途径 • 访谈与调查 • 观察用户操作流程 • 组成联合小组 • 用况(Use Case)
建立顺畅的通信途径
• 建立分析所需要的通信途径,以保证能 顺利地对问题进行分析。
① 在中立的地点举行由开发者和用户出席的会议; ② 建立准备和参与会议的规则; ③ 建议一个足够正式的议程以便可以进行自由的交流; ④ 一个“协调者”(他可以是用户、开发者或其他外人)
来控制会议; ⑤ 使用一种“定义机制”(它可以是工作表、图表、墙上
胶黏纸或墙板); ⑥ 目标是标识问题、提出解决方案的要素、商议不同的
需求获取
• 系统分析人员通过与用户的交流、对现有系统的 观察及对任务进行分析,确定系统或产品范围的 限制性描述、与系统或产品有关的人员及特征列 表、系统的技术环境的描述、系统功能的列表及 应用于每个需求的领域限制、一组描述不同运行 条件下系统或产品使用状况的应用场景以及为更 好地定义需求而开发的任意原型。
软件工程课后参考答案完整版
软件工程课后参考答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】第一章课后参考答案1.什么是软件危机它们有哪些典型表现为什么会出现软件危机“软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。
这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。
它们有以下表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。
出现软件危机的主要原因(1)与软件本身的特点有关(2)与软件开发和维护过程中使用的方法不正确有关2.假设自己是一家软件公司的总工程师,当把图给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”时在引入变动,当然付出的代价更高。
一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。
3.什么是软件工程它有哪些本质特征怎么用软件工程消除软件危机软件工程是指导知道计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
软件工程课后习题答案(钱乐秋版)
力; (6)财务能力: 系统分析员往往需要参与项目的招投标分析,为了保证企业的利润和客户的利益,必须进行财务核算,需要具备 会计、财务,成本计算等方面的能力; (7)司法能力: 与其他大部分行业一样,IT 行业也受到法律的约束,任何活动必须合情合理合法,任何违背法律的项目最终都会 失败,违背伦理道德的事和人最终都将失去人心。 (8)超强超快的学习能力: IT 行业新技术层出不穷,同时其他相关必备知识、业务知识也是瞬息万变,系统分析师要能够快速学习并快速掌 握和灵活应用; (9)敏锐的观察力: 由于 IT 行业项目的特殊性,项目复杂多变,系统分析师要能够先于其他人员发现问题、发现隐患,并提前做出 规避风险的策略。 3.4 列出在制定需求获取策略时的 3 种主要考虑因素。 答:(1)能否建立起顺畅的通讯途径;(2)是否能够获取用户对系统的功能需求和非功能需求;(3)是否利于在 可运行系统时的管理要求。 3.6 举例说明一个系统的 3 个不同类型的非功能需求
需求获取需求分析与协商系统建模需求规约需求验证以及需求管理六个步1需求获取在需求获取阶段系统分析人员通过与用户的交流对现有系统的观察以及对任务进行分析确定系统或产品范围的限制性描述与系统或产品有关的人员及特征列表系统的技术环境的描述系统功能的列表以及应用于每个需求的领域限制一组描述不同运行条件下系统或产品使用状况的应用场景以及为更好地定义需求而开发的原型
2
项目功能:管理邮政方面业务的监督和管理,提高邮政的服务效率。 失败原因:需求分析不足,需求内容不明确,把握不充分。
第3章
3.2 需求工程具体包括哪些步骤?每个步骤的具体任务是什么? 答:需求工程具体步骤包括:需求获取、需求分析与协商、系统建模、需求规约、需求验证以及需求管理六个步 骤。 (1)需求获取 在需求获取阶段系统分析人员通过与用户的交流、对现有系统的观察以及对任务进行分析,确定系统或产品范围 的限制性描述、与系统或产品有关的人员及特征列表、系统的技术环境的描述、系统功能的列表以及应用于每个 需求的领域限制、一组描述不同运行条件下系统或产品使用状况的应用场景以及为更好地定义需求而开发的原 型。需求获取的工作产品为进行需求分析提供了基础。 (2)需求分析与协商 此阶段的任务是对需求进行分类组织,分析每个需求与其他需求的关系以检查需求的一致性、重叠和遗漏的情况, 并根据用户的需要对需求进行排序。 (3)系统建模 系统建模是为了在用户和系统分析人员之间建立统一的语言和理解的桥梁,系统分析人员借助建模技术对获取的 需求信息进行分析,排除错误和弥补不足,确保需求分析文档正确反映用户的真实意图。 (4)需求规约 软件需求规约是分析任务的最终产物,通过建立完整的信息描述、详细的功能和行为描述、性能和设计约束的说 明、合适的验收标准,给出对目标软件的各种需求。需求规约作为用户和开发者之间的一个协议,在之后的软件 工程各个阶段发挥重要作用。 (5)需求验证 此阶段的任务是对功能的正确性、完整性和清晰性,以及其他需求给予评价,保证软件需求定义的质量。 (6)需求管理 软件需求管理是对需求工程所有相关活动的规划和控制。换句话说,需求管理就是:一种获取、组织并记录系统 需求的系统化方案,以及一个使用户与项目团队对不断变更的系统需求达成并保持一致的过程。 3.3 一个系统分析员应该具备哪些思想素质和基础知识?请说明理由。 答: (1)强烈的责任心和事业心 系统分析师由于必须保证分析的准确性,尤其是需求,所以责任更为重大。一般来说,不应以用户表述不明确, 无法得到需求,或者用户需求变化太多太快作为借口,更不能因为下面的研发技术人员技术水平不如自己而责备 研发技术人员,同时也需要能够为保证企业利益而说服公司领导做出正确的决策; (2)钻研精神 IT 行业不同于其他行业,新理念新技术新方法层出不穷,系统分析师需要能够适时适当地引进新理念新技术新方 法,为企业提高生产效率,为员工降低劳动强度,为客户提供更具竞争力和更加实用的产品和服务; (3)优秀的协商谈判能力 复杂的系统有许多项目相关的人员,他们之间的需求必定会出现冲突,协商的过程就是讨论需求,找出每个人都 满意的折衷方案。分析人员是参与这之中的重要一份子,需要协调这之中的各方利益,这就要求分析员必须要有 优秀的协商谈判能力。 (4)广泛的知识面: 除了具备基本的 IT 技能、知识外,需要广泛涉猎其他行业其他学科的知识方法,以系统工程的理念,借鉴和利 用其他行业的为 IT 行业所用,也可以把 IT 行业的理念应用到其他行业; (5)精湛的技术能力: 系统分析员往往需要分析可行性和解决研发人员的技术问题,因此必须具备广泛的技术涉猎面和较强的技术能
软件工程钱乐秋课后习题答案
软件工程钱乐秋课后习题答案软件工程是一门涉及软件开发和维护的学科,而钱乐秋老师的软件工程课程是在这个领域中被广大学生所喜爱的一门课。
在学习过程中,钱乐秋老师留给学生一些习题,以加强对知识的理解和运用。
本文将针对这些课后习题进行解答,帮助学生更好地掌握软件工程的重点内容。
1. 什么是软件工程?软件工程是一门研究如何对软件进行开发、维护和管理的学科。
它包括了软件需求分析、软件设计、软件编码、软件测试、软件维护等一系列过程。
软件工程的目标是提高软件的质量、效率和可靠性。
2. 软件开发生命周期有哪些阶段?软件开发生命周期一般包括需求分析、软件设计、编码、测试、部署和维护等阶段。
需求分析阶段确定软件的功能和性能需求;软件设计阶段设计软件的结构和算法;编码阶段将设计转化为可执行的程序;测试阶段测试软件的正确性和稳定性;部署阶段将软件安装到用户的计算机上;维护阶段解决软件中的问题并进行更新。
3. 什么是软件需求?它的分类有哪些?软件需求是指用户对软件的功能和性能方面的要求。
根据不同的角度和需求分类方法,软件需求可以分为功能需求、非功能需求和设计约束需求。
功能需求是指软件需要具备的功能或特性;非功能需求是指软件的性能、安全性、用户界面等方面的要求;设计约束需求是指软件设计和实现时需要遵循的规范和限制。
4. 什么是软件项目管理?它的重要性是什么?软件项目管理是指针对软件开发项目的组织、计划、协调和控制等活动。
它包括了项目范围管理、进度管理、风险管理、质量管理等方面的内容。
软件项目管理的重要性在于可以确保项目按时、按质量、按预算完成,同时还可以提高团队的协作效率和工作质量。
5. 什么是软件测试?为什么软件测试如此重要?软件测试是指通过运行软件来检测和评估软件的正确性、完整性和质量。
它是软件工程中非常重要的一环,因为软件测试可以发现软件中的错误和缺陷,防止错误的程序进入到用户的手中。
通过测试,可以提高软件的质量、可靠性和安全性,从而增加用户对软件的满意度。
软件工程课本习题答案
形式化方法的主要特点是:
(1)软件需求规格说明被细化为用数学记号表达的详细的形式化规格说明;
(2)设计、实现和单元测试等开辟过程由一个变换开辟过程代替。通过一系列变换将形式的规格说明细化成为程序。
2.5安装RationalRose2000/2002/2003,并练习基本操作。
缺点:RUP只是一个开辟过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容;此外,它没有支持多项目的开辟结构,这在一定程度上降低了在开辟组织内大范围实现重用的可能性。
合用范围:合用于基于构件的软件开辟。
2软件工程方法与工具
2.1软件工程的三种基本要素是什么,各自的作用是什么?
术问题,更重要的是必须有科学严格的管理。
(5)缺少有效的软件评测手段,提交给用户的软件的质量不能彻底保证。
1.5什么是软件工程?
第1章 作业参考答案
软件工程是指导计算机软件开辟和维护的工程学科。采用工程的概念、原理、技术和方法来开辟和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开辟出高质量的软件并有效地维护它,这就是软件工程。
产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面:
(1)缺乏软件开辟的经验和有关软件开辟数据的积累,使得开辟工作计划很难制定。
(2)软件人员与用户的交流存在障碍,使得获取的需求不充分或者存在错误。
(3)软件开辟过程不规范。如,没有真正了解用户的需求就开始编程序。
(4)随着软件规模的增大,其复杂性往往会呈指数级升高。需要不少人分工协作,不仅涉及技
必须做什么”这个问题。
(3)软件设计:本阶段要回答的关键问题是“目标系统如何做?”为此,必须在设计阶段中制
软件工程课后习题参考答案
软件工程课后习题参考答案1.简述软件开发的本质答: 软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。
P192.简述实施软件开发的基本途径。
答: 实施软件开发的基本途径是系统建模。
所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。
P193.简述何谓模型以及软件开发中所涉及的模型。
答: 模型是一个抽象。
该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。
软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。
4.简述软件开发所涉及的两大类技术。
答: 软件开发所涉及的两大类技术为: 一是求解软件的开发逻辑,二是求解软件的开发手段。
5、简述需求与需求规约的基本性质。
答:需求的基本性质:1) 必要的,该需求是用户所要求的。
2) 无歧义的,该需求只能用一种方式解释。
3) 可测的,该需求是可进行测试的。
4) 可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段。
5) 可测量的,该需求是可测量的。
需求规约的基本性质:1) 重要性和稳定性程度: 按需求的重要性和稳定性,对需求进行分级。
2) 可修改的: 在不过多地影响其他需求的前提下,可以容易地修改一个单一需求。
3)完整的:没有被遗漏的需求。
4)一致的:不存在互斥的需求。
6、简述软件需求的分类答:软件需求可以分为两大类:一类是功能需求,一类是非公能需求,而非公能需求可分为性能需求,外部接口需求、功能需求7、举例说明功能需求和非功能需求之间的基本关系。
答:非功能需求可作用于一个或多个功能需求,例如非功能需求可作用于一个或多个功能需求其中,非功能需求1作用于功能需求1和功能需求3等;非功能需求2作用于功能需求2等。
P248、有哪几种常用的初始需求发现技术?答:有5种常用的需求发现技术:自悟、交谈、观察、小组会和提炼。
软件工程课后习题答案
软件工程课后习题答案习题1 略。
习题2 略。
习题3 略。
习题42.在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则?人们在理解用自然语言描述的规格说明时,容易产生二义性。
为了克服非形式化方法的缺点,人们把数学引入软件开发工程,创造了基于数学的形式化说明技术。
应用形式化方法的准则:(1)应该选用释放的表示方法;(2)应该形式化,但不要过分形式化;(3)应该估算成本;(4)应该有形式化方法顾问随时提供咨询;(5)不应该放弃传统的开发方法;(6)应该建立详尽的文档;(7)不应该放弃质量标准;(8)不应该盲目依赖形式化方法;(9)应该测试、测试再测试;(10)应该重用。
4.用有穷状态机说明自动化图书馆流通系统习题5 略。
习题6 略。
习题7 略。
习题8 略。
习题91.什么是面向对象方法学?它有哪些优点?面向对象方法学,是尽可能模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识世界解决问题的方法和过程,从而使得实现解法的解空间(也称为求解域)与描述问题的问题空间(也称为问题域)在结构上尽可能一致。
优点:1.与人类习惯的思维方法一致;2.稳定性好;3.可重用性好;4.较易开发大型软件产品;5.可维护性好10.建立订货系统的用例模型。
分析如下:从对这个订货系统的需求可以知道,仓库管理员通过放在仓库中的终端把零件入库/出库市事务报告给订货系统,系统接受到事务信息之后应该处理事务;采购员需要使用订货系统提供的产生报表功能,以获取订货报表。
综上所述,用例如下:习题101.用面向对象方法分析研究本书习题2第2题中描述的储蓄系统,试建立它的对象模型、动态模型和功能模型。
对象模型参考:以上还需将关联关系说明补全。
动态模型参考:(1)脚本正常情况脚本:储户有存款要求,填写存款单,包含储户个人信息,存款金额和存款类型;业务员查收存款,审核存款与存款单存款金额吻合;存款单生效;储户有取款要求,填写取款单,包含个人账号、密码(待定)和存款金额;业务员审核存款,验证储户身份,确定储户存款金额> = 取款金额;审核通过,取款单生效;系统打印利息清单,业务员把本金和利息返回储户。
软件工程(钱乐秋版)重点
软件工程(钱乐秋版)重点概述软件工程是一门涉及软件开发和维护的学科,它使用系统化的方法和工具,以提高软件的质量、效率和可靠性。
本文将介绍软件工程的一些重点概念和技术。
软件开发生命周期需求分析:明确用户需求,定义软件开发目标。
设计阶段:确定软件结构和功能的设计方案。
编码阶段:根据设计方案,编写软件代码。
测试阶段:验证软件功能和性能,并修复错误。
部署和维护:将软件交付给用户,并提供后续支持和更新。
软件需求工程需求获取:与用户沟通,了解用户需求。
需求分析:将需求进行分类和优先级排序。
需求规格说明:清晰、详细地描述软件需求。
需求验证:验证需求是否满足用户的期望。
软件设计原则模块化:将软件分为独立的模块,每个模块专注于一个特定的功能。
高内聚低耦合:模块内部的元素紧密相关,模块之间的依赖度低。
适应变化:设计时考虑需求变化的可能性。
可重用性:设计可重用的组件,提高开发效率。
软件测试单元测试:针对软件的最小单元进行测试。
集成测试:测试不同模块之间的合作效果。
系统测试:测试整个软件系统的功能和性能。
验收测试:由用户进行的最终测试,确认软件符合要求。
软件项目管理项目计划:制定项目计划和进度安排。
项目风险管理:识别、评估和处理项目风险。
团队协作:有效地管理团队成员和资源。
质量管理:确保软件质量符合标准和用户需求。
软件质量保证代码审查:通过人工审查代码,发现和修复潜在问题。
自动化测试:使用自动化工具执行测试用例。
配置管理:管理软件配置和版本控制。
缺陷管理:记录、跟踪和解决软件缺陷。
软件工程中的常用技术敏捷开发:迭代和自适应的开发方法。
DevOps:开发和运维部门的协同工作模式。
云计算:基于云平台提供软件和服务。
大数据技术:处理和分析大规模数据集。
:利用机器学习和深度学习实现智能化功能。
软件工程是一个综合性学科,涵盖了需求分析、设计、编码、测试和维护等方面。
通过掌握软件工程的重点概念和技术,开发人员可以提高软件开发的效率和质量,满足用户的需求。
软件工程(钱乐秋)第08章 基于构件的软件开发
对可复用构件的要求
• • • • • 构件的设计应具有较高的通用程度 构件应易于调整 构件应易于组装 构件必须具有可检索性 构件必须经过充分的测试
复旦大学计算机科学与工程系 软件工程课程
20/41
创建领域构件的设计框架
• 除应遵循已有的设计概念和原则外, 还必须考虑应用领域的特征,例如:
– 标准数据:应该研究应用领域,并标识出标准的全局 数据结构(如文件结构或完整的数据库)。于是所有设 计的构件都可以用这些标准数据结构来刻画 – 标准接口协议:应该建立三个层次的接口协议:构件 内(intramodular)接口、构件外接口以及人机接口
– 程序模板:程序的结构模型可以作为新程序的体系结 构设计的模板
• COM+ • EJB:一种基于Java的构件标准
– 提供了让客户端使用远程的分布式对象的框架 – EJB规约规定了EJB构件如何与EJB容器进行行交互
11/41
复旦大学计算机科学与工程系 软件工程课程
基于构件的软件开发过程
复旦大学计算机科学与工程系 软件工程课程
12/41
领域工程步骤-1
• 领域分析:首先要进行领域分析,收集领域中有代表性 的应用样本,分析应用中的公共部分或相似部分,抽取 该领域的应用体系结构 • 建立领域特定的基准体系结构模型:在领域分析的基础 上,构造该领域的基准体系结构,这个基准体系结构应 是可以裁剪和扩充的,并可供该领域的应用复用 • 标识候选构件:在领域分析和领域基准体系结构模型的 基础上标识该领域的候选构件 • 泛化(generalization)和可变性(variability)分析:提高 其通用性,同时寻找候选构件在不同应用中的变化点 (variation point),通过设置参数、继承或其它手段, 使可变部分局部化
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程课后习题答案(钱乐秋版)
2015 给力复习加速版 小桥流水人家整理
第1章
1.1 什么是计算机软件?软件的特点是什么? 答:计算机软件指计算机系统中的程序及其文档。 软件的特点是: A 软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确得估算; B 软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大; C 软件的使用没有硬件那样的机械磨损和老化问题。 1.2 简述软件的分类,并举例说明。 答:在《计算机科学技术百科全书》中,将软件分为系统软件、支撑软件和应用软件 3 类。 A 系统软件:系统软件居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。系统软件 与具体的应用领域无关。例如:编译程序、操作系统等。 B 支撑软件:支撑软件是支撑软件的开发和维护的软件。例如:数据库管理系统、网络软件、软件工具、软件开 发环境等。 C 应用软件:应用软件是特定应用领域专用的软件。例如:工程/科学计算软件、嵌入式软件、产品线软件、Web 应用软件、人工智能软件。 1.4 什么是软件工程? 答:在《计算机科学技术百科全书》中软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。 1.5 简述软件工程的基本原则。 答:软件工程原则包括围绕工程设计、工程支持和工程管理提出的以下 4 条基本原则: 第一条:围绕适宜的开发模型; 第二条:采用合适的设计方法; 第三条:提供高质量的工程支撑; 第四条:重视软件工程的管理。 1.6 软件生存周期分哪几个阶段?分别简述各个阶段的任务。 答:软件生存周期有计算机系统工程、需求分析、设计、编码、测试、运行和维护 6 个阶段。 A 计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机系统元素之间的关系, 进行成本估算,做出进度安排,并进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行 的解决方案,并在若干个可行的解决方案中做出选择。 B 需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面等要求,生成软件需 求规约。 C 软件设计只要解决待开发软件“怎么做”的问题。软件设计通常可分为系统设计和详细设计。系统设计的任务 是设计软件系统的体系结构,包括软件系统组成成分、各成分的功能和接口、成分间的连接和通信,同时设计 全局数据结构。详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法等。 D 编码阶段的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。 E 测试阶段的任务是发现并纠正软件中的错误和缺陷。测试主要包括单元测试、集成测试、确认测试和系统测试。 F 软件完成各种测试后就可交付使用,在软件运行期间,需对投入运行的软件进行维护,即可发现了软件中潜藏 的错误或需要增加新的功能或使软件适应外界环境的变化等情况出现时,对软件进行修改。 1.9 简述各类软件过程模型的特点。 答:典型的软件过程模型有:瀑布模型、演化模型(增量模型、原型模型、螺旋模型)、喷泉模型、基于构件的 开发模型和形式方法模型等。 A 瀑布模型中,上一阶段的活动完成并经过评审后才能开始下一阶段的活动,其特征是: 接受上一阶段活动的结果作为本阶段活动的输入;
2
项目功能:管理邮政方面业务的监督和管理,提高邮政的服务效率。 失败原因:需求分析不足,需求内容不明确,把握不充分。
第3章
3.2 需求工程具体包括哪些步骤?每个步骤的具体任务是什么? 答:需求工程具体步骤包括:需求获取、需求分析与协商、系统建模、需求规约、需求验证以及需求管理六个步 骤。 (1)需求获取 在需求获取阶段系统分析人员通过与用户的交流、对现有系统的观察以及对任务进行分析,确定系统或产品范围 的限制性描述、与系统或产品有关的人员及特征列表、系统的技术环境的描述、系统功能的列表以及应用于每个 需求的领域限制、一组描述不同运行条件下系统或产品使用状况的应用场景以及为更好地定义需求而开发的原 型。需求获取的工作产品为进行需求分析提供了基础。 (2)需求分析与协商 此阶段的任务是对需求进行分类组织,分析每个需求与其他需求的关系以检查需求的一致性、重叠和遗漏的情况, 并根据用户的需要对需求进行排序。 (3)系统建模 系统建模是为了在用户和系统分析人员之间建立统一的语言和理解的桥梁,系统分析人员借助建模技术对获取的 需求信息进行分析,排除错误和弥补不足,确保需求分析文档正确反映用户的真实意图。 (4)需求规约 软件需求规约是分析任务的最终产物,通过建立完整的信息描述、详细的功能和行为描述、性能和设计约束的说 明、合适的验收标准,给出对目标软件的各种需求。需求规约作为用户和开发者之间的一个协议,在之后的软件 工程各个阶段发挥重要作用。 (5)需求验证 此阶段的任务是对功能的正确性、完整性和清晰性,以及其他需求给予评价,保证软件需求定义的质量。 (6)需求管理 软件需求管理是对需求工程所有相关活动的规划和控制。换句话说,需求管理就是:一种获取、组织并记录系统 需求的系统化方案,以及一个使用户与项目团队对不断变更的系统需求达成并保持一致的过程。 3.3 一个系统分析员应该具备哪些思想素质和基础知识?请说明理由。 答: (1)强烈的责任心和事业心 系统分析师由于必须保证分析的准确性,尤其是需求,所以责任更为重大。一般来说,不应以用户表述不明确, 无法得到需求,或者用户需求变化太多太快作为借口,更不能因为下面的研发技术人员技术水平不如自己而责备 研发技术人员,同时也需要能够为保证企业利益而说服公司领导做出正确的决策; (2)钻研精神 IT 行业不同于其他行业,新理念新技术新方法层出不穷,系统分析师需要能够适时适当地引进新理念新技术新方 法,为企业提高生产效率,为员工降低劳动强度,为客户提供更具竞争力和更加实用的产品和服务; (3)优秀的协商谈判能力 复杂的系统有许多项目相关的人员,他们之间的需求必定会出现冲突,协商的过程就是讨论需求,找出每个人都 满意的折衷方案。分析人员是参与这之中的重要一份子,需要协调这之中的各方利益,这就要求分析员必须要有 优秀的协商谈判能力。 (4)广泛的知识面: 除了具备基本的 IT 技能、知识外,需要广泛涉猎其他行业其他学科的知识方法,以系统工程的理念,借鉴和利 用其他行业的为 IT 行业所用,也可以把 IT 行业的理念应用到其他行业; (5)精湛的技术能力: 系统分析员往往需要分析可行性和解决研发人员的技术问题,因此必须具备广泛的技术涉猎面和较强的技术能
第2章
2.1 简述系统工程的任务。 答:系统工程是一个问题求解的活动,其目的是分析基于计算机的系统的功能、性能等要求,并把它们分配到基 于计算机系统的各个系统元素中,确定它们的约束条件和接口。主要任务包括:(1)识别用户要求;(2)系统建 模与模拟;(3)成本估算及进度安排;(4)可行性分析;(5)生成系统规格说明。 2.2 基于计算机的系统由哪些元素组成? 答:组成基于计算机系统的元素主要有:软件、硬件、人员、数据库、文档和规程。 2.3 简述可行性分析的任务。 答:可行性分析主要从经济、技术、法律等方面分析所给出的解决方案是否可行,能否在规定的资源和时间的约 束下完成。 (1)经济可行性主要进行成本效益分析,从经济角度,确定系统是否值得开发。包括成本、效益、货币的时间 价值、投资回收期和纯收入。 (2)技术可行性主要根据系统的功能、性能、约束条件等,分析在现有资源和技术条件下系统能否实现。技术 可行性分析通常包括风险分析、资源分析和技术分析。 (3)法律可行性主要研究系统开发过程中可能涉及到的合同、侵权、责任以及各种与法律相抵触的问题。 3.1 需求工程的重要性是什么?举出身边由于需求分析失败而造成整个项目失败的例子。 答:重要性是应用已证实有效的技术、方法进行需求分析,确定客户需求、帮助分析人员理解问题,评估可行性, 协商合理的解决方案,无歧视地规约方案,确认规约以及将规约转换到可行性的系统时的管理要求,通过合理的 工具和符号系统地描述待开发系统以及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给 予支持。因需求分析失败而造成项目失败例子如下: 项目名称:邮政资信管理系统
1
依据上一阶段活动的结果实施本阶段应完成的活动; 对本阶段的活动进行评审; 将本阶段活动的结果作为输出。 B 增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件的一个可发布的增量 版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。 C 原型方法从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。然后快速制定原型开发 的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建模型。被开发的原型应交付给客户使用, 并收集客户的反馈意见,这些反馈意见可在下一轮迭代中对原型进行改进。在前一个原型需要改进,或者需要扩 展其范围的时候,进入下一轮原型的迭代开发。 D 螺旋模型将原型模型实现的迭代特征与瀑布模型中控制的和系统化的方面结合起来,不仅体现了这两种模型的 优点而且还增加了风险分析。 E 喷泉模型是一种支持面向对象开发的过程模型。类及对象是面向对象方法中的基本成分。在分析阶段,标识类 及对象,定义类之间的关系,建立对象-关系模型和对象-行为模型。在设计阶段,从实现的角度对分析模型进行 调整和扩充。在编码阶段,用面向对象语言实现类及对象,通过消息机制实现对象之间的通信,完成软件的功能。 在面向对象方法中,分析模型和设计模型采用相同的符号表示体系,开发的各个活动没有明显的边界,各个活动 经常重复,迭代地交替进行。 F 基于构件的开发模型,基于构件的开发是指利用预先包装的构建来构造应用系统。构件可以是组织内部开发的 构建,也可以是商业化的、现存的软件构件。 G 形式化方法是建立在严格数学基础上的一种软件开发方法。软件开发的全过程中,从需求分析、规约、设计、 编程、系统集成、测试、文档生成,直至维护等各个阶段,凡是采用严格的数学语言,具有精确的数学语义的方 法,都称为形式化方法。形式化方法用严格的数学语言和语义描述功能和设计规约,通过数学的分析和推导,易 于发现需求的歧义性、不完整性和不一致性,易于对分析模型、设计模型和程序进行验证。通过数学的演算,使 得从形式化功能规约到形式化设计规约,以及从形式化设计规约到程序代码转换成为可能。