软件工程 原理、方法及应用(史济民第三版)答案
《软件工程》各章课后习题答案

《软件工程》各章课后习题答案软件工程是计算机科学与技术的一门重要学科,旨在研究和应用工程原则和方法来开发高质量的软件系统。
课程中的习题对于加深学生对软件工程理论和实践的理解至关重要。
下面是对《软件工程》各章课后习题的答案,希望能够帮助你更好地掌握软件工程的知识。
第一章:软件工程导论1. 软件工程的定义:答:软件工程是通过应用系统化、规范化和可量化的方法进行软件开发、运行和维护的学科。
2. 软件工程的目标:答:软件工程的目标是提高软件开发的质量、效率和可靠性,使得软件能够满足用户的需求和期望。
3. 软件生命周期模型:答:常见的软件生命周期模型包括瀑布模型、迭代模型、敏捷模型等。
每个模型都有其独特的特点和适用场景。
4. 软件过程模型:答:软件过程模型描述了软件开发过程中的一系列活动和阶段,常见的软件过程模型包括瀑布模型、迭代模型、敏捷模型等。
5. 软件工程的基本原则:答:常见的软件工程基本原则包括分阶段、逐步求精、持续集成、迭代开发、需求优先等。
第二章:软件项目管理1. 软件项目管理的定义:答:软件项目管理是指对软件开发过程中的资源、进度、质量等进行有效管理,以确保软件项目能够按时、按质地完成。
2. 软件项目管理的内容:答:软件项目管理包括项目计划、需求管理、项目进度管理、资源管理、风险管理等方面。
3. 软件项目管理的方法:答:常见的软件项目管理方法包括敏捷项目管理、水平项目管理、里程碑项目管理等。
4. 软件项目管理的工具:答:常用的软件项目管理工具包括甘特图、PERT/CPM网络图、项目管理软件等。
第三章:软件需求分析与规格说明1. 软件需求的定义:答:软件需求是指用户对软件系统的要求和期望,包括功能需求、性能需求、接口需求等方面。
2. 软件需求分析的方法:答:常用的软件需求分析方法包括面向对象分析法、数据流图法、用例分析法等。
3. 软件需求规格说明的格式:答:常见的软件需求规格说明的格式包括自然语言描述、结构化描述、图形描述等。
软件工程学第三版课后习题答案

P 0.048 0.72
789 4474263 5, (美元)
(2)如果一条指令的长度为一个字,则使存储器装满程序
共需4474263条指令。 在1985年一名程序员每天可开发出10条指令,如果每月 有20个工作日,则每人每月可开发出10×20条指令。 为了开发出4474263条指令以装满存储器,需要的工作量 是:
13:07:42 重庆工学院计算机科学与工程学院 李梁(liliang@)
2
作业及解答(第1-2章)
1-5 根据历史数据可以做出如下的假设 : 对计算机存储容量的需求大致按下面公式描述的趋势逐年 增加:M=4080e0.28(Y-1960) 存储器的价格按下面公式描述的趋势逐年下降: P1=0.3×0.72Y-1974(美分/位) 如果计算机字长为16位,则存储器价格下降的趋势为: P2=0.048×0.72Y-1974(美元/字) 在上列公式中Y代表年份,M是存储容量(字数),P1和P2代 表价格。 基于上述假设可以比较计算机硬件和软件成本的变化趋势 。要求计算:
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
17
作业及解答(第3章)
E1 储户
F1存款单 F2取款单
P0储蓄系统
F3存单 F4利息清单
E1 储户
F5存款信息 F5存款信息
D1存款信息
13:07:42
重庆工学院计算机科学与工程学院 李梁(liliang@)
18
E1 储户
F1存款单 F7密码
P1 记录存款信息
P2 打印存单 F5存款信息 F3存单 E1 储户 F4利息
F5存款信息 D1存款信息 F7密码 F2取款单
F5存款信息 P3 核算密码
软件工程-原理、方法及应用(史济民第三版)答案

软件工程-原理、方法及应用(史济民第三版)答案绪论1.什么是软件危机?为什么会产生软件危机?答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。
(1).软件维护费用急剧上升,直接威胁计算机应用的夸大。
(2).软件生产技术进步缓慢2. 什么是软件生产工程化?工程化生产方法与早期的程序设计方法主要差别在哪里?答:结构化程序设计地出现,使许多产业界认识认识到必须把软件生产从个人化方式改变为工程化。
采用工程的概念、原理、技术和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程,同时这也是工程化生产方法。
3. 分别说明(1)软件开发方法与开发工具;(2)软件技术与软件管理的相互关系。
答:(1)工具和方法,是软件开发技术的两大支柱,它们密切相关。
当一种方法提出来并证明有效后,往往随之研制出相应的工具,来帮助实现和推行这种方法。
新方法在推行初期,总有人不愿接受和采用。
若将新方法融合于工具之中,使人们通过使用工具来了解新方法,就能更快促进新方法的推广。
(2)在工业生产中,即使有先进的技术和设备,管理不善的企业也不能获得良好的效益。
软件在生产中不能按质按时完成计划,管理混乱往往是其中的重要原因。
所以对于一个理想的软件工程环境,应该同时具备技术和管理两个方面。
4.试从你的亲身实践,谈谈软件工具在软件开发中的作用。
答:用C++开发一个软件,是校园一卡通的模块。
首先,要在编辑程序支持下在计算机中输入源程序。
然后编译程序,把源程序翻译成目标程序。
如果发现错误,就重新调入编辑程序对源程序进行修改。
编译通过后,再调用连接程序吧所有通过了编译目标程序连同与之有关的程序连接起来,构成一个能在计算机上运行的可执行软件。
编译程序,编辑程序,连接程序以及支持他们的计算机操作系统,都属于软件工具。
离开这些工具,软件开发就是去了支持,变得十分困难和低效,甚至不能运行。
实用软件工程第3版习题解答-附答案

《实用软件工程》第3版习题参考答案习题 11.5 读者认同“4种开发方法”的方法论和“五个面向”的实践论吗?为什么?“四种开发方法”是指“面向过程的方法、面向对象的方法、面向数据的方法、形式化方法”。
面向过程的方法来源于面向过程的程序设计;面向对象的方法来源于面向对象的程序设计;面向数据的方法就是面向元数据的方法,它来源于关系数据库程序设计;形式化方法来源于离散数学中的集合运算和逻辑运算。
四种方法各适用于不同的场合,各有优缺点,互相促进,构成开发方法论的多极化世界。
“五个面向理论”是指“面向流程分析、面向数据设计、面向对象实现、面向功能测试、面向过程管理”,它是在综合“四种开发方法”各自的优点之后提出的软件工程实施理论,是对前者的继承与发展。
总之,上述提法既精彩又实用。
1.11 什么叫软件危机?通过本章的学习,你认为应该怎样克服软件危机?所谓软件危机,就是在软件开发和维护过程中所遇到一系列难以控制的问题。
“软件危机”这个专业术语的首次出现,是1968年NATO(North Atlantic Treaty Organization,北约)的计算机科学家,在联邦德国召开的国际学术会议上提出的。
为了克服软件危机,同样是在1968年,北约科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。
就在那次会议上,第一次提出了软件工程(Software Engineering)这个专业术语。
当时人们的想法是:若借用建筑工程或机器制造工程的思想、标准、规范、规程去开发软件与维护软件,也许能克服软件危机。
以后的实践证明:用工程的方法开发软件与维护软件是个好主意,但是要完全克服软件危机,还有许多其他工作要做。
例如,将软件公司纳入CMMI的过程改进轨道,就能真正克服软件危机。
2.4 简述瀑布模型、增量模型、迭代模型、原型模型、XP等模型的优缺点。
软件开发模型比较表4.10 业界存在哪三种需求分析方法?你认为哪一种方案更好?业界存在三种需求分析方法:面向功能分析、面向对象分析、面向数据分析。
软件工程管理分析案例教程(第三版)课后习题-答案

第一章二、判断题1、搬家属于项目。
(√)2、项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的永久性的努力。
(×)3、过程管理就是对过程进行管理,目的是要让过程能够被共享、复用,并得到持续的改进。
(√)4、项目具有临时性的特征。
(√)5、日常运作存在大量的变更管理,而项目基本保持连贯性的。
(×)6、项目开发过程中可以无限制地使用资源。
(×)三、选择题1、下列选项中不是项目与日常运作的区别的是(C)A. 项目是以目标为导向的,日常运作是通过效率和有效性体现的。
B. 项目是通过项目经理及其团队工作完成的,而日常运作是职能式的线性管理。
C.项目需要有专业知识的人来完成,而日常运作的完成无需特定专业知识。
D.项目是一次性的,日常运作是重复性的。
2、下列选项中最能体现项目的特征(C)A.运用进度计划技巧 B.整合范围与成本 C.确定期限 D.利用网络进行跟踪3、以下都是日常运作和项目的共同之处,除了(D)A.由人来做 B.受限于有限的资源 C.需要规划、执行和控制 D.都是重复性工作4、项目经理的职责不包括(D)A.开发计划 B.组织实施 C.项目控制 D.提供资金5、下列选项中属于项目的是(C)A.上课 B.社区保安 C.野餐活动 D.每天的卫生保洁6、下列选项中正确的是(C)A.一个项目具有明确的目标而且周期不限B.一个项目一旦确定就不会发生变更C.每个项目都有自己的独特性D.项目都是一次性的并由项目经理独自完成7、(B)是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。
A.过程 B.项目 C.项目群 D.组合8、(B)是一系列伴随着项目的进行而进行,目的是确保项目能够达到期望结果的一系列管理行为。
A.人力资源管理 B.项目管理 C.软件项目管理 D.需求管理9、下列活动中不是项目的是(C)A.野餐活动 B.集体婚礼 C.上课 D.开发操作系统10、下列选项中不是项目的特征的是(C)A.项目具有明确的目标B.项目具有限定的周期C.项目可以重复进行D.项目对资源成本具有约束性第二章二、判断题1、项目初始阶段甲方为软件开发方,乙方为顾客。
软件工程第三版课后习题

第一章一、判断题1.S WE B O KV3分两大类,共有15个知识域。
(Y)2.软件工程的提出起源于软件危机,其目的是最终解决软件的生产工程化。
(Y)3.软件工程学一般包括软件开发技术和软件工程管理两方面的内容,软件开发方法学和软件工程环境属于软件开发技术的内容,软件工程经济学属于软件工程管理。
(N)4.软件开发中的最大问题不是管理问题,而是技术问题。
(N)5.X P(e X t r e me P r o g r a mm i n g,极限编程)是由K e n t B e c k提出的一套针对业务需求和软件开发实践的规则,包括13个核心实践。
(Y)二、选择题1.下列所述不是敏捷生存期模型的是(C)。
A.S c r u mB.X PC.V模型D.O P E NU P2.软件工程的出现主要是由于(C)。
A.程序设计方法学的影响C.软件危机的出现B.其他工程学科的影响D.计算机的发展3.以下(C)不是软件危机的表现形式。
A.开发的软件不满足用户的需要B.开发的软件可维护性差C.开发的软件价格便宜D.开发的软件可靠性差4.以下不是S WE B O KV3的软件工程实践中的知识域的是(B)。
A.软件需求B.工程基础C.软件构造D.软件设计5.下列所述不是软件组成的是(D)。
A.程序B.数据C.界面D.文档6.下列对“计算机软件”描述正确的是(A)。
A.是计算机系统的组成部分B.不能作为商品参加交易C.是在计算机硬件设备生产过程中生产出来的D.之存在语计算机系统工作时7.软件工程方法的提出源于软件危机,其目的应该是最终解决软件的(D)问题。
A.软件危机B.质量保证C.开发效率D.生产工程化8.软件工程设计软件开发技术和项目管理等方面内容,下述内容中(D)不属于开发技术的范畴。
A.软件开发方法B.软件开发工具C.软件工程环境D.软件工程经济第二章一、判断题1.面向对象开发过程是多次重复和迭代的演化过程,(需要补充:面向对象开发方法是)在概念和表示方法是的一致性保证了各项开发活动之间的平滑过渡。
软件工程课后题答案大全(详细)

软件工程课后题答案大全(详细)软件工程课后题答案大全(详细)现代社会中,软件工程越来越重要,因为它在各个行业中扮演着关键的角色。
而在学习软件工程课程时,完成课后题是提高理解和掌握程度的重要途径。
本文将为您提供一份全面且详细的软件工程课后题答案大全,希望能够帮助您更好地学习与应用软件工程知识。
1. 什么是软件工程?软件工程是指应用系统化的、规范化的、可量化的方法来开发和维护软件的学科。
它涵盖了各种软件开发阶段,包括需求分析、设计、编码、测试和维护,并借鉴了工程学的原则和方法。
2. 软件工程的原则有哪些?软件工程遵循一系列原则来保证软件开发和维护的质量和效率,如下:- 需求管理原则:明确需求,确保项目目标的准确性和一致性。
- 分阶段原则:将软件开发过程划分为不同的阶段,有序进行。
- 风险管理原则:评估和管理项目中的风险,降低项目失败的可能性。
- 适应性原则:根据不同的项目需求和情况,选择合适的软件开发方法和工具。
- 团队合作原则:加强团队协作,促进良好的沟通和信息共享。
3. 软件生命周期有哪些阶段?软件生命周期包括需求分析、设计、编码、测试和维护等多个阶段。
- 需求分析:明确软件系统的功能和性能要求,了解用户需求。
- 设计:定义软件系统的整体结构和组件之间的关系,确定使用的技术和工具等。
- 编码:根据设计方案,将代码实现为可以执行的程序。
- 测试:验证软件系统的功能和性能是否满足需求,并进行错误修复。
- 维护:对软件进行修复和改进,确保系统的长期可用性。
4. 软件需求分析的方法有哪些?软件需求分析是保证软件项目成功的关键步骤,以下是几种常用的分析方法:- 面谈法:直接与用户沟通,了解他们的需求和期望。
- 文档分析法:研究和分析相关文档,如需求规格说明书、用户手册等。
- 原型法:创建一个初步的系统原型,供用户参观和测试,获取反馈。
- 视频录制法:录制用户正在进行的工作流程,以便更好地了解他们的需求。
5. 软件项目管理中的风险管理包括哪些步骤?风险管理是确保软件项目成功的重要环节,步骤如下:- 风险识别:识别和描述可能影响项目目标实现的风险。
软件工程课后答案完整版

软件工程课后答案完整版软件工程是一门涉及软件开发与管理的学科,它关注着如何有效地组织、设计、开发和维护软件系统。
作为一门实践性强的学科,课后答案对于学习软件工程的学生来说非常重要。
本文将以软件工程课后答案为主题,为您提供一份完整版的答案,旨在帮助您更好地理解和掌握软件工程的知识。
一、需求分析与规格说明1. 问题描述对于任何一门软件工程课程,需求分析和规格说明都是至关重要的环节。
通过合理地分析需求,可以明确软件系统的功能需求、性能需求和用户需求,从而为后续的设计和开发工作奠定基础。
在这一部分中,我们将详细讨论问题描述、需求规格说明以及软件需求规格说明的编写步骤和技巧。
2. 答案示例问题描述:某个公司需要开发一个在线购物系统,能够满足用户浏览商品、下单购买、支付、评价等功能。
需求规格说明:该系统需要具备以下功能需求:- 用户注册登录:用户可以通过注册登录系统,建立个人账号,用于后续购物操作。
- 商品浏览:用户可以浏览系统中的商品,包括商品图片、详细介绍、价格等信息。
- 购物车管理:用户可以将感兴趣的商品加入购物车,并对购物车进行管理,如增加、删除、修改商品数量等操作。
- 订单管理:用户可以在购物车中选择商品提交订单,并进行支付操作。
- 支付功能:系统需要集成常用的支付渠道,如支付宝、微信支付等,以便用户支付订单。
- 评价功能:用户在收到商品后可以对商品进行评价,并可以查看其他用户对商品的评价。
三、软件系统设计与实现1. 系统架构设计系统架构设计是软件工程中的核心环节之一,它关注着如何将系统划分为各个模块,并确定模块之间的接口和依赖关系。
在这一部分中,我们将着重讨论系统架构设计的原则、方法以及常用的架构模式。
2. 答案示例系统架构设计的主要目标是实现系统的可扩展性、灵活性和可维护性。
在本次项目中,我们采用了经典的三层架构模式,即用户界面层、业务逻辑层和数据访问层。
- 用户界面层:负责与用户进行交互操作,接收用户输入的请求,并向用户展示系统的响应结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
绪论
1.什么是软件危机?为什么会产生软件危机? 答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。 (1).软件维护费用急剧上升,直接威胁计算机应用的夸大。 (2).软件生产技术进步缓慢 2. 什么是软件生产工程化?工程化生产方法与早期的程序设计方法主要差别在哪里? 答:结构化程序设计地出现,使许多产业界认识认识到必须把软件生产从个人化方式改变为工程化。 采用工程的概念、原理、技术和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前 能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工 程,同时这也是工程化生产方法。 3. 分别说明(1)软件开发方法与开发工具; (2)软件技术与软件管理的相互关系。 答: (1)工具和方法,是软件开发技术的两大支柱,它们密切相关。当一种方法提出来并证明有效后, 往往随之研制出相应的工具,来帮助实现和推行这种方法。新方法在推行初期,总有人不愿接受和采 用。若将新方法融合于工具之中,使人们通过使用工具来了解新方法,就能更快促进新方法的推广。 (2)在工业生产中,即使有先进的技术和设备,管理不善的企业也不能获得良好的效益。 软件在生产中不能按质按时完成计划,管理混乱往往是其中的重要原因。所以对于一个理想的软件工 程环境,应该同时具备技术和管理两个方面。 4.试从你的亲身实践,谈谈软件工具在软件开发中的作用。 答:用 C++开发一个软件,是校园一卡通的模块。首先,要在编辑程序支持下在计算机中输入源程序。 然后编译程序,把源程序翻译成目标程序。如果发现错误,就重新调入编辑程序对源程序进行修改。 编译通过后,再调用连接程序吧所有通过了编译目标程序连同与之有关的程序连接起来,构成一个能 在计算机上运行的可执行软件。编译程序,编辑程序,连接程序以及支持他们的计算机操作系统,都 属于软件工具。离开这些工具,软件开发就是去了支持,变得十分困难和低效,甚至不能运行。 5.什么是软件工程环境?谈谈你对环境重要性的认识。 答:方法与工具相结合,再加上配套的软、硬件支持就形成环境。例如在批处理时代,用户开发的程 序是分批送入计算机中心的计算机的,有了错误,就得下机修改。程序员对自己写的程序只能继续地 跟踪,思路经常被迫中断,效率难于提高。分时系统的使用,使开发人员从此能在自己的终端上跟踪 程序的开发,仅此一点,就明显提高了开发的效率。 6. 何谓面向对象软件工程?简述它与传统软件工程在各型软件开发中的作用。 答:以面向对象程序设计为基础。 7. 软件按规模大小可分成哪几类?简述软件工程中各型软件开发中的作用。 答:按规模分为极小、小、中、大、甚大、极大。 (1)中小型软件:软件工程对改进软件质量,提高程序员生产率和满足用户的需求,有很大的作用。 (2)大型软件:这类软件必须从头至尾坚持软件工程的方法,严格遵守标准文档格式和正规的复审 制度,才能避免或减少混乱,真正开发出大型的软件。 8. 什么是形式化软件开发方法?实现这类开发的困难和出路在哪里? 答:它是一种基于数学的开发技术,主要采用数学的方法来描述系统的性质(例如程序变换和程序验 证等) 。形式化的方法加上自动化的开发是软件生存周期?把生存周期划分为阶段的目的是什么? 答:软件生存周期划分为计划、开发和运行 3 个时期;把整个生存周期划分为较小的阶段,给每个阶 段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件 复杂性变得交易控制和管理。 2.传统的瀑布模型把生存周期分为哪些阶段?瀑布模型软件开发有哪些特点? 答:瀑布模型在编码以前安排了分析阶段和设计阶段;阶段间具有顺序性和依赖性。 3.说明文档和复审对于软件质量的控制的作用。 答:每一阶段都要完成规定的文档,没有完成文档,就认为没有完成该阶段的任务。软件开发是许多 人共同参加的计划,完整与合格的文档,不仅是开发时期软件人员之间互相通信的媒介,也是运行时 期对软件进行维护的中要依据。每一阶段都要对已完成的文档进行复审,以便尽早发现问题,消除隐 患。愈是早期潜伏下来的故障,暴露出来的时间愈晚,排除故障需付出的代价也就愈高。及时复审是 保证软件质量,降低开发成本的重要措施。 4.什么是快速原型法?其快速表现在哪里? 答:首先建立一个能够反映用户主要需求的原型,让用户实际看一看未来系统的概貌,以便判断哪些功 能是符合需要的,哪些方面还需要改进。然后将原型改进,最终建立完全符合用户要求的新系统。它 的快速表现在能够缩短开发周期的语言和工具,能在短时间内提供出成品,但不包括成品中的细节, 然后让客户进行对比。 5.实现快速原型法的最终系统可以有几种方法?请说明并加以比较。 答:原型系统仅包括未来系统的主要功能,以及系统的重要接口。为了尽快向用户提供原型,开发原 型系统时应尽量使用能缩短开发周期的语言和工具。最终系统的形成可以采用原型废弃不用,另一方 法是补充修改模型获得最终系统。方法一不包括系统的细节。后一种方法在实际工作中,由于原型系 统使用的语言往往存在效率不高等原因,除了少数简单的事务系统外,大多数原型都废弃不用,仅把 建立原型的过程当作帮助定义软件需求的一种手段。 6.比较增量模型和螺旋模型的特点,有什么不同和相似的地方? 答:增量模型是瀑布模型的顺序特征与快速原型法的迭代特征相结合的产物。螺旋模型是一种迭代模 型,每迭代一次,螺旋线就前进一周。增量模型每个增量具有高内聚低耦合,高度的独立性。而螺旋 模型它在结合瀑布模型与快速原型的基础上还增加了风险分析。 7.为什么利用转换模型开发软件有一定难度?什么是净室软件工程? 答:从理论上说,一个正确的,满足客户需要的形式化规格说明,经过一系列正确的程序变化后,可 以确保得到这样一个形式化规格说明,目前还有较高的难度,同时,软件开发者很少具有实用形式化 方法所需的背景知识,况且,转换模型开发软件现在还很费时和昂贵!净室基本思想是力求在分析和 设计阶段就消除错误,确保正确,然后在无缺陷或“洁净”的状态下实现软件的制作。 8.哪些开发模型适用于面向对象的软件开发? 答:构件集成模型 9.比较螺旋模型和构件集成模型的异同。 答: 构件集成模型利用预先对封装好的软件构件来构造应用软件系统, 它融合了螺旋模型的很多特征, 支持软件开发的迭代方法。
软件需求分析
1.需求分析的任务是什么?怎样理解分析阶段的任务是决定“做什么” ,而不是“怎么做”? 答:需求分析主要有两个任务:第一是通过对问题及其环境的理解、分析和综合建立分析模型;第二 是在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求表达出
来。需求分析的任务就是为了明确要开发的是一个什么样的系统,而不是去怎么去实现这个系统。 2.需求分析要经过哪些步骤? 答:需求获取、需求提炼、需求描述、需求验证。 3.有哪两种主要的分析模型,它们有什么联系? 答: 面向对象分析模型、 结构化分析模型。前者是采用面向对象的思想进行软件需求分析的建模过程, 而后者模型的核心是 DD,它是设计各种数据对象的总和。他们的模型分别起到了描述数据模型,功能 模型与行为模型的作用。 4.什么是结构化分析?它的“结构化”体现在哪里? 答:是使用 DFD、DD、结构化语言、判定表和判定树等工具,来建立一种新的、称为结构化说明书的 目标文档。 5.什么是面向对象分析?其主要思想是什么? 答: OOA 面向对象的分析是采用面向对象的思想进行软件需求分析建模的过程.主要思想是采用面向对 象的思想。 6. 需求说明(或需求规格说明书)由哪些部分组成?各部分的主要内容是什么? 答:引言、信息描述、功能描述、行为描述、质量描述、接口描述、其他描述。 引言:主要叙述在文体定义阶段确定的关于软件的目标与范围,简要介绍系统背景、盖帽、软件项目 约束和按考资料等。 信息描述:给出对软件所含信息的详细描述,包括信息的内容、关系、数据流向、控制流向和结构等。 功能描述:对软件功能要求的说明,包括系统功能划分、每个功能的处理说明、限制和控制描述等。 行为描述: 包括对系统状态变化及事件和动作的描述, 据此可以检查外部事件和软件内部的控制特征。 质量描述:阐明在软件交付使用前需要进行的共更能测试和性能测试,并且规定源程序和文档应该遵 守的各种标准。 接口描述:包括系统的用户界面、硬件接口、软件接口和通信接口等的说明。 其他描述:阐述系统设计和实现上的限制,系统的假设和依赖等其他需要说明的内容。 7. 为什么 DFD 要分层?画分层 DFD 要遵循哪些原则? 答:大型复杂的软件系统,其 DFD 可能含有数百乃至数千个加工,不能设想一次就将它们全部画齐。 正确的做法是:从系统的基本模型(把整个系统看成一个加工)开始,逐层地对系统进行分解。原则: 由顶向下,逐步细化。 8. DFD 和 CFD 有什么区别? 答: 9. 什么是系统的行为模型,如何建立? 答:类对象模型所表示的是面向对象分析模型中的静态部分,而对象行为模型则用于描述系统的动态 行为,即系统如何对应外部事件---系统的行为模型。 建立一个对象行为模型一般要经历一些过程:评估所以的用例来理解系统中的交互序列;找出驱动交 互序列的事件;为每个用例创建事件轨迹;为对象创建状态转换图。 10.选一个系统(例如工资处理系统、飞机订票系统、图书馆管理系统等) ,分别用 SA 方法和 OOA 方 法对它进行分析,并给出分析模型。 答:
软件设计概述
1.传统软件工程把设计过程分成 2 步:概要设计与详细设计。试述这 2 个阶段个字主要完成的任务。 答:概要设计,包括结构设计和接口设计,并编写设计文档。详细设计,其任务是确定各个软件组件 的数据结构和操作,产生描述个软件组件的详细设计文档。
为什么大型软件设计必须分成两步走? 答:概要设计和详细设计是软件设计的两步,概要设计确定模块的划分,模块之间的调用关系,接口 等;详细设计细分模块、数据结构等;大型系统中分两步走是必要的,概要设计确定模块划分后,详 细设计可把各模块交给不同的人做详细设计,大型系统中这样的分工是比较合理的,能提高效率,做 到合理分工。 2.解释下列名词: (1)模块; (2)模块化; (3)模块化设计。 答:模块是一个拥有明确定义的 、输出和特性的程序实体。 模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每个模块完 成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求 的功能。 模块化设计是把大型软件按照规定的原则划分成一个个较小的、相对独立但又相互关联的模块。但又 相互关联的模块。 3.什么是模块独立性?用什么度量? 答:模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。 模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。 独立性可以从两个方面来度量:模块本身的内聚性(Cohesion)和模块之间的耦合(Coupling)。 4.具体说明“一个模块,一个功能”的含义,并试讨论这类模块的优点。 答: 5.什么是自顶向下设计?为什么说它尤其适用于大型软件的开发? 答:设计时首先对所设计的系统有一个全面的理解。然后从顶层开始,连续的逐层向下分解,直至系 统的所有模块都笑道便于掌握为止。 自底向上设计反映了软件规模较小的设计思想, 随着软件规模的增长, 这种方法的缺点逐渐暴露出来。 而自顶向下的设计需要进行详细的可行性论证,易于修改和扩展,整体测试较易通过。 6.自顶向下逐步细化的方法也适用于编写教材。使用这种方法说明编写一本教材的过程。 答: 7.输入三角形的 3 条边长(假定这些边确实能组成一个三角形) ,用它们来鉴别三角形的性质(等腰、 等边、任意或者直角) ,并输出结果。试用逐步细化的方法设计这一程序,并用结构化语言(汉语或 英语)写出细化过程中每一步的过程描述。 答: 8.比较概要设计复审和过程设计复审的评审内容,并说明他们采取的复审方式有何异同。 答:概要设计复审的重点放在系统的总体结构、模块划分、内外结构等方面。例如软件结构是否满足 需求?结构形态是否合理?层次是否清晰?模块的划分是不是符合优化原则?系统的人机界面、内外 部接口、以及出错处理是不是合理等。 过程设计复审的重点放在模块的具体设计上。例如模块设计能否满足其功能与性能要求?选择算法与 数据结构是否合理,是否符合编程语言的特点?设计描述简单、清晰等。 概要设计复审常用的复审方式是正式复审。