《实用软件工程》第3版
习题参考答案
习  题  1
数据库是软件吗1.5  读者认同“4种开发方法”的方法论和“五个面向”的实践论吗?为什么?
“四种开发方法”是指“面向过程的方法、面向对象的方法、面向数据的方法、形式化方法”。面向过程的方法来源于面向过程的程序设计;面向对象的方法来源于面向对象的程序设计;面向数据的方法就是面向元数据的方法,它来源于关系数据库程序设计;形式化方法来源于离散数学中的集合运算和逻辑运算。四种方法各适用于不同的场合,各有优缺点,互相促进,构成开发方法论的多极化世界。
“五个面向理论”是指“面向流程分析、面向数据设计、面向对象实现、面向功能测试、面向过程管理”,它是在综合“四种开发方法”各自的优点之后提出的软件工程实施理论,是对前者的继承与发展。总之,上述提法既精彩又实用。
1.11 什么叫软件危机?通过本章的学习,你认为应该怎样克服软件危机?
所谓软件危机,就是在软件开发和维护过程中所遇到一系列难以控制的问题。软件危机”这个专业术语的首次出现,是1968年NATO(North Atlantic Treaty Organization北约)的计算机科学家在联邦德国召开的国际学术会议上提出
为了克服软件危机,同样是在1968年,北约科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱软件危机的对策。在那次会议上第一次提出了软件工程(Software Engineering)这个专业术语当时人们的想法是:若借用建筑工程或机器制造工程的思想、标准、规范、规程去开发软件与维护软件,也许能克服软件危机。以后的实践证明:用工程的方法开发软件与维护软件是个好主意,但是要完全克服软件危机,还有许多其他工作要做。例如,将软件公司纳入CMMI的过程改进轨道,就能真正克服软件危机。
2.4  简述瀑布模型、增量模型、迭代模型、原型模型、XP等模型的优缺点。
软件开发模型比较表
序号
模 型 名 称
优    点
缺    点
适 用 范 围
1
瀑布模型
简单好学
逆转性差
面向过程开发
2
增量模型
可以分阶段提交
有时用户不同意
系统可拆卸和组装
3
迭代模型
需求可变
风险大
有高素质软件团队
4
原型模型
开发速度快
不利于创新
已有产品的原型
5
螺旋模型
需求可变
建设周期长
庞大、复杂高风险项目
6
喷泉模型
高开发效率
不利于项目的管理
面向对象开发
7
XP模型
高开发效率
不适合大团队、大项目
小团队,小项目
4.10  业界存在哪三种需求分析方法?你认为哪一种方案更好?
业界存在三种需求分析方法:面向功能分析、面向对象分析、面向数据分析。
以上这三种方法,各自适用于不同的目标系统。目前时尚的方法是面向对象,包括面向主体和面向方法。总的来说,对于系统软件和应用软件来说,面向功能需求分析的方法简单明了,而面向对象的需求分析方法则复杂抽象。对于以关系数据库为平台的信息系统软件来说,面向数据需求分析方法的特点是抓住了本质。但是,这三种分析方法都离不开面向流程分析这根总线:功能、对象、数据都是在流程中产生的,又都是为流程服务的。
4.12  为什么对需求文档要进行同行评审
同行评审,是软件工作产品验证的活动,其目的是为了及早和高效地从软件工作产品中识别并消除缺陷。重点在于发现软件工作产品中的缺陷。另外,由于进行同行评审,使大量人员对软件系统中原本不熟悉的部分更加了解,因此同行评审还提高了项目的连续性,培训了后备人员。
5.8  定义软件过程是什么含义?
所谓定义软件过程,就是根据选定的生周期模型,规定软件的开发阶段,及每一阶段的工作步骤和文档标准等内容。
5.9  软件估计是什么含义?
所谓软件估计指对软件项目进行量化估计并记录估计结果的过程。软件估计是软件度量的一部分,它既是软件策划的核心,又是软件策划的重点与难点。
习  题  6
6.1  业务模型、功能模型、数据模型各是什么含义?三者之间有什么关系?
功能模型是描述系统能做什么,即对系统的功能、性能、接口和界面进行定义。
业务模型是描述系统在何时、何地、由何角、按什么业务规则去做,以及做的步骤或流程,即对系统的操作流程进行定义。
数据模型是描述系统工作前的数据来自何处,工作中的数据存到什么地方,工作后的数据放到何处,以及这些数据之间的关联,即对系统的数据结构进行定义。
功能模型和业务模型是在需求分析时建模,是两个基本点。数据模型是一个中心,在设计时建模。功能模型和业务模型给数据模型提供数据与维护数据,数据模型支持功能模型和业务模型的正常运行。
通常,数据模型建模用PowerDesigner,ER Win或Oracle Designer工具实现;功能模型用功能点列表(或用况图)表示;业务模型用自然语言加上流程图(或顺序图)表示。
信息系统的业务模型就是系统的操作流程和业务规则,功能模型就是系统的功能菜单和用户界面,数据模型就是系统的数据结构和数据字典。
6.11  请说明“第三者插足”模式和“列变行”模式之间的关系。
“第三者插足”模式是为了解决关系的原子化问题。这里的关系原子化,是指表之间的关系都是一对多关系。“列变行”模式之间,都是为了解决实体本身的原子化问题。也就是说,是解决数据库设计符合BCF,4NF,5NF的问题。
“第三者插足”模式和“列变行”模式,是进行规范化数据库设计的两只手,我们要两手抓,两手都是硬。
7.2  为什么说“软件设计以面向元数据为主,以面向功能和面向对象为辅。而软件的编程实现则以面向对象为主,以面向元数据和面向功能为辅”?
软件设计注重宏观上框架的设计,软件实现注重微观上和框架内的设计。根据“面向流程分析、面向数据设计、面向对象实现、面向功能测试、面向过程管理的实施理论,软件设计主要方法以面向数据为主,以面向功能和面向对象为辅,重点设计数据的存储方式、加工处理方式和传输方式。而软件编程实现的主要方法则以面向对象为主,以面向数据和面向功能为辅,因为面向对象是当今的流行编程方法,它具有可复用、好维护的特性。
7.3 《概要设计说明书》和《详细设计说明书》有何区别?
《概要设计说明书》,一是要覆盖《需求规格说明书》的全部内容,二是要作为指导详细设计的依据。它注重框架上的设计,它是软件系统的总体结构设计、全局数据库(包括数据结构)设计、外部接口设计、功能部件分配设计、部件之间的内部接口设计,它要覆盖需求规格说明书中的功能点列表、性能点列表、接口列表。
《详细设计说明书》,一是要覆盖概要设计说明书的全部内容,二是要作为指导程序设计的
依据,它注重微观上和框架内的设计,它是各子系统的公用部件实现设计、专用部件实现设计、存储过程实现设计、触发器实现设计、外部接口实现设计、部门角授权设计和其他详细设计等。
两者的设计者不同,在一般情况下,《概要设计说明书》是由系统设计师负责,《详细设计说明书》则由高级程序员负责。
7.8  请说明“三层结构”与“三个模型”之间的关系。
三个模型从根本上满足了B/A/S(Browser/Application/Server)三层结构的需求:B层(又称浏览层)对应功能模型,A层(又称业务逻辑层)对应业务模型,S层(又称数据库服务器层)对应数据模型。这真是一种奇妙的、天衣无缝的巧合!
7.15  你怎样理解“面向元数据方法用在数据库服务器层次上系统的设计与实现,面向对象方法用在除数据库服务器层次之外的其他层次上系统的设计与实现,面向过程方法用在其他两种方法本身内部函数的设计与实现”?
上述提法是实事求是的。我们知道,所谓的“面向过程的方法是传统的软件工程方法,面向对
象的方法是现代软件工程方法”的观点是肤浅的。这三种方法不是互相孤立、毫无联系、彼此对立的,而是互相帮助、取长补短、彼此有关的。三种设计方法各有所长,所以各有应用空间。又各有所短,所以各有局限性。我们只能扬长避短、为我所用。
一般而言,对于一个大型信息系统的建设,由于其分析、设计、实现、测试、维护的重点是数据库服务器上的数据,所以在实施的过程中,在宏观上仍然要遵守“五个面向”的实施理论,即“面向流程分析、面向数据设计、面向对象实现、面向功能测试、面向过程管理”。
8.5  试说出几种软件测试的分类方法。
软件测试分类的实质,是软件测试技术的分类。测试工作中采用不同的测试技术,就产生了不同的测试类型,相继也产生了很多的测试类型术语,大概有以下几种。
(1) 动态测试:通过运行程序开展测试工作,即软件测试人员通过使用软件来出缺陷;
(2)静态测试:不通过运行程序来开展测试工作;
(3)黑盒测试:又叫功能测试(Functional Testing);
(4)白盒测试:可以理解为对程序执行路径的测试;
(5)通过测试:简单的说,就是验证软件至少能做什么,而不会考查其能力有多强;
(6)失败测试:纯粹是为了验证软件在某一条件下,是否会出现异常、停止工作等现象而进行的测试;
(7)负载/压力测试:一方面,可以通过减少软件需要的资源,来测试软件运行的最低配置或者最低资源需求;另一方面,可以正常提供软件需要的资源,但是通过不断加重软件要处理的任务,来测试软件在正常配置下具有的能力指标;
(8)易用性测试:易用性测试的目的很明确,即简单易用,但是标准不容易确定;
(9)其他测试:如边界值测试、兼容性测试、回归测试、Alpha测试和Beta测试等。
9.10  怎样理解“软件维护是一种面向用户提供的服务”?
在激烈的软件产品市场竞争中,同类软件产品的价格、功能、性能、接口都是不相上下的,那么用户如何选择呢?软件厂商要推销自己的产品,推销的焦点就是服务。谁的售后服务及
时、到位,谁的产品就可能占领市场。现在流行一句话:“卖软件就是卖服务”。
9.22  两层结构和三层结构的软件维护方法有什么不同?
两层结构(客户机/服务器)的软件维护方法是,将客户机和服务器上两部分软件分开维护。
三层结构(客户机/应用服务器/数据库服务器)的软件维护方法是,软件维护在系统后台服务器上借助网络运行实现,使得软件的安装与升级,不需要到用户现场进行,在互联网上就可以实现一切维护工作,对用户来说就变成了一个完全透明的过程,不用再担心光盘上的安装或软盘的损伤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。