首页 > 经典文章 > 私藏美文 > 软件工程

软件工程

时间:2018-05-05   来源:私藏美文   点击:

【www.gbppp.com--私藏美文】

软件工程 第一篇_软件工程导论(第六版)课后习题答案

第一章

一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?

软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。 软件危机的典型表现:

(1) 对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。这些都降低了开发商的信誉,引起用户不满。

(2) 用户对已完成的软件不满意的现象时有发生。 (3) 软件产品的质量往往是靠不住的。

(4) 软件常常是不可维护的。

(5) 软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。 (6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。 (7) 开发生产率提高的速度远跟不上计算机应用普及的需求。 软件危机出现的原因:

(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。 (2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。 (3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。

二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?

答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,

不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是 整体构架的错误。

三、什么是软件工程?它有哪些本质特征?怎样用软件工程消除软件危机?

1993年IEEE的定义:软件工程是:① 把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;② 研究①中提到的途径。 软件工程的本质特征:

(1) 软件工程关注于大型程序(软件系统)的构造

(2) 软件工程的中心课题是分解问题,控制复杂性

(3) 软件是经

常变化的,开发过程中必须考虑软件将来可能的变化

(4) 开发软件的效率非常重要,因此,软件工程的一个重要课题就是,寻求开发与维护软件的更好更有效的方法和工具 (5) 和谐地合作是开发软件的关键

(6) 软件必须有效地支持它的用户

(7) 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人(完成一些工作)消除软件危机的途径: (1) 对计算机软件有一个正确的认识(软件≠程序)

(2) 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目

(3) 推广使用在实践中总结出来的开发软件的成功技术和方法 (4) 开发和使用更好的软件工具

四、简述结构化范型和面向对象范型的要点,并分析他们的优缺点。

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代表价格。

基于上述假设可以比较计算机硬件和软件成本的变化趋势。要求计算:

(1) 在1985年对计算机存储容量的需求估计是多少?如果字长为16位,这个存储器的价格是多少? 存储容量需求M=4080e0.28(1985-1960)=4474263(字) 存储器价格P=0.048*0.72(1985-1974)*4474263=5789美元

(2) 假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。如果一条指令为一个字长,计算使存储器装满程序所需用的成本。

需要工作量4474263/200=22371(人/月) 指令成本22371*4000=89484000美元

(3) 假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复(1)、(2)题。 需求估计M=4080e0.28(1995-1960)=73577679字

存储器价格0.003*32*0.72(1995-1974)*73577679=7127美元 工作量73577679/600=122629(人/月) 成本122629*6000=735776790美元

六、什么是软件过程?它与软件工程方法学有何关系?

软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型。 软件过程是软件工程方法学的3个重要组成部分之一。

七、什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的使用范围。 软件生命周期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。

瀑布模型 优点:它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。虽然有不少缺陷但比在软件开发中随意的状态要好得多。

缺点:(1) 实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。

(2) 经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。

(3) 客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。 快速原型模型

优点:使用户能够感受到实际的系统,使开发者能够快速地构造出系统的框架。

缺点:产品的先天性不足,因为开发者常常需要做实现上的折中,可能采用不合适的操作系统或程序设计语言,以使原型能够尽快工作。 增量模型

优点:(1) 人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。

(2) 当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。

缺点:(1) 至始至终开发者和客户纠缠在一起,直到完全版本出来。 (2) 适合于软件需求不明确、设计方案有一定风险的软件项目。 该模型具有一定的市场。 螺旋模型

优点:对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。 缺点:(1) 需要相当的风险分析评估的专门技术,且成功依赖于这种技术。

(2) 很明显一个大的没有被发现的风险问题,将会导致问题的发生,可能导致演化 的方法失去控制。 (3) 这种模型相对比较新,应用不广泛,其功效需要进一步的验证。 该模型适合于大型软件的开发

八、为什么说喷泉模型较好的体现了面向对象软件开发过程无缝和迭代的特性?

因为使用面向对象方法学开发软件时,各个阶段都使用统一的概念和表示符号,因此,整个开发过程都是吻合一致的,或者说是无缝连接的,这自然就很容易实现各个开发步骤的反复多次迭代,达到认识的逐步深化,而喷泉模型则很好的体现了面向对象软件开发过

程迭代和无缝的特性。

九、试讨论Rational统一过程的优缺点。

优点:提高了团队生产力,在迭代的开发过程、需求管理、基于组建的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面、针对所有关键的开发活动为每个开发成员提供了必要的准则、模版和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。

缺点:RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容,此外,他没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。 十.Rational统一过程主要适用于何种项目? 大型的需求不断变化的复杂软件系统项目 十一.说明敏捷过程的适用范围

适用于商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束 十二.说明微软过程的适用范围

适用于商业环境下具有有限资源和有限开发时间约束的项目的软件过程模式

第二章

1.在软件开发的早期阶段为什么要进行可行性研究?应该从哪些方面研究目标系统的可行性?

答:(1)开发一个软件时,需要判断原定的系统模型和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度,如果做不到这些,那么花费在这些工程上的任何时间、人力、软硬件资源和经费,都是无谓的浪费。可行性研究的实质是要进行一次大大压缩简化了的系统分析和设计过程,就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。 (2)一般说来,至少应该从以下三个方面研究每种解法的可行性:

a.技术可行性。对要开发项目的功能、 性能和限制条件进行分析, 确定在现有的资源条件下,技术风险有多大,项目是否能实现,这些即为技术可行性研究的内容。这里的资源包括已有的或可以搞到的硬件、软件资源,现有技术人员的技术水平和已有的工作基础。 b.经济可行性。进行开发成本的估算以及了解取得效益的评估, 确定要开发的项目是否值得投资开发,这些即为经济可行性研究的内容对于大多数系统,一般衡量经济上是否合算,应考虑一个“底线”,经济可行性研究范围较广,包括成本—效益分析, 长期公司经营策略, 开发所需的成本和资源,潜在的市场前景。

c.操作可行性。有时还要研究社会可行性问题,研究要开发的项目是否存在任何侵犯、妨碍等责任问题。社会可行性所涉及的范围也比较广,它包括合同、责任、 侵权和其他一些技术人员常常不了解的陷阱等。 必要时还应该从法律、社会效益等更广泛的方面研究每种解法的可行性。

2.为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员键入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息并印出利息清单给储户。 请写出问题定义并分析此系统的可行性。 数据流程图:

取票图:

航空订票系统技术在目前是一个技术上成熟的系统,并且在航空公司内部准备采取有力措施保证资金和人员配置等。因此,分阶段开发“航空订票系统”的构想是可行的。为了使航空公司适应现代化市场竞争的需求,促进机票预订管理信息化,不断满足旅客预订机票的要求,争取更好的经济效益,可立即着手系统的开发与完善。

3、为方便旅客,某航空公司拟开发一个机票预定系统。旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进入该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。 写出问题定义并分析系统的可行性。 1> 目标:在一个月内建立一个高效率,无差错的航空公司机票预定系统 2> 存在的主要问题:人工不易管理,手续繁琐 3> 建立新系统

① 经济可行性

成本估算:打印机一台(2000元)+开发费(3500元)=5500元 可承担

效益估算:该系统有很好的社会效益,提高了航空公司售票效率,方便了旅客,售 票方便化,科学化 ② 技术可行性

经过调查分析,得到目前航空公司机票预定系统流程图如下:【软件工程】

4.目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时

观察危重病人的病情变化,还可能会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,试写出问题定义,并且分析开发这个系统的可行性可行性分析--原系统分析:

软件工程 第二篇_软件工程_1_软件工程概述

第1章 软件工程概述

1.1 计算机软件

1、计算机硬件与软件

计算机(Computer)由硬件(Hardware)和软件(Software)组成,软件是看得见、摸得着的电子机械设备,如机箱、主板、硬盘、光盘、U盘、电源、显示器、键盘、鼠标、打印机、电缆等。软件是依附在硬件上面的程序、数据和文档的集合,是指挥控制计算机系统(包括硬件系统和软件系统)工作的神经中枢。如果将硬件比作人的身体,那么软件就相当于人的神经中枢和知识才能。软件的分类比较复杂。分类方法不同,内容也不同,表1-1从5个不同角度对软件进行了分类。

表1-1 软件的分类【软件工程】

计算机工程(Computer Engineering)有硬件工程(Hardware Engineering)和软件工程(Software Engineering)组成。硬件工程是研究硬件产生和硬件管理的工程科学,其内容包括计算机网络硬件的分析、设计、生产、采购、验收、安装、培训、维护。软件工程是研究软件生产和软件管理的工程学科,其内容包括市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、实施、系统维护、版本升级。由于软件的生产和管理比硬件复杂,积累的经验不如硬件那么丰富,所以软件工程研究成为一个长期的热点。

由于有这么多软件也需要选型、配置、采购、安装、调试,所以在今天,除了生产硬件的厂商外,纯粹的“硬件工程”几乎不存在,大多数硬件工程都与软件有关,于是就出现了一个新名词“网络工程”,它是介于硬件工程和软件工程质监的系统工程,人们有时也称它为“系统

集成工程”。

2、软件定义

为了弄清软件工程的概念,首先要了解程序和软件的概念。一般认为,程序是计算机为完成特定任务执行的指令的有序集合。站在应用的角度可以更通俗地理解为:

通常,软件有以下定义:

这里的“程序”,是对计算机任务的处理对象和处理过则的描述;这里的“文档”,是为了理解程序所需的详细描述性资料;这里的“数据”,主要是软件系统赖以运行的初始化数据。

【软件工程】

上述定义看起来很简单,实际上却来之不易。表1-2列出了美国人对软件定义的认识过程。知道今天,仍然有少数人认为:“软件就等于程序”。这些人在软件开发工程中,上来就写程序,而不是写文档。软件工程大师Roger S Pressman对这些人提出了尖锐的批评:“越早开始写代码的人,就是越迟完成代码的人”。

表1-2 美国人对软件定义的认识过程

至于对管理文档的全面认识,那就更晚了。知道1974年,美国人才开始认识到软件需要管理。1984年,美国人开始认识到软件管理是一个过程管理,或是一个管理过程。1991年,出现了软件过程能力成熟度模型CMM(Capability Maturity Model for Software)1.0版,人们研究了软件过程管理的具体内容与方法,并将软件开发和管理中产生的各种文档叫做“软件工作产品”,而将最后交付给用户使用软件工作产品叫做“软件产品”。1996年,出现了统一建模语言UML0.9版,称软件管理文档为“管理制品”,称软件开发文档为“技术制品”,两者合称为“制

品(Artifact)”。

3、文档的重要性

文档在软件工程中特别重要,文档是否规范与齐全,是衡量软件企业是否成熟的重要性标志之一。软件文档分为开发文档和管理文档两大类。开发文档主要由项目组书写,用于指导软件开发与维护;管理文档主要由软件工程管理部门书写,用于指导软件管理和决策。两类文档的标准、规范和编制模板,全公司范围内要统一,这一工作由软件工程管理部门完成。开发文档是知道软件开发与维护的文档,开发与维护中所有的程序,都是按照开发文档的要求编写与实现的。软件工程规定:文档必须指导程序,而决不允许程序指挥文档;文档与程序必须保持高度一致,而决不允许程序脱离文档。

开发文档本身具有严格的层次关系和依赖关系,这种关系反映在如下的覆盖关系之中,即有:

《用户需求报告》覆盖《软件合同》/《软件任务书》。

《需求规格说明书》覆盖《用户需求报告》。

《概要设计说明书》覆盖《需求分析规格说明书》。

《详细说明书》覆盖《概要设计说明书》。

《源程序》覆盖《详细设计说明书》。

《目标程序》覆盖《源程序》。

管理文档本身具有严格的时序关系,这种时序关系反映在如下的软件工程中,而工程由一系列的时间序列所组成:

需求分析过程管理文档。

软件策划过程管理文档。

软件设计过程管理文档。

软件实现过程管理文档。

【软件工程】

软件测试过程管理文档。

软件测试过程管理文档。

软件维护过程管理文档。

软件过程改进管理文档。

成熟的软件企业,都有一套自己的开发文档和管理文档编写标准所编写模板,在企业内部严格执行。

4、软件的最新定义

定义中增加了“知识”。对这一定义的讨论正在进行。正方认为:因为软件是知识在网络上的体现,所以这个定义非常好。反方认为:程序、数据、文档本身就是知识的载体与表现,所以这个定义有些画蛇添足的意味。

1.2 软件工程的定义

软件工程(Software Engineering,简称为SE)是针对软件这一具有特殊性质的产品的工程化方法。软件工程涵盖了软件生存周期的所有阶段,并提供了一整套工程化的方法,来指导软件人员的工作。

“工程”是科学和数学的某种应用,通过这一应用,使自然界的物质和能源的特性能够通过各种结构、机器、产品、系统和过程,成为对人类有用的东西。因而,“软件工程”就是科学和数学的某种应用,通过这一应用,使计算机设备的能力借助于计算机程序、过程和有关文档成为对人类有用的东西。

软件工程的成果是为软件设计和开发人员提供思想方法和工具,而软件开发是一项需要良好组织,严密管理且各方面人员配合协作的复杂工作。软件工程正是指导这项工程的一门科学。软件工程在过去一段时间内已经取得了长足的进展,可以说在软件的开发和应用中起到了其应有的作用。

高质量的软件工程可以保证软件工业中生产的软件是高质量的产品、用户满意的产品。但是,对软件工程的界定,总是存在一定的差异。软件工程应该包括哪些知识?这里我们引用 IEEE在软件工程知识体系指南(SEWBOK:Guide to the Software Engineering Body of Knowledge 2004Version)中的定义,它是这样定义软件工程的:1)软件开发、实施、维护的系统化、规范化、质量化的方法的应用,也就是软件的应用工程2)对上述方法的研究。

IEEE的软件工程知识体系指南(SWEBOK)中界定了软件工程的10个知识领域(KAs:Knowledge Areas)即软件需求(Software requirements)、软件设计(Software design)、软件构建(Software construction)、软件测试(Software testing)、软件维护(Software maintenance)、软件配置管理(Software configuration management)、软件工程管理(Software engineering management)、软件工程过程(Software engineering process)、软件工程工具和方法(Software engineering tools and methods)和软件质量(Software quality)。这10个知识领域的每个知识领域还包括很多子领域。

软件工程 第三篇_软件工程

1.软件设计中划分模块的一个准则是(C)

A.低内聚低耦合

B.低内聚高耦合

C.高内聚低耦合

D.高内聚高耦合

2.(A)是用户和设计交换最频繁的方法

A.原型化方法 B.瀑布模型方法

C.螺旋模型方法 D.构件组装模型

3.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是( )

A.硬件环境 B.软件开发的环境

C.软件开发工具和软件开发的环境 D.开发人员的素质

4.20世纪50年代以来,出现了许多不同的程序设计语言,下列语言中哪个语言是低级语言

(D)

A.PASCAL B.VISUAL BASIC

C.C++ D.汇编语言

5.软件测试的目的是(D)

A.证明软件的正确性

B.找出软件系统存在的所有错误

C.证明软件系统中存在错误

D.尽可能多的发现软件系统中的错误

6.使用白盒测试方法时,确定测试数据应根据(A)和指定的覆盖标准

A.程序的的内部逻辑 B.程序的复杂程度

C.该软件的编辑人员 D.程序的功能

7.软件维护工作的最主要部分是(C)

A.校正性维护 B.适应性维护

C.完善性维护 D.预防性维护

8.PDL是(B)语言

A.高级程序设计语言

B.伪代码

C.中级程序设计语言

D.低级程序设计语言

9.系统定义明确之后,应对系统的可行性进行研究,可行性研究应包括(B)

A.软件环境可行性、技术可行性、经济可行性、社会可行性

B.经济可行性、技术可行性、操作可行性

C.经济可行性、社会可行性、系统可行性

D.经济可行性、实用性、社会可行性

10.通过(B)可以完成数据流图的细化

A.结构分解 B.功能分解 C.数据分解 D.系统分解

11.模块(C),则说明模块的独立性越强

A.耦合越强 B.扇入数越高 C.耦合越低 D.扇入数越低

12.模块(B)定义为受该模块内一个判断影响的所有模块集合

A.控制域 B.作用域 C.宽度 D.接口

13.在进行软件测试时,首先应当进行(A),然后再进行组装测试,最后再进行有效性测试

A.单元测试 B集成测试 C.确认测试 D.组合测试

14.制定进度计划的两个重要工具和方法是(AC)

A.Gantt图 B.CoCoMo C.工程网络图 D.HIPO图

15.软件测试的目的是(B)

A.评价软件的质量

B.发现软件的错误

C.找出软件的所有错误

D.证明软件是正确的

16.在整个软件维护阶段所花费的全部工作中,(C)所占比例最大

A.校正性维护 B.适应性维护 C.完善性维护 D.预防性维护

17.软件设计阶段分为(C)

A.逻辑设计与功能设计

B.模型设计和功能设计

C.结构设计和模块过程设计

D.数据库设计和文件设计

18.结构化设计方法是面向(A)的设计

A.数据流 B.数据编码 C.数据库 D.数据结构

19.复杂的数据流图(D)

A.只有变换型 B.只有事务型 C.无规律 D.既有变换型又有事物型

20.下列(B)不是反映用户在使用软件产品时的三种倾向

A.产品运行 B.产品可再用性 C.产品修改 D.产品转移

21.在设计测试用例时,(A)是用的最多的一种黑盒测试方法

A.等价类划分 B.边界值分析 C.因果图 D.判定表

22.DFD中每个加工至少有(D)

A.一个输入流 B.一个输出流

C.多个输入输出流 D.一个输入输出流

23.数据字典包括(C)个条目

A.2 B.3 C.4 D.5

24.在对数据流的分析中,主要是找到中心变换,这是从(C)导出结构图的关键

A.数据结构 B.实体关系 C.数据流图 D.E_R图

25.结构分析方法就是面向(B)自顶向下逐步求精进行需求分析的方法

A.目标 B.数据流 C.功能 D.对象

26.软件生存走起包括可行性分析的项目开发计划,需求分析,概要设计,详细设计,编码,

(C),维护等活动

A.应用 B.检测 C.测试 D.以上答案都不对

27.在考察系统的一些涉及时序和改变的状态时,要用动态模型来表示。动态模型着重于系统的控制逻辑,它包括两个图:一个是事件追踪图,另一个是(A)

A.状态图 B.数据流图 C.系统结构图 D.时序图

28.(A)数据处理问题的工作过程大致分为三步,即取得数据、变换数据和给出数据

A.变换型 B.事务型 C.结构化验室 D.非结构化

29.程序内部的各个部分之间存在的联系,用结构图表达时,最关心的是模块的(D)和耦合性

A.一致性 B.作用域 C.嵌套限制 D.内聚性

30.在多层次的结构图中,其模块的层次数称为结构图的(A)

A.深度 B.跨度 C.控制域 D.粒度

31.“软件危机”是指(C)

A.计算机病毒的出现

B.利用计算机进行经济犯罪活动

C.软件开发和维护中出现一系列问题

【软件工程】

D.人们过分迷恋计算机系统

32.为了提高模块的独立性,模块之间最好是(D)

A.控制耦合 B.公共耦合 C.内容耦合 D.数据耦合

33.下面关于PDL语言不正确的说法是(B)

A.PDL是描述处理过程怎么做

B.PDL是只描述加工做什么

C.PDL也称为伪码

D.PDL的外层语法应符合一般程序设计语言常用的语法规则

34.下列关于功能性注释不正确的说法是(B)

A.功能性注释嵌在源程序中,用于说明程序段或语句的功能以及数据的状态

B.注释用来说明程序段,需要在每一行都要加注释

C.可使用空行或缩进,以便很容易区分注释和程序

D.修改程序也应修改注释

在XX公司接到的项目中,因客户的要求,对项目的完成也很有严格的要求,最后系统分析员得到完成项目的几个要点,第一在完成项目的工作时间上有一定的顺序,第二各阶段有相互关联的关系,得到如图1所示的部分N-S流程图。假定该系统完成之后,相对以客户公司可以节省一把资金,现假定每年节省2500元。

图1

1.在以上XX公司描述中,应该选择的软件开发过程模型是(A)

A.瀑布模型 B.快速原型模型 C.增量模型 D.螺旋模型

2.设计出如图所示的流程,关于此图下述正确的是(B)【软件工程】

A.该图是一个IF_THEN_ELSEz执行顺序,分别执行X2、X3、X4条件语句,再判断X5。

B.该图是一个选择执行语句CASE分支,分别执行X2、X3、X4条件语句,再判断X5。

C.该图是一个循环执行语句DO_WHILE语句,分别执行X2、X3、X4条件语句,再判断X5。

D.该图是一个循环执行语句DO_UNTIL语句,分别执行X2、X3、X4条件语句,再判断X5。

3.下图是该软件的测试模块的流程图。请从下列选项中找到符合判定/条件覆盖的组合(C)

A.{1}A=2. B=0. X=4 {2}A=1. B=1. X=2

B.{1}A=2. B=0. X=1 {2}A=1. B=1. X=2

C.{1}A=2. B=0. X=4 {2}A=1. B=1. X=1

D.{1}A=2. B=1. X=4 {2}A=1. B=1. X=2

1.ER图是用来建立__________的工具。(数据模型)

软件工程 第四篇_国内外软件工程发展现状

国内外软件工程发展现状

答:国内:“软件工程”术语的提出至今已有30多年的历史。其间,计算机软件产业经历了迅猛的发展,软件系统的应用领域从实验室渗透到了人类社会的各个角落,软件系统的规模迅速发展,与此同时,软件成本也在不断增长,在计算机系统中所占的比例越来越大,计算机硬件价格却随着技术进步和生产规模扩大而不断下降。从上世纪40年代开始到“软件工程”术语提出的20多年时间里,对软件开发的理解就是编程序,编程是在一种无序的、崇尚个人技巧的状态中完成的,因此软件可靠性没有保障,软件维护费用不断上升,进度无法预测,成本增长无法控制,程序人员数量无限度地增加。这一系列情况被称为“软件危机”。而软件工程以降低成本、提高质量、符合进度要求为目标,指导人们科学地开发软件,制作软件产品,集成计算机系统,成为计算机和信息产业的支柱。国内外软件开发的现状及比较尽管1968年软件业界即已倡导软件工程,但是我国中小企业严格按软件工程方法开发软件的并不多见。1.1.“牛仔式”的开发仍然屡见不鲜。社会进步的一个很明显的现象就是社会分工越来越细,软件的开发也不例外。虽然开发者的勇气和决心是值得称赞的,但是这种开发方法。

2000年以来,国务院18号文件和47号文件相继出台,为软件产业的发展创造了良好的外部环境,我国软件产业发展步入快车道。2001年~2005年,我国软件产业规模从96.3亿美元增加到484亿美元,5年间翻了两番多,已成为电子信息产业中增长最快的领域之一。

但整体来看,目前我国软件产业总体规模仍然太小。2005年,我国软件产业占全球市场的份额仅为

5.9%。而同年,美国、西欧、日本占全球市场的份额分别为39%、29.5%和10.4%。我国软件企业以中小企业为主,软件收入前100家企业销售收入平均仅为1亿多美元。

软件企业多以从事定制项目和一般应用软件为主。对于大多数软件企业来说,没有一个良好的切入点,走独立发展的道路难度比较大。企业竞争力不强,无法形成产业的竞争性优势,导致我国软件产业在全球软件产业分工中定位不清。

国外:20世纪90年代以来,世界软件产业获得了飞速发展。据IDC统计,全球软件业的年均增长率一直保持在15%~20%之间。目前,全球软件业已经开始进入成熟期。产业分工较为明确,产业成熟度较高,成本已成为企业竞争的首要因素。发达国家的软件企业从降低成本考虑,逐步集中力量发展核心业务;利用全球的人力资源,将大量非核心业务向发展中国家转移。

市场分析表明,近几年全球应用软件外包服务市场每年平均以29.2%的速度增长。据美国E5公司预测,2006年全球软件外包市场将达到1000亿美元。整体来看,以美国、欧洲、日本为代表的国际软件大国产业梯次转移的需求已十分强烈,软件外包已成为世界软件产业发展的重要趋势,全球软件外包市场需求和外包服务业的发展空间逐渐形成。 二、国内外软件工程存在的问题?

答:国内:我国软件产业的国际化程度较低,国内市场由于以下的局限性无法独立支撑起一个庞大的产业:

(一)狭小的现实市场规模。近年来,国内软件市场总体规模出现增长,但由于盗版,社会心理认同低,政府采购不规范等多种原因,增速仍较有限。软件潜在市场巨大和现实市场相对狭小矛盾仍较突出。用户忽视软件价值和“重硬轻软”仍较普遍。据统计,我国在硬件和网络上的投资与在软件和咨询服务上的投资比例为6∶4,发达国家为3∶7。 软件开发网

另一方面,国内软件市场已经变成了国际竞争的市场。在软件市场的各个领域,特别是在高利润率的优质市场领域,市场份额基本上都由国外公司垄断。在系统软件和支撑软件市场,国外继续保持垄断地位;在以ERP为核心的企业应用软件市场,国外企业正在开始从高端市场走向中低端市场;在行业应用软件市场,外国企业也有不同程度的介入。

(二)低水平的同质竞争。目前,国内软件市场专业分工和特色不够清晰。国内软件企业处于各自为战的状态,互为竞争对手。同类软件的重复开发现象较严重,存在恶性竞争状况,专业化分工尚未形成。同质化竞争造成整个软件产业利润低下。

(三)过低的市场规范度。国内市场的竞争规则规范性程度过低,没有形成较好的优胜劣汰的市场机制,资源向高竞争力企业的集中度不够,好企业难以脱颖而出。同时,国内市场的用户需求规范性程度过低。软件企业主要从事软件工程项目,未能形成以产品开发为中心、以专业化服务体系为支撑的发展模式,真正从事过大型软件产品开发的软件企业很少,导致整个产业难以规模化。

国外:国外市场软件工程的发展比我国内快的多,大多高新技术都掌握在他们的手中,他们主导了世界软件行业的发展,但他们的市场发展也渐渐饱和,必须开发出跟先进的技术来满足广大客户的更高层次的要求,同时其他国家也在飞速发展,给他们也带来了压力与挑战。 三、软件工程发展趋势?

答:这篇文章的主体是讨论软件工程的未来发展趋势,但是软件工程的发展不可能是孤立的,所以我们首先需要思考一下计算模型和软件开发本身的变化和趋势,再由此推测软件发展趋势

CPU的运算能力按摩尔定律快速提升;但提升单颗CPU的计算能力已经越来越困难;;

互联网的快速普及使得云计算成为可能,通过互联网相连的服务器集群在服务器端提供了更强大的计算能力;

回到正题,那么在这些大的趋势的作用下,软件工程会如何发展呢?我觉得在未来几年我们会看到如下的趋势:

需求工程,渐成热点:专业化的角色,日益复杂的业务创新,全球分布的团队以及互联网级的交付速度。 迭代/敏捷,渐成标准:随着软件交付周期的日益加快,迭代化开发已经成为大多数软件开发团队的必选项。但是迭代对整个团队的需求、架构、协同及测试能力都提出了更高的要求,现在许多开发团队都在试图导入迭代化开发的过程中,敏捷可是被看成迭代化开发的一种导入方式,这不过敏捷的范围其实比迭代化开发更大一些。

本文来源:http://www.gbppp.com/jd/442343/

推荐访问:通信工程 软件工程专业

热门文章