第一章:软件工程的内容与方法
本章提示:软件工程的内容与方法这一章,特别重要。首先,因为你学习了软件工程,
最后连它的主要内容及方法都说不清楚,实在对不起自己。其次,因为这一章是原书最重要的一章,它概括了全书的基本论点与论据,而这些论点与论据是作者对软件工程的新贡献。下面是本章的习题解答:
1. 开发文档都有哪些?用图来表示它们之间的关系。
开发文档包括《目标程序》、《源程序》、《详细设计说明书》、《概要设计说明书》、《需求规格说明书》、《用户需求报告》、《软件合同》,它们之间的关系可以如图8-1所示。
目标程序 源程序 详细设计说明书 该要设计说明书 需求规格说明书 用户需求报告 软件合同 图 8-1 开发文档之间的关系
2. 说明软件工程研究的内容。
软件工程研究的内容包括软件开发方法、软件开发模型、软件支持过程和软件管理过程。其中软件开发方法的内容又涵盖市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护、版本升级。常用的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型。软件支持过程由所支持的CASE工具组成,常用的CASE工具有
PowerDesigner和Rational Rose。软件管理过程主要有CMMI、ISO9000、微软企业文化和敏捷文化
现象。
3. 请读者详细解释软件的定义和程序的定义。
软件的定义:软件 = 程序 + 数据 + 文档。这里的程序是指程序系统。这里的数据不仅包括初始化数据、测试数据,而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管
理数据中的大量决策原始记录数据。这里的文档指的是软件开发过程中的分析、设计、实现、测试、维护文档、管理文档。
现在有一种新提法正在引起关注,这种提法是:软件 = 知识 + 程序 + 数据 + 文档。 程序是计算机为完成特定任务而执行的指令的有序集合。从应用的角度可理解为: 面向过程的程序 = 算法 + 数据结构 面向对象的程序 = 对象 + 信息 面向构件的程序 = 构件 + 构架。 4. 软件工程的7条基本原理有何现实意义?
软件工程的7条基本原理是在面向过程的程序设计时代(结构化时代)提出来的,但在面向数据和面向对象的程序设计的今天,它仍然有效。并且在军事上的实时跟踪监控系统中有很好的应用,而且随着软件的开发和管理的进步,它将不断完善和充实。
请读者注意,作者在书中又新加入了第8条基本原理:软件工程中的二八定律。这是对基本原理的补充与发展。
5. 读者同意“四种开发方法”和“五个面向理论”的提法吗?为什么?
“四种开发方法”是指“面向过程的方法、面向对象的方法、面向数据的方法、形式化方法”,面向过程的方法来源于面向过程的程序设计,面向对象的方法来源于面向对象的程序设计,面向数据的方法就是面向元数据的方法,它来源于关系数据库程序设计,形式化方法来源于离散数学中的集合运算和逻辑运算。四种方法各适用于不同的场合,各有优缺点,互相促进,构成一个开发方法论的多极化世界。
“五个面向理论”是指“面向流程分析、面向数据设计、面向对象实现、面向功能测试、面向过程管理”,它是在综合“四种开发方法”各自的优点之后提出的软件工程实施理论,是对前者的继承与发展。总之,上述提法既精彩又实用。 6. 怎样理解软件工程的支持过程?
软件工程的支持过程是由支持软件生存周期各个阶段的生产工具所组成。就是说将一个软件的生存周期划分为市场调研、立项、需求分析、策划、概要设计、详细设计、编程、单位测试、集成测试、运行、维护这几个过程中,在这些过程中需要配套的工具来支持,比如需求分析工具、设计工具、实现工具、测试工具、维护工具、配置工具,开发环境等。
7. 怎样理解ISO 9000?如何用ISO 9000去管理软件企业?
ISO 9000是国际标准化组织ISO对制造行业、服务行业和软件行业(智力产品行业)制定的一套企业质量管理认证体系。ISO 9000通过其自己制定的过程管理标准,在IT行业中,它适用于网络集成中心、软件研发中心、客户服务中心及系统维护中心,从而达到管理IT企业的目的。
8. 怎样理解ISO 9000的文档体系?质量手册、程序文件、质量记录三者有何联系与区别? ISO 9000的文档体系是由三个文件构成的:质量手册、程序文件、质量记录。
质量手册是程序文件的指导方针,程序文件是质量记录的框架和模板,质量记录是程序文件中的模板的运行操作记录,它们之间是密不可分的相互联系和影响,但是又有区别,对于某个质量要素,质量手册是介绍细则,程序文件只是规定如何做,质量记录则是做完的具体记录。
9. 怎样理解“微软企业文化”现象?试比较它与ISO 9000和CMMI的各自特点。
“微软企业文化”现象,是指一个公司自己内部规定了一套严格的管理制度和文档标准,以企业文化为主,以规章制度约束为辅,经过长时间的积累、沉淀孕育出与自己公司相吻合的企业文化。
“微软企业文化”现象是自己独创的一套管理模式来管理企业,属于轻载过程管理。ISO 9000是按20多个质量要素,来管理企业运作。CMMI是按24个过程域、分阶段模型和连续模型两种方式管理来管理企业运作,属于重载过程管理。
10.怎样理解CMMI?如何用CMMI去管理软件企业?
CMMI是评估软件能力与成熟度等级的一套标准。该标准基于众多软件专家的实践经验,侧重于软件开发过程管理能力的改进与提高,是软件生产过程改善的标准和软件企业成熟度等级评估的标准。它是CMM
的继承与发展,适用于所有IT企业。
CMMI通过三个方面来管理或监视软件企业:
(1)软件组织:用它来不断改进自身的软件过程管理能力。
(2)评估机构:用它来评估某软件组织当前软件能力成熟度的级别。 (3)客户:用它来评价某承包商(软件外包商)的软件能力。 11. 怎样理解CMMI的作用与现实意义?
CMMI的形成是众多软件专家参与、建议、评审和测试的结果,是软件领域管理的智慧结晶,它为软件公司提供了使企业从低管理级别、逐步成长到高管理级别的循序渐进的方法。企业可以按照CMMI来检验软件结构的软件开发实践,明确差距,找出不足,然后加以改进。
对于一个软件企业来说,最重要的是根据企业的实际,产生适合自身发展需要的软件质量管理系统(QMS),当前软件开发中有三个因素:过程、技术和人员,它们构成了软件的铁三角。软件企业面临的是过程变更、技术进步和频繁的人员流动,因此如何处理好这些问题是企业构建QMS的核心,CMMI是实现该管理系统的一种模型,具有重大的现实意义。
12. 是否存在这样一种现象:搞系统软件的公司不需要采用CMMI和ISO 9000模式?CMMI和ISO 9000模式只适用与搞应用的企业?如果是,这是为什么?如果不是,又是为什么?
不是。因为CMMI和ISO 9000模式规定了严格的管理制度、文档和评估软件能力与成熟度等级的一套标准,它们几乎包括了所有的IT的企业,只是一些优秀的企业自己内部形成特有的企业管理文化,但是它们并不排斥CMMI和ISO 9000模式,甚至还充分肯定CMMI和ISO 9000体系。 13. 敏捷文化现象是什么意思?
敏捷文化现象是指好的开发过程应该可以在保证质量的前提下,做到文档适度、度量适度和管理适度,并且根据敏捷文化能迅速做出自我调整,实现企业效益的最大化。
14. 轻载过程改进模型(敏捷文化现象)能替代或战胜重载过程改进模型CMM/CMMI吗?
不能。因为轻载过程改进模型只适用于少于12人的项目,对个人的素质要求很高,成功的大型复杂案例并不多,它特别适合于中小型软件企业,以及中小型软件项目。而重载过程改进模型CMM/CMMI在某种程度上包容了轻载过程改进模型,它对整体的素质要求很高,适合于所有的IT企业。 15. 系统集成是什么含义?怎样看待市场上的计算机网络集成商?
系统集成是指网络环境、数据环境和程序环境(企业门户)三个方面的集成。
现在市场上的计算机网络集成商有一小部分人不懂的数据集成的重要性,其表现方式是在进行大型信息系统分析与设计时,只注重功能分析与设计,不注重元数据的分析与设计,他们的设计文档只有业务流程图、数据流程图、功能层次图,而没有关键的文档E-R图,从而导致集成度降低。 16. 软件工程与信息系统工程有何异同?
信息系统工程是软件工程的一个分支,它除了要遵守软件工程的普遍原理和方法之外,还要遵守自己的特殊原理和方法。
17. 请你总结信息系统的建设方法。
信息系统的建设方法由4方面个组成的: (1)信息系统建设的指导思想。 (2)用CASE工具进行信息系统建设。 (3)信息系统必须进行系统集成。 (4)信息系统的开发方法。
18. 对信息系统建设中的信息,一是要标准化,二是要集成化,这是为什么?
标准化是为集成化服务的,没有标准化就不能实现集成化。反过来,不进行集成化,标准化也是没有用的。所以对于信息系统来说,系统集成显得特别重要。因为一个一个的信息孤岛,既分散了信息资源,有不能发挥信息的最大价值。
19. 如何用面向数据的编程方法进行数据处理?
首先是在数据库服务器上编制存储过程和触发器,其次是用建立视图与运行视图的方法进行大量的数据统计处理,最后是指用SQL语句进行各种查询统计和报表输出。
20. 根据学过的数据库编程经验,请举出一个用创建视图的方法进行数据处理的例子。 create view j1_spj
as
select sno,sname,ssex from student where sno='s1'(条件语句)
视图(j1_spj)的创建是依据基本表(student)进行查询。当基本表中的记录符合条件语句where sno='s1'规定的条件时,就能查询出基本表中符合条件记录的学号、姓名、性别的值。 21. 怎样理解元数据?
元数据是关于数据的数据,组织数据的数据。如数据库概念设计中的实体名和属性名,数据库物理设计中的表名和字段名等都是元数据。
22. 《港口信息系统建设案例》对你有何启示?
这个案例是我了解到:对于信息系统建设来说,面向数据的方法不但简单易行、而且是行之有效的最典型案例。也懂得一个软件企业要想取得成功,一定要做到始终坚持采用同一种信息系统的开发方法、同一种关系数据库管理系统、同一种开发工具、同一个行业领域的信息系统建设,只有这样才能做到越来越熟练,并且越坚持这些方法,最后做到该行业的“老大”。
第二章:软件生存周期及开发模型
本章提示:软件生存周期及开发模型这一章篇幅不大,主要是介绍软件企业常用的四个
开发模型:瀑布模型、增量模型、迭代模型、原型模型,重点是瀑布模型,难点是迭代模型。对于其它不常用的开发模型,只是简单地提到,没有必要做进一步解释。学完这一章之后,你不但从宏观上理解了软件的开发过程,而且从微观上掌握了选取开发模型的方法。下面是本章的习题解答:
1. 为什么要选择软件开发模型?软件开发模型与软件生存周期有什么关系?
因为软件开发模型是软件工程研究的四大内容之一,它虽然不是软件工程研究的重点,但是在宏观上特别重要。软件公司的项目组在开发一个大项目或产品时,首先在技术上必须选择一个开发模型,使开发模型非常适合这个项目或产品的生存周期;随后通过对生存周期的裁减,来给出适合与本项目或产品的软件生存周期定义。
软件的开发模型与软件生存周期有关:不同的开发模型,可能对应着不同的生存周期。生存周期不同,该软件的开发阶段划分、评审次数、基线标准都有所不同,甚至维护方法都有所区别。 2. 简述瀑布模型、增量模型、迭代模型、原型模型的优缺点。
答案如表8-2所示 :
表 8-2 开发模型优缺点
序 号 1 2 3 4 模 型 名 称 瀑布模型 增量模型 迭代模型 原型模型 简单好学 可以分阶段提交 克服瀑布模型的缺点 开发速度快 优 点 缺 点 逆转性差 有时用户不同意 对开发人员要求高 不利于创新 3. 软件公司的ISO 9000或CMMI管理体系与软件开发模型有关吗?为什么?
无关。因为ISO 9000或CMMI管理体系是一种过程与质量管理模型,它是适应于任何软件开发模型的,
或者说它与任何开发模型无关。开发模型本身只是规定了软件生存周期中的若干步骤或阶段,便于开发人员去开发与维护,它并没有规定管理人员的过程管理方法与任务。为此,ISO 9000或CMMI管理体系规定采取阶段评审和不符合项的动态跟踪制度,只有前一阶段的不符合项全部改正后,才允许开发人员进入后一阶段的工作。所谓不符合项,就是在评审中发现的问题项,它与Bug既有联系,又有区别。对于这些不符号项,软件管理部门要列出表格,记录在案,确定责任人,限定改正时间,动态跟踪到底。 4.请调查一下,你周围的软件公司采用哪几种软件开发模型进行软件开发。
周围的软件公司采用的软件开发模型有瀑布模型、增量模型、迭代模型、原型模型。其中瀑布模型和原型模型是这些软件公司最常用的,其次是增量模型,最后是迭代模型。 5.软件开发模型对你今后的工作,到底具有什么指导意义?
当我们这些学生在今后进入IT企业参与软件开发或管理时,若能掌握软件开发模型,就会很快了解当前的项目或产品应该采用什么开发模型,由此确定该软件的生存周期和当前项目组的开发状态与进度,从而很快知道项目组成员的工作,也能使自己很快溶入该项目组,速适应IT企业文化,并很快进入角色。 6.你对“生存周期模型裁减指南”有什么看法?
“生存周期模型裁减指南”是IT企业或软件组织内部根据软件开发模型的普遍原则,结合本单位的开发经验和行业特点的具体实际,定制出来的。它有针对性地对选定的软件开发模型中定义的生存周期,进行恰当的裁减。所谓裁减,就是对原模型中定义的内容进行增、改、删,去掉对本单位或者本项目不适合的部分,增加对本单位或者本项目适用的内容,同时进一步细化。这样可以缩短开发时间,减少开发成本,具有非常现实的意义。
7.“图书馆信息系统”的开发选用什么模型合适?
“图书馆信息系统”的开发选用瀑布模型比较合适。因为瀑布模型开发阶段清晰,便于评审、审记、跟踪、管理和控制,而且“图书馆信息系统”在一定程度上符合瀑布模型的条件:
(1)它在开发时间内需求没有变化或很少变化。 (2)分析设计人员对应用领域很熟悉。 (3)低风险项目。
(4)用户使用环境比较稳定。
(5)用户提出需求以外,很少参与开发工作。
第三章:软件立项与合同
本章提示:软件企业最大的事情是软件立项(或签订合同),它是软件开发与管理的源
头。对于软件项目,在企业叫做立项,在非企业叫做可行性分析。可行性分析是立项的前奏,立项是可行性分析的结果。对于大型项目,在签定合同之前,还要经历一个招标与投标的过程,本章介绍了投标书的格式、制作过程和讲标方法。下面是本章的习题解答:
1.为什么说立项是一切项目的源头,也是软件项目的源头?
立项的过程就是软件企业决定是否去开发某项目或产品的过程。只有立项完成以后企业领导部门才会下达“任务书”,开发部门开始组成开发团队,成立项目组。 2.立项的具体表现形式是什么?
企业的市场销售部门在市场调研的基础上,分析该产品是否有市场前景,以及企业是否有能力开发出该产品,并具体列出系统的功能、性能、接口和运行环境等方面的需求情况,当前客户群和潜在客户群情况,以及投入产出分析,然后写出立项建议书,召开立项论证会,决定是否立项。 3.立项书的编制者为什么主要是软件公司的市场销售人员,而不是开发人员?
软件开发出来终归要推向市场的,软件能不能被市场接受是软件开发成功的标准。市场销售人员长期和市场客户打交道,他们最了解客户和市场的需求,最知道什么样的产品具有巨大商机。 4.为什么将项目的市场前景、功能、性能、接口、风险作为立项建议书的主要内容?