《实用软件工程》的课后习题答案_第1页
《实用软件工程》的课后习题答案_第2页
《实用软件工程》的课后习题答案_第3页
《实用软件工程》的课后习题答案_第4页
《实用软件工程》的课后习题答案_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

第一章1.0什么叫软件危机?怎样克服软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。(2)软件产品的质量往往靠不住。(3)一般软件很难维护。(4)软件生产效率很低。(5)软件开发成本越来越大。(6)软件成本与开发进度难以估计。(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。克服:1)充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。(2)推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。(3)根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。1.0什么叫软件危机?怎样克服软件危机?软件危机softwarecrisis落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。软件工程诞生于60年代末期,它作为一个新兴的工程学科,主要研究软件生产的客观规律性,建立与系统化软件生产有关的概念、原则、方法、技术和工具,指导和支持软件系统的生产活动,以期达到降低软件生产成本、改进软件产品质量、提高软件生产率水平的目标。软件工程学从硬件工程和其他人类工程中吸收了许多成功的经验,明确提出了软件生命周期的模型,发展了许多软件开发与维护阶段适用的技术和方法,并应用于软件工程实践,取得良好的效果。在软件开发过程中人们开始研制和使用软件工具,用以辅助进行软件项目管理与技术生产,人们还将软件生命周期各阶段使用的软件工具有机地集合成为一个整体,形成能够连续支持软件开发与维护全过程的集成化软件支援环境,以期从管理和技术两方面解决软件危机问题。此外,人工智能与软件工程的结合成为80年代末期活跃的研究领域。基于程序变换、自动生成和可重用软件等软件新技术研究也已取得一定的进展,把程序设计自动化的进程向前推进一步。在软件工程理论的指导下,发达国家已经建立起较为完备的软件工业化生产体系,形成了强大的软件生产能力。软件标准化与可重用性得到了工业界的高度重视,在避免重用劳动,缓解软件危机方面起到了重要作用。1.开发文档都有哪些?用图来表示它们之间的关系。开发文档包括《目标程序》、《源程序》、《详细设计说明书》、《概要设计说明书》、《需求规格说明书》、《用户需求报告》、《软件合同》,它们之间的关系可以如图8-1所示。目标程序目标程序源程序详细设计说明书该要设计说明书需求规格说明书用户需求报告软件合同图8-1开发文档之间的关系2.说明软件工程研究的内容。软件工程研究的内容包括软件开发方法、软件开发模型、软件支持过程和软件管理过程。其中软件开发方法的内容又涵盖市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护、版本升级。常用的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型。软件支持过程由所支持的CASE工具组成,常用的CASE工具有PowerDesigner和RationalRose。软件管理过程主要有CMMI、ISO9000、微软企业文化和敏捷文化现象。3.请读者详细解释软件的定义和程序的定义。软件的定义:软件=程序+数据+文档。这里的程序是指程序系统。这里的数据不仅包括初始化数据、测试数据,而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管理数据中的大量决策原始记录数据。这里的文档指的是软件开发过程中的分析、设计、实现、测试、维护文档、管理文档。现在有一种新提法正在引起关注,这种提法是:软件=知识+程序+数据+文档。程序是计算机为完成特定任务而执行的指令的有序集合。从应用的角度可理解为:面向过程的程序=算法+数据结构面向对象的程序=对象+信息面向构件的程序=构件+构架。4.软件工程的7条基本原理有何现实意义?软件工程的7条基本原理是在面向过程的程序设计时代(结构化时代)提出来的,但在面向数据和面向对象的程序设计的今天,它仍然有效。并且在军事上的实时跟踪监控系统中有很好的应用,而且随着软件的开发和管理的进步,它将不断完善和充实。请读者注意,作者在书中又新加入了第8条基本原理:软件工程中的二八定律。这是对基本原理的补充与发展。5.读者同意“四种开发方法”和“五个面向理论”的提法吗?为什么?“四种开发方法”是指“面向过程的方法、面向对象的方法、面向数据的方法、形式化方法”,面向过程的方法来源于面向过程的程序设计,面向对象的方法来源于面向对象的程序设计,面向数据的方法就是面向元数据的方法,它来源于关系数据库程序设计,形式化方法来源于离散数学中的集合运算和逻辑运算。四种方法各适用于不同的场合,各有优缺点,互相促进,构成一个开发方法论的多极化世界。“五个面向理论”是指“面向流程分析、面向数据设计、面向对象实现、面向功能测试、面向过程管理”,它是在综合“四种开发方法”各自的优点之后提出的软件工程实施理论,是对前者的继承与发展。总之,上述提法既精彩又实用。6.怎样理解软件工程的支持过程?软件工程的支持过程是由支持软件生存周期各个阶段的生产工具所组成。就是说将一个软件的生存周期划分为市场调研、立项、需求分析、策划、概要设计、详细设计、编程、单位测试、集成测试、运行、维护这几个过程中,在这些过程中需要配套的工具来支持,比如需求分析工具、设计工具、实现工具、测试工具、维护工具、配置工具,开发环境等。7.怎样理解ISO9000?如何用ISO9000去管理软件企业?ISO9000是国际标准化组织ISO对制造行业、服务行业和软件行业(智力产品行业)制定的一套企业质量管理认证体系。ISO9000通过其自己制定的过程管理标准,在IT行业中,它适用于网络集成中心、软件研发中心、客户服务中心及系统维护中心,从而达到管理IT企业的目的。8.怎样理解ISO9000的文档体系?质量手册、程序文件、质量记录三者有何联系与区别?ISO9000的文档体系是由三个文件构成的:质量手册、程序文件、质量记录。质量手册是程序文件的指导方针,程序文件是质量记录的框架和模板,质量记录是程序文件中的模板的运行操作记录,它们之间是密不可分的相互联系和影响,但是又有区别,对于某个质量要素,质量手册是介绍细则,程序文件只是规定如何做,质量记录则是做完的具体记录。9.怎样理解“微软企业文化”现象?试比较它与ISO9000和CMMI的各自特点。“微软企业文化”现象,是指一个公司自己内部规定了一套严格的管理制度和文档标准,以企业文化为主,以规章制度约束为辅,经过长时间的积累、沉淀孕育出与自己公司相吻合的企业文化。“微软企业文化”现象是自己独创的一套管理模式来管理企业,属于轻载过程管理。ISO9000是按20多个质量要素,来管理企业运作。CMMI是按24个过程域、分阶段模型和连续模型两种方式管理来管理企业运作,属于重载过程管理。10.怎样理解CMMI?如何用CMMI去管理软件企业?CMMI是评估软件能力与成熟度等级的一套标准。该标准基于众多软件专家的实践经验,侧重于软件开发过程管理能力的改进与提高,是软件生产过程改善的标准和软件企业成熟度等级评估的标准。它是CMM的继承与发展,适用于所有IT企业。CMMI通过三个方面来管理或监视软件企业:(1)软件组织:用它来不断改进自身的软件过程管理能力。(2)评估机构:用它来评估某软件组织当前软件能力成熟度的级别。(3)客户:用它来评价某承包商(软件外包商)的软件能力。11.怎样理解CMMI的作用与现实意义?CMMI的形成是众多软件专家参与、建议、评审和测试的结果,是软件领域管理的智慧结晶,它为软件公司提供了使企业从低管理级别、逐步成长到高管理级别的循序渐进的方法。企业可以按照CMMI来检验软件结构的软件开发实践,明确差距,找出不足,然后加以改进。对于一个软件企业来说,最重要的是根据企业的实际,产生适合自身发展需要的软件质量管理系统(QMS),当前软件开发中有三个因素:过程、技术和人员,它们构成了软件的铁三角。软件企业面临的是过程变更、技术进步和频繁的人员流动,因此如何处理好这些问题是企业构建QMS的核心,CMMI是实现该管理系统的一种模型,具有重大的现实意义。12.是否存在这样一种现象:搞系统软件的公司不需要采用CMMI和ISO9000模式?CMMI和ISO9000模式只适用与搞应用的企业?如果是,这是为什么?如果不是,又是为什么?不是。因为CMMI和ISO9000模式规定了严格的管理制度、文档和评估软件能力与成熟度等级的一套标准,它们几乎包括了所有的IT的企业,只是一些优秀的企业自己内部形成特有的企业管理文化,但是它们并不排斥CMMI和ISO9000模式,甚至还充分肯定CMMI和ISO9000体系。13.敏捷文化现象是什么意思?敏捷文化现象是指好的开发过程应该可以在保证质量的前提下,做到文档适度、度量适度和管理适度,并且根据敏捷文化能迅速做出自我调整,实现企业效益的最大化。14.轻载过程改进模型(敏捷文化现象)能替代或战胜重载过程改进模型CMM/CMMI吗?不能。因为轻载过程改进模型只适用于少于12人的项目,对个人的素质要求很高,成功的大型复杂案例并不多,它特别适合于中小型软件企业,以及中小型软件项目。而重载过程改进模型CMM/CMMI在某种程度上包容了轻载过程改进模型,它对整体的素质要求很高,适合于所有的IT企业。15.系统集成是什么含义?怎样看待市场上的计算机网络集成商?系统集成是指网络环境、数据环境和程序环境(企业门户)三个方面的集成。现在市场上的计算机网络集成商有一小部分人不懂的数据集成的重要性,其表现方式是在进行大型信息系统分析与设计时,只注重功能分析与设计,不注重元数据的分析与设计,他们的设计文档只有业务流程图、数据流程图、功能层次图,而没有关键的文档E-R图,从而导致集成度降低。16.软件工程与信息系统工程有何异同?信息系统工程是软件工程的一个分支,它除了要遵守软件工程的普遍原理和方法之外,还要遵守自己的特殊原理和方法。17.请你总结信息系统的建设方法。信息系统的建设方法由4方面个组成的:(1)信息系统建设的指导思想。(2)用CASE工具进行信息系统建设。(3)信息系统必须进行系统集成。(4)信息系统的开发方法。18.对信息系统建设中的信息,一是要标准化,二是要集成化,这是为什么?标准化是为集成化服务的,没有标准化就不能实现集成化。反过来,不进行集成化,标准化也是没有用的。所以对于信息系统来说,系统集成显得特别重要。因为一个一个的信息孤岛,既分散了信息资源,有不能发挥信息的最大价值。19.如何用面向数据的编程方法进行数据处理?首先是在数据库服务器上编制存储过程和触发器,其次是用建立视图与运行视图的方法进行大量的数据统计处理,最后是指用SQL语句进行各种查询统计和报表输出。20.根据学过的数据库编程经验,请举出一个用创建视图的方法进行数据处理的例子。createviewj1_spjasselectsno,sname,ssexfromstudentwheresno='s1'(条件语句)视图(j1_spj)的创建是依据基本表(student)进行查询。当基本表中的记录符合条件语句wheresno='s1'规定的条件时,就能查询出基本表中符合条件记录的学号、姓名、性别的值。21.怎样理解元数据?元数据是关于数据的数据,组织数据的数据。如数据库概念设计中的实体名和属性名,数据库物理设计中的表名和字段名等都是元数据。.《港口信息系统建设案例》对你有何启示?这个案例是我了解到:对于信息系统建设来说,面向数据的方法不但简单易行、而且是行之有效的最典型案例。也懂得一个软件企业要想取得成功,一定要做到始终坚持采用同一种信息系统的开发方法、同一种关系数据库管理系统、同一种开发工具、同一个行业领域的信息系统建设,只有这样才能做到越来越熟练,并且越坚持这些方法,最后做到该行业的“老大”。1.21《港口信息系统建设案例》对你有何启示?(1)自始至终坚持采用“面向元数据的方法”不动摇。即坚持面向元数据分析、面向元数据设计、面向元数据实现、面向元数据测试、面向元数据维护。(2)自始至终坚持采用Oracle关系数据库管理系统不动摇。客观地说,建设大型信息系统,Oracle数据库具有稳定可靠的强大功能和优秀性能。(3)自始至终坚持采用CASE工具不动摇。这些工具包括设计工具PowerDesigner和实现工具Developer2000,它们都是面向元数据的开发工具。(4)自始至终坚持港口信息系统建设不动摇。要做行业ERP,就必须熟悉并精通该行业的业务流程和规则,长期坚持某一行业的方向不动摇,才能做该行业领域的业务专家,才能与时俱进地把握该行业领域的客户需求。1.22请你解释下列名词:开发文档、管理文档、初始化数据、元数据、过程、过程改进。开发文档是指软件开发过程中的分析、设计、实现、测试、维护文档。管理文档是软件管理中产生的各种文档,被称作“管理制品”。初始化数据就是在定义时给它一个有效值以说明它的内容和数据类型。元数据是软件系统中关于数据的数据、组织数据的数据。软件工程中的过程,是指软件生存周期中的时间序列。软件过程改进:为了更有效的达到优化软件过程的目的而实施的改善或改变其软件过程的系列活动。第二章1.为什么要选择软件开发模型?软件开发模型与软件生存周期有什么关系?因为软件开发模型是软件工程研究的四大内容之一,它虽然不是软件工程研究的重点,但是在宏观上特别重要。软件公司的项目组在开发一个大项目或产品时,首先在技术上必须选择一个开发模型,使开发模型非常适合这个项目或产品的生存周期;随后通过对生存周期的裁减,来给出适合与本项目或产品的软件生存周期定义。软件的开发模型与软件生存周期有关:不同的开发模型,可能对应着不同的生存周期。生存周期不同,该软件的开发阶段划分、评审次数、基线标准都有所不同,甚至维护方法都有所区别。2.简述瀑布模型、增量模型、迭代模型、原型模型的优缺点。答案如表8-2所示:表8-2开发模型优缺点序号模型名称优点缺点1瀑布模型简单好学逆转性差2增量模型可以分阶段提交有时用户不同意3迭代模型克服瀑布模型的缺点对开发人员要求高4原型模型开发速度快不利于创新3.软件公司的ISO9000或CMMI管理体系与软件开发模型有关吗?为什么?无关。因为ISO9000或CMMI管理体系是一种过程与质量管理模型,它是适应于任何软件开发模型的,或者说它与任何开发模型无关。开发模型本身只是规定了软件生存周期中的若干步骤或阶段,便于开发人员去开发与维护,它并没有规定管理人员的过程管理方法与任务。为此,ISO9000或CMMI管理体系规定采取阶段评审和不符合项的动态跟踪制度,只有前一阶段的不符合项全部改正后,才允许开发人员进入后一阶段的工作。所谓不符合项,就是在评审中发现的问题项,它与Bug既有联系,又有区别。对于这些不符号项,软件管理部门要列出表格,记录在案,确定责任人,限定改正时间,动态跟踪到底。4.请调查一下,你周围的软件公司采用哪几种软件开发模型进行软件开发。周围的软件公司采用的软件开发模型有瀑布模型、增量模型、迭代模型、原型模型。其中瀑布模型和原型模型是这些软件公司最常用的,其次是增量模型,最后是迭代模型。5.软件开发模型对你今后的工作,到底具有什么指导意义?当我们这些学生在今后进入IT企业参与软件开发或管理时,若能掌握软件开发模型,就会很快了解当前的项目或产品应该采用什么开发模型,由此确定该软件的生存周期和当前项目组的开发状态与进度,从而很快知道项目组成员的工作,也能使自己很快溶入该项目组,速适应IT企业文化,并很快进入角色。6.你对“生存周期模型裁减指南”有什么看法?“生存周期模型裁减指南”是IT企业或软件组织内部根据软件开发模型的普遍原则,结合本单位的开发经验和行业特点的具体实际,定制出来的。它有针对性地对选定的软件开发模型中定义的生存周期,进行恰当的裁减。所谓裁减,就是对原模型中定义的内容进行增、改、删,去掉对本单位或者本项目不适合的部分,增加对本单位或者本项目适用的内容,同时进一步细化。这样可以缩短开发时间,减少开发成本,具有非常现实的意义。7.“图书馆信息系统”的开发选用什么模型合适?“图书馆信息系统”的开发选用瀑布模型比较合适。因为瀑布模型开发阶段清晰,便于评审、审记、跟踪、管理和控制,而且“图书馆信息系统”在一定程度上符合瀑布模型的条件:(1)它在开发时间内需求没有变化或很少变化。(2)分析设计人员对应用领域很熟悉。(3)低风险项目。(4)用户使用环境比较稳定。(5)用户提出需求以外,很少参与开发工作。第三章1.为什么说立项是一切项目的源头,也是软件项目的源头?立项的过程就是软件企业决定是否去开发某项目或产品的过程。只有立项完成以后企业领导部门才会下达“任务书”,开发部门开始组成开发团队,成立项目组。2.立项的具体表现形式是什么?企业的市场销售部门在市场调研的基础上,分析该产品是否有市场前景,以及企业是否有能力开发出该产品,并具体列出系统的功能、性能、接口和运行环境等方面的需求情况,当前客户群和潜在客户群情况,以及投入产出分析,然后写出立项建议书,召开立项论证会,决定是否立项。3.立项书的编制者为什么主要是软件公司的市场销售人员,而不是开发人员?软件开发出来终归要推向市场的,软件能不能被市场接受是软件开发成功的标准。市场销售人员长期和市场客户打交道,他们最了解客户和市场的需求,最知道什么样的产品具有巨大商机。4.为什么将项目的市场前景、功能、性能、接口、风险作为立项建议书的主要内容?一切软件项目或软件产品,都是为了实现用户需求中的“功能、性能、接口”三项具体目标。软件是否有市场前景,是软件开发是否成功的标志,有了市场软件才能带来利润。风险分析是对开发此软件的政策风险、环境风险、技术风险、技能风险等进行分析,这对公司能否按时保质保量的完成软件开发,是必不可少的。5.什么叫风险分析?技能风险和技术风险有何区别?这里的风险分析是指软件立项过程中对产品开发、销售等可能出现的风险进行分析。分析方法就是将一个大风险化解好多个小风险,然后一个个克服小风险。技术风险是指采用新技术的风险程度。技能风险是指项目组成员掌握新技术的风险程度。二者的区别在于一个是说新技术(如新的开发工具,新的设计思想)本身的风险,一个是说人员要掌握这种新技术的风险。6.行业领域业务专家与产品经理有何同异?行业领域业务专家是精通某行业领域业务的人,在讲标时能把投标书的内容准确、生动表述出来,使客户心服口服。而产品经理是某产品需求分析和概要设计的经理或专家,主要负责产品的立项、需求、设计和销售等业务。两者的相同点是:必须精通该产品的功能、性能和接口。不同点是:前者突出熟悉产品的应用业务领域,后者突出熟悉产品的需求与设计。7.合同、任务书、立项建议书三者有何异同?有何关系?合同是与固定客户签定的协议书,签定合同后软件公司启动该项目的开发,该软件被称为“定单软件”。立项建议书是对应“非定单软件”而言的,是相关人员对立项过程的书面描述。任务书是企业决定开发某软件时,对此任务的具体部署情况,以书面的形式表达出来,包括正文和附件。只有立项或合同签定以后才能下达任务书,三者都是软件开发的源头。8.下达任务的时间和方法是什么?满足以下三个条件中的任意一个,即可下达任务书:(1)、企业已签定了项目《合同》。(2)、《立项建议书》已通过了评审。(3)、作为特殊情况,软件组织的上级下达了某项目的指令性软件开发计划。例如,有跨组织、跨部门的某个大系统项目,软件的需求由它的系统总体设计组分配。下达任务的方法是:(1)、下达一分《任务书》的正文。包括任务的下达对象、内容、要求完成的日期、决定投入的资源、必要时包括任命项目经理(技术经理和产品经理)、其他保证措施、奖惩措施等。《任务书》的正文可长可短,若合同或立项建议书很详细,则正文可短。若合同或立项建议书很粗很短,则正文应该详细,当然也应该很长。(2)、下达一份《任务书》的附件。一般情况下它就是软件《合同》或《立项建议书》,如果是指令性计划,它的格式和内容,也应与《合同》或《立项建议书》基本相同,即附件的内容应覆盖系统的功能点列表、性能点列表、借口列表、资源需求列表、开发进度列表、阶段评审列表等。第四章1.为什么需求分析特别重要?需求分析特别重要,是因为:(1)许多大型应用系统的失败,最后均归结到需求分析:要么获取需求的方法不当,使得需求分析不到位或不彻底,导致开发者反复多次地进行需求分析,致使设计、编码、测试无法顺利进行;要么客户配合不好,导致客户对需求不确认,或客户需求不断变化,同样致使设计、编码、测试无法顺利进行。(2)需求分析的输出文档是《用户需求报告》,它既是软件生存周期中的第一个里程碑,又是客户、软件开发人员和项目管理人员三者必须遵守的一根基线,是三者共同工作的基础,是项目Alpha测试和Beta测试的准则,是供方交付产品和需方验收产品的依据。(3)需求分析要占用整个软件开发时间或工作量的30%左右。(4)需求获取中的错误,属于软件开发中的早期错误,它会在后续的设计和实现中进行发散式的传播。根据以上四项原因,IT企业的高层经理,对需求分析特别重视,常常派经验最丰富的人员去作项目需求。正因为如此,“系统分析员”才是软件行业中的最高技术职称。2.需求分析的目的是什么?需求分析的难点在哪里?软件需求分析,其目的是用于说明软件产品或软件项目需要满足的条件和限制。在软件工程项目中首先要获取用户的需求,通过对软件需要的提取、分析、文档化以及验证,为进一步的设计和实现提供依据。需求分析的难点是:在系统的功能、性能和接口方面,开发者与客户达成完全一致的需求,让客户最终签字确认,并保证在项目验收前,需求相对稳定不变。万一需求有点变化,双方必须履行“需求变更管理程序”,而变更管理程序在签订合同时已经做了规定。要知道,合同是具有法律效力的。3.需求分析的理论基础有哪几条?需求分析的理论基础有:什么是软件需求;软件需求需要量化;需求是一个过程;需求过程中的角色;需求过程是一个迭代的过程;需求来源等6条理论基础。4.为什么说需求分析是面向流程的?系统的功能、性能、接口、界面都是在流程中动态实时的反映出来。在所有的流程(物流、人流、资金流、信息流、单据流、报表流、数据流)中,数据流最重要,也最具有代表性。因为在计算机网络系统内,一切流程都表现为数据流,或者说是数据流在不同方向的投影。而流程是动态的、实时的。所以说,需求分析是面向流程的。5.需求分析的基本思路是什么?需求分析的思路,是从用户的功能需求(系统需要做什么)出发,由系统的业务流程和数据流程导出系统的业务模型和功能模型,识别出系统的元数据和中间数据,为今后设计数据模型做好成分准备。同时,对系统的软、硬件环境配置、开发工具、开发工期、费用、开发进度、培训、系统风险进行评估。6.解释术语:元数据、实体、中间数据。元数据是组织数据的数据,描述数据的数据,关于数据的数据。实体(指实体集或实体型),是一组相关元数据的集合。中间数据是组织统计数据的数据,描述统计数据的数据,关于统计数据的数据。7.为什么说元数据的分析与识别是需求分析的议题之一?元数据是组织数据的数据,描述数据的数据,关于数据的数据。通俗地讲,元数据就是信息系统中实体名及其属性名的集合,或者说就是基表的表名与字段名的集合。由于信息系统的设计与实现,都是面向元数据的,所以说元数据的分析与识别是需求分析的议题之一。元数据分析的出发点是业务模型和功能模型,落脚点是系统中的实体及其属性,是企事业单位的数据模型中的所有元素。8.元数据与中间数据之间,有什么关系?请举例说明。元数据与中间数据间的关系是一种因果关系。元数据对应原始单据,中间数据对应查询、统计、报表。元数据将原始单据中录入的数据组织起来变成基表中的记录。这些记录称为基础数据。中间数据将输出数据组织起来变成中间表中的记录,这些记录称为统计数据。中间表中的记录是由基表中的记录派生(推导、加工、处理)出来的,为了简单起见,我们说“中间数据是由元数据派生出来的”。例如,人力资源系统中的员工基本情况表中的“姓名、性别、出生日期、文化程度、毕业学校、身份证号”等等是元数据,而通过统计后得出的软件开发部1980年以后出生的人员情况表中的“姓名、性别、文化程度、毕业学校”,它们是中间数据。9.业界存在哪三种需求分析方法?您认为哪一种更好?业界存在三种需求分析方法:面向功能分析、面向对象分析、面向数据分析。以上这三种方法,各自适用于不同的目标系统。目前时尚的方法是面向对象,包括面向主体和面向方面。总的来说,对于系统软件和应用软件来说,面向功能需求分析的方法简单明了,而面向对象的需求分析方法则复杂抽象。对于以关系数据库为平台的信息系统软件来说,面向数据需求分析的方法的特点是抓住了本质。但是,这三种分析方法都离不开面向流程分析这根总线:功能、对象、数据都是在流程中产生的,又都是为流程服务的。10.需求管理过程的目标和内容是什么?需求管理的目标,是保证软件项目或产品满足客户在软件功能、性能、接口三个方面的需求。需求管理过程的内容,主要包括需求确认、需求评审、需求追踪和需求变更活动管理。11.为什么对需求文档要进行同行评审?同行评审,是软件工作产品验证的活动,其目的是为了及早和高效地从软件工作产品中识别并消除缺陷。重点在于发现软件工作产品中的缺陷。另外,由于进行同行评审,使大量人员对软件系统中原本不熟悉的部分更加了解。因此,同行评审还提高了项目的连续性,培训了后备人员。12.用户需求报告与需求规格说明书有何差异?(1)用户需求报告是对外的,需求规格说明书是对内的。用户需求报告是站在用户(使用者)的角度、用他们可以看懂的语言(比如自然语言)写的,需要用户签字确认。需求规格说明书则不同,它是对内的,不需要用户签字确认。它是站在开发者的角度、可以采用形式化或半形式化的语言进行描述。(2)一般来说,用户需求报告是合同的产物,需求规格说明书是立项建议书的产物。用户需求报告是对合同而言的。需求规格说明书是对立项建议书而言的。(3)由用户需求报告可产生需求规格说明书。签完合同后,一般是先书写出用户需求报告,后书写出需求规格说明书。当需求报告用户签字确认后,需求规格说明书很快就出来了。13.怎么理解“不符合项”?为什么要对它进行跟踪管理?不符合项是指没有满足要求的项,不一定是错误,跟Bug是不同的。跟踪的意思在于,获得需求目前的实现状态,确保用户所有的需求都得到满足。可靠的跟踪信息可为需求变更、系统维护、关键成员离开、系统再设计和类似系统设计等很多方面,提供参考和指导,并可以减少风险和提高项目成功率。14.为什么说“只考虑目标系统是什么、而不考虑目标系统怎么做的需求分析观点,是片面的,表面的,不可取的”?因为有些需求分析问题,在需求分析阶段开发者感觉不出来,到了设计阶段才会感觉出来,此时才发现设计的资料不够、条件缺少,即需求没有完全到位,需要做第二次需求分析。所以说,“只考虑目标系统是什么、而不考虑目标系统怎么做的需求分析观点,是片面的,表面的,不可取的”。从这一点看,需求分析过程是一个迭代过程。15.需求描述有哪几种工具?你喜欢哪一种?为什么?需求描述的工具包括数据流图、业务流程图、用况图、时序图、用户交互图、数据模型图和功能需求列表、性能需求列表、接口需求列表、界面需求列表等。选择哪一种描述工具,主要取决于问题域的本质特征。不同的软件,对分析要求的严格程度不同。我喜欢业务流程图,它包括了物流、资金流、信息流、即业务操作模型,重点是业务操作的流水步骤,业务模型表示了与系统有关的人、设备、其他子系统之间的业务关系和费用关系,它是经过业务流程重组、再创和优化后,并且得到企业领导确认的业务流程图。绘制这个图的工具可以是Office办公软件。第五章1.为什么说计划只是策划的一个结果?软件策划,或者软件计划,英文都是Planning。但是,策划包含有出谋划策和做计划两个意思,策划是一个过程,是一系列活动。计划是一份文档,是一个结果。所以说,计划只是策划的一个主要结果或成果。2.简述软件策划的步骤?软件策划共分4个步骤,如表8-3所示。表8-3软件策划的4个步骤步骤步骤名称步骤内容1估计软件工作产品的规模、工作量、费用及所需的资源软件工作产品,包括需求规格说明书,概要设计说明书,详细设计说明书,源代码,测试计划和测试报告,质量保证计划,软件配置管理计划,里程碑及评审计划。每个工作产品所需的工作量(人年)、费用及其所需的其他资源,都要量化2制定时间表包括开发进度时间表和日历进度时间表:软件开发计划、质量保证计划、软件配置管理计划、测试计划、评审计划3鉴别和评估风险政策风险,资源风险,市场突变风险,技术风险和技能风险等4与相关的组或人协商策划中的有关约定策划的结果要实事求是,要得到各有关方面的同意和认可3.软件策划要实现的具体目标是什么?软件策划是项目跟踪和监控的基础,是项目经理和高层经理管理项目的依据。软件策划要实现的具体目标有三个。(1)对供项目策划和跟踪用的三个软件估计已建立文档。这三个估计是:——工作产品规模估计——工作量及成本估计——计算机资源估计(2)软件项目活动和约定是有计划的,并已建立文档。这里的活动,包括开发活动和管理活动。这里的约定,是指对项目的各种标准、规范、规程的约束。(3)受影响的组和个人,同意他们对软件项目的约定。受影响的组和个人有:——软件工程组(项目组)——软件估计组——系统测试组——质量保证组——配置管理组——合同管理组——文档支持组其中有的组可能只有一个人。4.为什么在策划过程中要考虑到受影响的组和个人?受影响的组主要有:软件工程组(项目组)、软件估计组、系统测试组、质量保证组、配置管理组、合同管理组、文档支持组等,这些小组的活动始终贯穿于整个软件工程的全过程,对软件项目的成败有着至关重要的作用,是保证软件产品质量的关键所在,任何一个组的疏忽,都有可能影响到整个软件产品的开发进度。5.怎样理解对软件项目进行策划的时机?国际上的通用做法是先做需求分析,后做软件策划。至少策划要在软件《合同》/《立项建议书》和《任务书》之后。而且,软件策划要在《用户需求报告》之后,在《规格说明书》/《设计说明书》之前。6.简述软件策划的方法。直到目前为止,软件策划的方法仍然是采用经验数据加结构化方法,这些方法有三个要点:(1)粒度由粗到细的分解:自顶向下、逐步细化、逐项逐条逐日安排计划。(2)粒度由细到粗的综合:自底向下、逐步归纳、逐日逐周逐月安排计划。(3)同类项目经验数据类比法、同行专家协商策划法。软件策划是以用户确认的需求为基础,以软件组织内部的软件标准为依据,把组织内部类似项目的成功经验作为策划时的参考。7.软件策划的上游和下游各是什么?上游是需求分析,下游是软件设计。8.所谓定义软件过程是什么含义?所谓定义软件过程,就是根据选定的生存周期模型,规定软件的开发阶段,及每一阶段的工作步骤和文档标准等内容。9.所谓软件估计是什么含义?所谓软件估计,是指对软件项目进行量化估计,并记录估计结果的过程,软件估计是软件策划的核心,是软件策划的重点那与难点。10.简述对软件工作产品规模进行量化估计的方法。到目前为止,在IT企业常用的软件项目规模估计方法有以下四种:第一种估计方法:希腊古都法。希腊古都法是最流行的专家评估技术,在没有历史数据的情况下,这种方式适用于评定过去与将来。希腊古都法鼓励参加者就问题相互讨论。这个技术,要求有多种软件相关经验的人参与,互相说服对方。第二种估计方法,类比法。类比法适合评估一些与历史项目在应用领域、环境和复杂度的相似项目,通过新项目与历史项目的比较得到规模估计。类比法估计结果的精确度取决于历史项目数据的完整性和准确度。第三种估计方法:功能点估计法。功能点(实体数、构件数、屏幕数、报表数、文档数)测量,是在需求分析阶段基于系统功能的一种规模估计方法。第四种估计方法:无礼估计法。无礼估计法对各个项目活动的完成时间,按三种不同情况估计:一个产品的期望规模,一个最低可能估计,一个最高可能估计。用这三个估计得到一个产品期望规模和标准偏差。11.简述软件工作产品成本费用的估计方法。对软件工作产品成本的费用进行量化估计,其方法如表8-4所示表8-4软件工作产品成本估计的方法序号估计方法估计单位(元)方法说明1直接的劳务费人民币元开发人员的工资和福利2管理费人民币元技术管理和行政管理人员的工资和福利3差旅费人民币元售前、售中、售后的人员差旅费4计算机使用费人民币元网络设备的折旧费和房租水电费5其他招待费和公关费人民币元控制在总费用的15%以内12.项目跟踪与监督的基础是什么?在项目策划阶段,要为开发计划制定严格的审批流程。开发计划在经过组织批准生效后,将成为进行项目跟踪与监督的基础。13.软件开发计划书应包括哪些内容?《软件开发计划书》是软件策划的输出文档,它包括如下10个方面的内容:(1)软件项目的目的、范围、目标和对象。(2)软件生存周期的选择与裁剪。(3)确定软件开发和维护的规范、方法和标准。(4)软件工作产品的确定。(5)对工作产品规模的估计。(6)对工作量和成本的估计。(7)关键计算机资源的估计和使用情况。(8)项目的进度、里程碑和评审计划。(9)风险的识别和评估。(10)项目工程设施和工具的计划。14.软件工作产品和软件产品有何同异?软件工作产品是指开发过程中每个阶段的文档、数据和程序,即每个开发阶段的输出制品。软件产品是指软件开发与测试工作已经完工、并且可投入市场销售的软件产品。由此可见,软件产品是最后一个阶段的软件工作产品。15.请具体解释:直接人工、直接费用、间接成本、制造费用、管理费用、不可预见费用。直接人工:是指直接参与软件产品开发的相关的程序员、系统分析员等直接相关的项目组成员。直接费用:是指与软件开发有着直接关系的日常开销,例如员工的薪金、福利、劳保、日常餐饮费用,差旅费用等。间接成本:是指与软件开发没有直接关系的日常开销,例如招待费、器材损耗等。制造费用:企业生产车间为制造产品和提供劳务而发生的各项间接费用,包括折旧费、修理费、物料消耗费等。管理费用:是指企业行政管理部门为组织经营管理活动而发生的各项费用,包括公司办公经费、工会经费、职工教育经费、审计费、诉讼费、排污费、绿化费、税金、土地使用费、土地损失补偿费、技术转让费、坏账损失,存货盘亏、毁损和报废(减盘盈)费用。不可预见费用:是指在软件开发过程中,由于某些意想不到的因素造成了软件开发成本的提高。16.怎样理解软件中的度量,它有何作用?软件中的度量,是指对大量测量数据的统计分析。度量是按规定在项目进行过程中,需要采集的度量数据,以便量化地反映项目的进展情况,为管理者提供对项目进展的适当的可视性,同时度量数据是项目过程改善的基础数据,它们存放在测量数据库中。17.请设计出以下策划管理文档:项目周报、项目月报、里程碑报告、重大事件报告、软件开发计划评审报告、项目计划变更申请表、计划更改与批准记录。这些策划管理文档,依次如表8-5至表8-11所示:表8-5项目周报起始日期终止日期项目名称项目经理本周计划进度本周实际进度本周成绩本周问题下周应对措施对资源的要求表8-6项目月报起始月份终止月份项目名称项目经理本月计划进度本月实际进度本月成绩本月问题下月应对措施对资源的要求表8-7里程碑报告里程碑名称评审日期项目名称项目经理里程碑优点里程碑问题表8-8重大事件报告事件名称事件日期项目名称项目经理事件原因事件处理结果表8-9软件开发计划评审报告项目名称项目经理评审阶段软件开发计划第次评审评审组组长评审时间评审地点评审组成员不符合项跟踪记录不符合项名称不符合项内容限期改正时间实际改正时间测试合格时间测试员签字审计员签字评审意见评审结论表8-10项目计划变更申请表计划变更理由变更申请日期项目名称项目经理表8-11计划更改与批准记录更改次数批准日期项目名称项目经理变更评审日期变更起始日期原计划版本号现计划版本号18.请在老师的指导下,写出一份“图书馆信息系统”的《软件开发计划书》。参考本书的图书馆信息系统那一章,按照《软件开发计划书》参考模板书写即可,在此省略。第六章。本章还提出了详细设计的描述工具、设计原则和度量方法。下面是本章的习题解答:1.软件设计的输入输出是什么?对于签订合同的项目,软件设计的输入时《用户需求报告》/《需求规格说明书》,输出是《概要设计说明书》和《详细设计说明书》。对于立项的项目,软件设计的输入时《需求规格说明书》,输出是《概要设计说明书》和《详细设计说明书》。2.为什么说“软件设计以面向数据为主,以面向功能和面向对象为辅。而软件的编程实现则面向对象为主,以面向数据和面向功能为辅”?软件设计注重宏观上框架的设计,软件实现注重于微观上和框架内的设计,根据“面向流程分析、面向数据设计、面向对象实现、面向功能测试、面向过程管理”的实施理论,软件设计主要方法以面向数据为主,以面向功能和面向对象为辅,重点设计数据的存储方式、加工处理方式和传输方式。而软件的编程实现的主要方法则以面向对象为主,以面向数据和面向功能为辅,因为面向对象是当今的流行编程语言,它具有可复用、好维护的特性。3.概要设计说明书和详细设计说明书有何区别?《概要设计说明书》,一是要覆盖《需求规格说明书》的全部内容,二是要作为指导详细设计的依据。它注重框架上的设计,它是软件系统的总体结构设计,全局数据库(包括数据结构)设计,外部接口设计,功能部件分配设计,部件之间的内部接口设计,它要覆盖需求规格说明书中的功能点列表,性能点列表,借口列表。《详细设计说明书》,一是要覆盖概要设计说明书的全部内容,二是要作为指导程序设计的依据,它注重微观上和框架内的设计,它是各子系统的公用部件实现设计,专用部件实现设计,存储过程实现设计,触发器实现设计,外部接口实现设计,部门角色授权设计,其他详细设计等。两者的设计者不同,在一般情况下,《概要设计说明书》是由系统设计师负责,《详细设计说明书》则由高级程序员负责。4.怎么理解“软件概要设计是系统总体结构设计或系统架构设计”?软件概要设计用以描述系统最顶层的结构和组织形式,表示出软件系统各个组成部分的功能及其互相之间的接口关系。所以概要设计是系统总体结构设计或系统架构设计。5.怎么理解“软件详细设计是子系统和模块的实现设计”?软件详细设计用于详细描述每个部件的内部结构,用以指导程序人员编写代码,便于每个部件能够得以顺利实现。当这些部件都实现了之后,将它们组装起来就实现了子系统或模块。6.模块实现设计包括哪些内容?包括:登陆注册模块设计,信息发布模块设计,菜单模块设计,录入修改模块设计,查询统计模块设计,业务逻辑处理模块设计,报表输出模块设计,前台网站模块设计,数据传输与接受模块设计等。7.怎么理解“详细设计是面向模块的,不是面向组织结构或部门单位的”?一个组织或单位,根据角色的不同授权,可以挂上不同的模块或部件。一个优秀的软件,不会因企事业单位内部的组织结构变动,而导致软件不能使用。因此详细设计是面向模块的,不是面向组织结构或部门单位的。8.为什么软件设计要遵守“抽象,分解与模块化,低藕合高内聚,封装,接口和实现分离”的设计原理?当前,软件设计过程仍然是一个非确定性过程,经常是摸着石头过河。不同的设计人员对相同的问题可以得到不同的设计方案。由于设计过程是一个启发式过程,不是确定性过程,因此不可能得到一个完全预测的结果。为此,只能规定一些设计原理或原则,供设计人员共同遵守。这些原理或原则是“抽象,分解与模块化,低藕合高内聚,封装,接口和实现分离”。9.你是怎么理解“软件设计属性和度量”的?设计属性是设计人员设计的出发点,它包括:(1)可用性(系统正常运行的时间比例)。(2)可管理性。1)可靠性。2)可维护性。a.可移植性。b.可修改性。c.易理解性。d.调试支持。3)其他属性。a.文化适应性。b.可测试性。c.易用性。d.危险性。设计度量是设计人员设计的结果与归宿,它包括:(1)面向过程设计的度量。1)内聚度量。2)耦合度量。3)复杂度量。(2)面向对象设计的度量。1)每个类的加权方法2)继承树的深度。3)子类数量。4)对象类间的耦合。5)类的响应。6)方法中缺少内聚。10.你是怎么理解“面向数据方法用在数据库服务器层次上系统的设计与实现,面向对象方法用在除数据库服务器层次外的其他层次上系统的设计与实现,面向过程方法用在其他两种方法本身内部函数的设计与实现”的?上述提法是实事求是的。我们可以知道,所谓的“面向过程的方法是传统的软件工程方法,面向对象的方法是现代软件工程方法”的观点是肤浅的。这三种方法不是互相孤立,毫无联系,彼此对立,而是互相帮助,取长补短,彼此有关的。三种设计方法各有所长,所以各有应用空间。又各有所短,所以各有局限性。我们只能扬长避短、为我所用。一般而言,对于一个大型信息系统的建设,由于其分析、设计、实现、测试、维护的重点是数据库服务器上的数据,所以在实施的过程共,在宏观上仍然要遵守“五个面向”的实施理论,即“面向流程分析、面向数据设计、面向对象实现、面向功能测试、面向过程管理”。11.评审记录表设计合理吗?有何改进意见?到目前为止,还看不出设计上有什么问题,因此没有改进意见。12.完成“图书馆信息系统的”《概要设计说明书》和《详细设计说明书》。参考本书的图书馆信息系统实践指南那一章,在此省略。第七章7.1业务模型,功能模型,数据模型各个是什么含义?三这之间的关系?答:功能模型(B):描述系统做什么即对系统的功能,性能,接口和界面进行定义业务模型(A):描述系统在何时何地,由何角色,安什么业务规则去做,以及做得步骤或流程,即对系统的操作流程进行定义。数据模型(S):描述系统工作前的数据来自何处,工作的数据暂存何处,工作后的数据放到何处,以及这些数据之间的关联,即对系统的数据结构进行定义。三者之间的关系这三个模型不完全是并列的关系,而应以数据模型为中心,以业务模型和功能模型为两个基本点。尤其是在企业信息系统的分析,设计和实现中,因为关系型数据库管理系统仍然是其支撑平台,所以应该这样去理解这三个模型的建模思想。“三个模型”的思想加上“五个面向”的实施理论,就构成了一个完整的方法论,该方法不仅适合信息系统建设,而且适合其他应用软件和系统软件的建设。7.2用三个模型的思想,讨论操作系统的分析与设计方法答:操作系统的功能模型就是管理网络上的所有软/硬件资源及其相互间的通信,它的业务模型就是按优先级别组织网络中的进程和线程运行,它的数据模型就是网络节点上的数据结构,如进程控制块和进程调度队列的数据结构。对操作系统的分析,首先要分析它的内核CPU组件,即对CPU的管理。CPU组件由调度模块和中断处理模块组成,为此要分析调度模块和中断处理模块的数据模型(数据结构)。数据模型清楚了CPU组件的源程序才能读懂。7.3用三个模型的思想,讨论编译系统和解释系统的分析与设计方法。答:对编译系统与解释系统的分析,首先要分析它的词法和语法分析器,词法和语法规则就是系统的业务模型。但是分析的重点还是语法分析器,它是编译系统或解释系统的核心。为此,要分析它的语法状态转移矩阵及其相关的数据结构,如各种栈和队列。语法状态转移矩阵加上相关的数据结构,如各种栈和队列。语法状态转移矩阵加上相关的数据结构,就是编译系统或解释系统的主要数据模型,很多算法分析都是以它为基础的,而编译系统或解释系统的功能模型就是该语言的文本。7.4用三个模型的思想,讨论游戏系统的分析与设计方法。答:功能模型:系统功能需求列表,性能需求列表,接口需求列表,界面需求列表。业务模型:例图,时序图,交互图,状态图,活动图来表述游戏的规则,输入,响应和输出。数据模型:E-R图以及相应的数据字典。7.5三个模型的思想,讨论信息系统的分析与设计方法答:信息系统是应用软件的重要组成部分,对信息系统的分析和研究,最好的入手方法仍然是它的数据结构。与系统软件不同,这里的数据结构表现形式主要是它的概念数据模型(CDM)和物理数据模型(PDM),关系数据库系统(RDBMS)是它的主要运行环境。为了获得信息系统的整体框架,要同时弄清它的业务模型和功能模型。数据模型就是系统的数据结构和数据字典。7.6说明数据库与书库管理系统的差别答:数据库和数据库管理系统是有区别的,前者是应用软件后者是系统软件。数据库管理系统的基本功能是:管理用户数据库及其在数据库上的各种操作,以及数据库对外的各种接口。关系数据库管理系统(RDBMS)自带许多语句。数据库加上它的信息处理和查询系统就是一个应用软件。数据库本身又可以作为一种信息资源,支持应用系统运行。一般而言,数字信息系统是在一个或几个大兴数据库的支持下运行的,数据库加上应用程序就是数字化信息系统。7.7你是怎样通俗地理解数据库设计的范式理论的。答:通俗地理解范式,对于数据库设计大有帮助。这里所说的通俗地理解范式是指够用的理解,并不一定是最科学、最准确的理解。第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解。第二范式:2NF是对记录的唯一性约束,要求记录有唯一标识,即实体的唯一性。进一步讲,在数据库设计时,作为唯一性标志的主键最好是一个字段,而不是组合字段,这就是主键的原子性。现在的关系数据库管理系统都提供了唯一标识ID类型的字段,就是为了实现主键的原子性。第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。其他更高级的范式:BCF、4NF、5NF等各级范式,研究的内容是解决实体本身的原子性问题。由此可见:“只要实现了属性、主键、实体三者的原子化,就从根本上复合了各级范式的要求了。”数据库设计规范化理论的实质就是引导并帮助设计人员实现“实体、属性、主键的原子化”!没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据,这就是用空间换时间的做法。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。人们常称“降低范式的过程”为“反规范化设计过程”。7.8什么是原始数据?什么是原始单据?什么是信息源?三者之间有何关系?答:原始数据:原始数据是为了满足特殊应用目的或是经过处理缺失值或者数据集成而生成的数据。原始单据:原始单据也称为原始凭证,就是加盖有收款章或公章、财务专用章的正式的有效的收据或发票。就是信息源产生的数据。信息源:信息源是人们在科研活动、生产经营活动和其他一切活动中所产生的成果和各种原始记录,以及对这些成果和原始记录加工整理得到的成品都是借以获得信息的源泉。关系:信息源产生的数据,原始单据上的数据是原始数据7.9什么是实体?它与原始单据有什么关系?答:所谓实体,就是一组相关元数据的集合。实体蕴含在原始单据中,原始单据与实体之间的关系可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系,即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单据对应多个实体,或多张原始单据对应一个实体。这里的实体可以理解为基本表。7.10基本表,代码表,中间表,临时表,它们有何异同?答:基本表:存放原始数据的表代码表:存放信息代码数据的表,又称为数字字典,有一定的标准需要执行。中间表:存放统计数据的表,它为数据仓库,输出报表或查询结果而设计的,有时候没有主键和外键临时表:临时存放数据的表,是程序员个人设计的,存放临时记录为个人所用基本表和代码表统称基表。基本表的特性:原子性,原始性,演绎性,稳定性基表和中间表由DBA维护,临时表是程序员自己用程序自动维护无7.117。12存放原始数据的表,称为基本表。基本表与中间表、临时表不同,因为它具有如下四个特性:(1)原子性。基本表中的字段是不可再分解的。(2)原始性。基本表中的记录是原始数据(信息源产生的数据)记录。(3)演绎性。由基本表与代码表中的数据,可以派生出所有的输出数据。(4)稳定性。基本表的结构是相对稳定的,表中的记录是需要长期保存的。中间表是存放统计数据的表,它是为数据仓库、输出报表或查询结果而设计的,有时没有主键和外键。临时表是程序员个人设计的,存放临时记录,为个人所用。7.13数据库设计的核心设计模式只有两个:一个是“第三者插足”模式,另一个是“列变行”模式。7.14软件工程“第三者插足”模式的本质是什么?答:善于识别和正确处理两个实体(或多个实体)之间多对多的复杂关系。利用增加第三实体来简化两个(或多个)复杂实体之间的关系。7.15“列变行”模式的实质是什么?答:将第一个表中的某些列变为第二张表中的某些行,即将一张不科学的表变为设计较科学的两张表。其中一个为主表或父表,另一个为从表或子表,通过主键和外键,两个表进行连共同完成相关的操作。7.16请说明“第三者插足”模式和“列变行”模式之间的关系“第三者插足”模式数据库设计中的“第三者插足”模式:如果两个实体(或多个实体)之间的关系非常复杂,那么它们之间就可能存在多对多的关系。处理多对多关系的方法是在它们之间插入第三个实体,使原来的多对多关系化解为一对多关系。实体之间的多对多关系,是实体(即实体集、又叫实例集、简称实体)之间笛卡尔积的具体表现。若两个实体之间存在多对多的关系,那么这种关系就是一种复杂关系,具体表现就是这两个实例集相乘后得到的一个庞大的新的实例集。“列变行”模式所谓“列变行”,就是将第一个表中的某些列,变为第二个表中的某些行。这样,就将原来设计不科学的一个表,变为现在设计很科学的两个表:其中一个为主表或父表,另一个为从表或子表(又称明细表),通过主键与外键,两个表进行连接,共同完成相关的操作。具体做法,请看P165【例7-7】学生成绩单的管理,就是一个“列变行”的例子。“第三者插足”插出来的那个实体,与“列变行”变出来的那个实体,有时候它们俩者往往是同一个实体。也就是说,这个实体具有双重作用,即“双肩挑”。这就是“第三者插足”模式和“列变行”模式之间的关系。7.17请说明三个模型的思想的优缺点1.三个模型建模思想的优点(1)符合中国人的心理:系统有什么功能?对应系统的“功能模型”。系统怎么操作?对应系统的“业务模型”。系统的数据怎样组织?对应系统的“数据模型”。(2)符合客观事物的发展规律。因为做任何事情,都必须回答三个问题:做什么?这就是系统“功能模型”的任务。怎么做?这就是系统“业务模型”的任务。在什么地方做?做事的原材料在什么地方?做完后的产品放到什么地方?这就是系统“数据模型”的任务。(3)符合将复杂问题简单化的哲学思想。项目经理主要精力是“三抓”:抓系统的“功能模型”。抓系统的“业务模型”。抓系统的“数据模型”。(4)符合“简单、方便、直观”的原则。“功能模型”看得见:菜单、界面、报表。“业务模型”摸得着:操作说明书、业务流程图、业务规则。“数据模型”听得懂:实体、属性、关系、表、字段、记录、数据字典、原始数据、统计数据、临时数据。(5)符合节省成本降低费用的经济效益目标。中国软件的开发方法与文档标准,不应该完全与发达国家相同,而结合中国的国情来做。(6)三个模型的建模思想既适合应用软件建模,又适合系统软件建模。(7)最根本是符合B/A/S三层结构的特点:Browser/Application/ServerB层对应功能模型A层对应业务模型S层对应数据模型2.三个模型建模思想的缺点(1)功能模型表述不规范:目前,功能模型还只能用“功能点列表、性能点列表、接口列表”这三个列表来表示,或者用UML的用例图和用况规约来描述,其他还没有找到更好的方法。(2)业务模型表述不规范:目前,业务模型还只能从“业务操作步骤、业务流程图、用户操作手册”这三个方面来表示。在UML中,完整的业务模型由用例图、时序图、交互图、状态图、活动图来表述,其他还没有找到更好的办法。(3)只能覆盖需求分析和设计两个阶段,不能覆盖整个软件生存周期。业务模型和功能模型主要适合在软件需求阶段建模,数据模型主要适合在软件设计阶段建模。当然,这三个模型对软件实现、软件测试两个阶段,也具有重要指导意义。7.18请你说明数据库设计的步骤与方法步骤 设计内容第1步 将原始单据分类整理,理清原始单据与输出报表之间的数据转换关系及算法,澄清一切不确定的问题第2步 从原始单据出发,划分出各个实体,给实体命名,初步分配属性,标识出主键或外键,理清实体之间的关系第3步 进行数据库概念数据模型CDM设计,画出实体关系图ERD,定义完整性约束第4步 进行数据库物理数据模型PDM设计,将概念数据模型CDM转换为物理数据模型PDM第5步 在特定的数据库管理系统上定义表空间,物理建表与建索引第6步 定义触发器与存储过程第7步 定义视图,说明数据库与应用程序之间的关系第8步 数据库加载测试第9步 数据库性能优化第10步 数据库设计评审方法:西瓜方法;E—R模型7.19请你说明数据库表与实体之间的联系与区别。原始单据与实体之间关系可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系,即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单据对应多个实体,或多张原始单据对应一个实体。这里的实体可以理解为基本表。明确这种对应关系,对设计录入界面大有好处。第十章10.1请读者谈谈对“软件产品的分类”的看法。软件产品分为三类:第一类为:不需要客户化的软件产品如系统软件中的操作系统、编译系统、数据库管理系数、CASE工具,以及应用软件中的杀病毒工具、游戏系统等。这些软件产品的通用性太强,用户买来安装之后,直接使用即可。所以用户群特大,几乎是全球所有客户。第二类是只需要少量客户化工作的软件产品,如财务系统、保险系统、金融证券系统、税务系统、海关系统、政府办公系统、公检法系统、电力控制系统、电信计费系统等。因为这些行业专业性强,各种法规制度健全,业务流程规范,信息标准化工作基础扎实。这些软件产品尽管也需要适当的客户化,如代码表的修改及初始化,报表与查询格式的调整,但全局性的数据库和数据结构不会改变。这种客户化的工作,仅仅是程序代码级的,不是数据库和数据结构级的。第三类是需要重新做业务流程规范和需求规格定义的软件产品,这种软件产品的客户化工作量大,工期也较长,如分行业的管理信息系统MIS、分行业的企业资源规划系统ERP、分行业的客户关系。10.2怎样解释“客户化”和“初始化”两个名词的含义及关系?客户化:按照客户的实际需求,对软件产品的功能、性能、接口作适当的修改。初始化:按照客户的实际情况,对软件产品的代码表(又称数据字典)进行初始化,即将客户的各种信息编码录入到相应的代码中。此外,初始化还包括数据库中所有基本表的数据加载,即所有基本表中必要记录的录入工作。二者关系:初始化工作简单,客户化工作复杂。客户化工作中自然包含了初始化工作,初始化工作只是客户化工作的一小部分。10.3软件项目与软件产品有什么不同?软件产品是指不局限于特定业务领域、能被广大用户直接使用的软件系统。软件项目是指针对特定业务领域、需要提供业务流程重组与优化的软件系统。软件产品主要考虑通用性,而软件项目更多是满足具体客户的特点。10.4软件产品发布的方式有哪几种?(1)聘请各有关领导、新闻媒体记者及大客户代表,召开新闻发布会,宣布新产品的优点,描述其市场前景,现场演示介绍,厂商给嘉宾和客人送产品资料和纪念品。(2)在报纸、刊物、电视台、电台上做广告,宣传软件产品。(3)在各种交易会、展览会、博览会上租用摊位,展示软件产品。10.5三类软件产品的发布策略有何差异?第一类不需要客户化的软件产品,在软件产品分布时只需要一份广告,它为客户准备的文档资料只是一份用户指南而且这份用户指南不是随意赠送的,必须与产品一起打包销售。第二类只需要少量客户化工作的软件产品,在软件产品发布时除了一份广告之外,还准备了一份赠送给客户的文档资料,它是一份软件产品客户化的宣传方案。它的用户指南内容:用户使用手册、用户安装手册、系统管理员手册,不是随意赠送的,必须与产品一起打包销售。第三类需要重新做业务流程规范和需求规格定义的软件产品,在软件产品发布时除了一份广告外,还要准备一份赠送给客户的资料是行业应用软件框架,或是行业应用软件解决方案,该份资料不大详细,不会暴露软件企业的技术机密。10.6售前工程师为什么应该是该产品所属行业的行业领域专家?因为售前工程师的工作职责是制订投标书,讲解投标书,主持技术谈判,参与合同签约,制订初步的实施计划,而对此需要具备的素质要求是演讲能力强,气质风度高,业务素质好,能用office工具制作漂亮的投标书,是该产品所属行业领域的行业领域专家。只有是该产品所属行业的行业领域专家,才能担当起产品经理和产品形象代表的重任。这样的售前工程师,讲解投标书时,客户才会口服心服,赞叹不己。10.7怎样理解“软件工程的覆盖范围包括了售前、售中、售后三个阶段的工作”?售前的投标书,要按照软件企业提供的统一模板去制订,附件要规定软件的功能、性能和接口内容,初步的实施计划应是后面的开发计划的基础。售前主要是面对已经有意向购买产品的人,是接手销售人员后,跟进客户,了解客户实质需求,如果是软件行业,还包括了写方案,参与招投标等工作,工作性质是销售和技术参半。售中实际上主要是实施过程,客户购买了产品,需要实施,可能是长期或者短期,但是负责此工作类型的人一般是多年的老技术人员。工作性质属于纯技术。售后的工作性质比较简单,基本属于服务型,包括接接电话,上门调试维护等,也需要有一定的技术基础。但是这个看每个公司而定,可能大体都不相同。10.8怎样理解实施工程师的职责与素质?职责是:产品安装调试,产品的客户化,用户培训,产品验收交付素质要求是:对该产品的功能、性能、接口很熟悉,初始化和客户化工作很清楚,动手能力强是产品安装调试、产品客户化、初始化、用户培训教育、产品验收交付的主体。一般来说,为了完成此项工作,在产品发布前,软件企业要对他们进行专门培训,使他们掌握该产品的功能、性能、接口,熟悉产品运行的软硬件环境,熟练地安装调试系统,不但要会初始化系统,而且要会客户化系统。对于第1类产品,实施工程师将光盘上的软件产品,安装到用户系统上去即可。若客户需要培训,可以定期组织培训班,培训教材就是产品的用户指南。对于第2类产品,实施工程师首先是要进行调查和需求分析,在与客户达成完全一致的书面需求修改意见、并且经过评审和批准之后,再对软件产品的文档和程序进行修改和测试,测试合格才能试运行,试运行成功才能正式运行,正式运行成功才能验收交付。对于第3类产品,实施工程师的职责相当于项目经理,或者就需要成立软件项目组,任命项目经理。在项目经理的组织下,运用快速原型法,重新做业务流程规范和需求规格定义,每规范和定义一次,就产生一个新的原型,然后将新的原型演示给客户看,征求他们在的意见,直到客户满意、确认为止。在快速原型的迭代过程中,有两点必须注意:一是客户代表必须全程参加,二是文档与程序必须保持绝对一致。这样的实施过程,实际上相当于一次开发过程,人们有时将它称为“二次开发”。10.9请编写一份“图书馆信息系统”的实施计划。图书馆管理信息系统——规划报告(供参考)1.提出需求:长期以来,人们使用传统的人工方式管理图书馆的日常业务,其操作流程比较繁琐。在借书时,读者首先要将借的书和借阅证交给工作人员,工作人员然后将每本书的信息卡片和读者的借阅证放在一个小格栏里,最后在借阅证和每本书贴的借阅条上填写借阅信息。在还书时,读者首先将要还的书交给工作人员,工作人员然后根据图书信息找到相应的借书卡和借阅证,并填写相应的还书信息。从上述中可以发现,传统的手工流程存在着种种不足。首先处理借书、还书业务流程的效率很低;其次处理能力较低,一般时间内,所能服务的读者认识只能是很有限的。为此,图书信息管理系统需要为不同的图书馆解决上述问题,提供快速的图书信息检索功能及快捷的图书借阅、归还流程。2.系统目标:根据图书馆日常图书管理工作的需求和图书借阅的管理流程,该系统实施后,应该达到以下目标:1.界面设计友好、美观,数据存储安全、可靠。2.基本信息设置保证图书信息和读者信息分类管理。3.强大的查询功能,保证数据查询的灵活性。4.实现对图书借阅、续借、归还流程的全程数据信息跟踪。5.提供管理员修改信息、密码等功能,保证管理的安全性。6.提供灵活、方便的权限设置,使整个系统的管理分工明确。3.系统总体结构和层次:管理层:管理图书馆信息、图书信息、读者信息、自主账号等。业务层:借阅图书、归还图书、续借图书等。4.系统主要功能和子系统划分:(1)

图书管理子系统图书管理子系统包括图书借还、图书管理、图书查询。(2)

读者子系统读者子系统包括读者管理、读者查询。(3)

管理员子系统管理员子系统包括口令更改、系统管理、系统设置。(4)

图书馆子系统图书馆子系统包括信息显示、信息管理。5.可行性分析:5.1管理可行性管理上某学院的管理人员已有系统的完善的管理方法。随着企业的发展,社会的需求量逐渐增大,高层管理部门对新系统表现出充分的支持和积极参与的态度。5.2技术可行性本方案所采用的技术均采用较为成熟的技术,由具有经验的教师监督和指导,全组人员积极参与系统开发工作。5.3经济可行性本方案开发人员为5人,都有基本的开发设备,具备开发基础。初步估计开发时间为16个周,因此经济投资相对较小。5.4结论意见总结以上各方面的分析,该系统值得开发,可以马上投入开发。6.实施计划6.1方法:采用结构化开发6.2统模块开发优先级:通过对图书馆管理的特点和信息流程等的分析,确定各模块开发的先后次序。6.3某图书馆管理信息系统进度安排:图书馆管理信息系统——结构功能分析(供参考)本信息管理系统主要目标:1.实现图书馆对在馆图书的按类别,书名,作者,是否已被借出等多方面的查询。2.实现图书馆对新书入库,旧书注销的简单处理,并且建立书籍档案,方便图书管理。3.能够输入图书的综合情况和进行新书入库、现有图书信息修改以及删除。4.建立图书馆外借读者数据库,包括添加读者信息、删除读者信息、修改读者信息。5.可以按读者编号查询读者信息,包括该读者所借图书名称,归还日期等信息。6.能够进行罚款功能。

温馨提示

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

评论

0/150

提交评论