当前位置:文档之家› 软件工程第一章概述

软件工程第一章概述

软件工程第一章概述
软件工程第一章概述

第一章:概述

目标:

什么是软件工程,为什么它很重要;

开发不同类型的软件系统可能需要不同的软件工程方法;

道德和职业问题对于软件工程的重要性;

介绍3个不同类型的软件系统,这3个系统将作为贯穿全书的例子;

1.1专业化软件开发

一.对于软件工程的一些常见问题

1.什么是软件?

计算机程序和相关文档。软件产品可针对特定客户开发或为通用市场开发。

2.什么是优良软件的特点?

好的软件应具有用户所需的功能与性能,而且应该可维护,可靠,可用。

3.什么是软件工程?

软件工程师关于软件生产的各个方面的工程学科。

4.什么是基本的软件工程活动?

软件描述,软件开发,软件验证以及软件进化。

5.软件工程和计算机科学有何区别?

计算机科学侧重理论和基础,而软件工程则侧重于软件开发和交付的实际活动。

6.软件工程和系统工程有何区别?

系统工程侧重基于计算机系统的开发的所有方面,包括硬件,软件和过程工程。

7.软件工程面临的主要挑战是什么?

不断增长的多样性,减少交付时间以及开发可靠的软件的要求。

8.什么是软件工程的成本?

软件开发成本约占总成本的60%,测试成本占40%。对于定制软件而言,进化成本常常高于开发成本。

9.什么才是最好的软件工程技术和方法?

由于所有的软件项目都必须进行专业化的管理和开发,所以不同的技术应适用于不同类型的系统。例如,游戏开发需要一系列原型,而安全要求极高的控制系统开发需要一个完整的和可分析的描述。因此,你不能单纯的评判一种方法比另一种方法更好。

10.Web给软件工程带来了哪些不同?

Web带来了软件服务的可用性,以及开发高品质的基于服务的分布式系统的可能性。基于Web的系统开发极大地促进了编程语言和软件复用的发展。

二.软件产品有以下两类

1.通用软件产品

2.定制软件产品

这两类产品的一个重要区别在于:在通用软件产品中,软件描述由开发者自己完成,而定制软件产品,其软件描述通常是由客户给出,开发者必须按客户要求进行开发。

三.软件除了提供相应的功能外,作为一个产品它还有一系列相关的反映质量的属性。这些属性不直接涉及软件的功能,而是反映软件在执行时的行为以及源程序的结构,组织及相关的文档。软件对用户查询的响应时间和程序代码的可理解性就属于这类属性(有时也称为非

功能性属性)。

四.软件系统在具体应用中,用户可能会要求其具有特殊的属性。这些属性也是专业化软件系统应具备的基本属性。

1.可维护性

软件必须能够不断进化以满足客户的需求变化,这是软件产品最根本的特性,因为工作环境是不断变化的,软件也必然要跟着变化。

2.可依赖性和安全性

软件课依赖性还包括一些特性:可靠性,保密性,安全性。可靠的软件在系统失败的情况下,也不会导致物理性损害和经济损失。有恶意的人员不得访问或破坏系统。

3.有效性

软件不要浪费内存和处理器等系统资源,因而有效性应包括响应时间,处理时间和内存利用率等方面。

4.可用性

软件必须简单易用,容易被用户接受。这就意味着,它必须是容易理解的,易用的并且和其他系统是兼容的。

1.1.1软件工程

一.软件工程的定义

软件工程是一门工程学科,涉及软件生产的各个方面,从最初的系统描述一直到投入使用后的系统维护,都属于其科学范畴。在软件工程的定义中有两个关键词:

1.工程科学:干什么事情都离不开工程人员,他们既拥有一定的理论,方法和工具,又能有选择地利用它们,即使在没有可用的理论和方法的情况下,也能够力求找出解决问题的方法。同时他们也认识到必须在机构或财政状况所允许的限度内工作,即在此限度内寻找解决办法。

2.软件生产的各个方面:软件工程不仅涉及软件开发的技术过程,也涉及诸如软件项目管理以及对那些支持软件生产的工具,方法和理论的开发等活动。

二.软件工程之所以重要有两方面的原因:

1.个人和社会越来越多的依赖于先进的软件系统。这就需要我们能够既经济又快速地生产出可依赖和值得信赖的系统。

2.从长远来看,运用软件工程方法和技术去开发软件系统比单纯为个人程序项目写程序更加便宜。对于大多数类型的系统来说,绝大多数的钱都花费在软件投入使用后对软件的变更上。

三.软件过程包含的4项基本活动

软件工程中系统化的方法有时候也叫软件过程,软件过程是指制作软件产品的一组活动及其结果。这些活动主要由软件工程人员完成。所有的软件过程都包含4项基本的活动,它们是:1.软件描述

客户和工程师定义所要生产的软件以及对其操作的一些约束。

2.软件开发

软件得以设计和编程实现

3.软件有效性验证

软件经过检查以保证它就是客户所需要的。

4.软件进化

软件随不同的客户和变化的市场需求而进行修改。

四.影响大多数类型软件的3个方面

1.异质性

人们越来越要求系统像基于网络的分布式系统一样运行,而网络中包含不同类型的计算机和移动设备。除了在通用的计算机上运行之外,有些软件可能还需要在手机上运行。又是必须将新软件集成到遗留系统中,这些遗留系统可能使用其他语言写成的。这样带来的挑战是:必须开发新技术,制作可靠的软件,从而足以灵活应对这种多样性。

2.业务和社会的变革

随着新经济成长和新技术的不断涌现,业务和社会正在发生着前所未有的快速变革。这对现存软件的变更和快速地开发出新软件提出新需求。很多传统的软件工程技术是费时的,新系统的交付往往滞后于预先的计划。因此技术必须进化,在不损及系统质量的前提下,缩短大型,复杂系统的交付时间。

3.安全和可信

软件和我们生活的方方面面息息相关,最关键的一点事软件要让人们信得过。这对于那些通过网页或Web服务界面访问的远程软件系统来说尤为重要。我们必须确保有恶意的人员不能攻击软件,不会危及信息安全。

1.1.2软件工程的多样性

一.不同类型的应用

也许决定使用哪种软件工程方法和技术主要取决于要开发的应用的类型。这里有许多不同类型的应用:

1.独立的应用

2.以交易为基础的交互式应用

3.嵌入式控制系统

4.批处理系统

5.娱乐系统

6.建模和仿真系统

7.数据采集系统

8.集成的系统

二.适用于所有类型的软件系统的软件工程基本方法

1.应使用有管理的和理解了的开发过程进行开发。软件开发机构应规划它们的开发过程,并清楚地知道应产出什么以及什么时候完工。当然,对于不同类型的软件使用不同的开发过程。

2.可依赖性和性能对所有类型的系统来说都很重要。软件应该如所期待的那样表现,没有失败且在用户需要的时候是可用的。它应该是操作安全的,只要可能,它应该是信息安全的,能抵御来自外部的攻击。系统应是高效的且不会浪费资源。

3.理解和管理系统描述和需求(系统应该做的是什么)是很重要的。你必须知道不同的客户和用户的期望是什么,然后你必须管理这些期望以便在预算范围内按期交付一个有用的系统。

4.你应该尽可能高效地使用当前存在的资源。这就意味着,你应该在适当的地方复用已开发的软件,而不是重新写一个新软件。

1.1.3软件工程和Web

一.软件组织的显著变化导致了以网络为基础的系统设计的变化

1.软件复用已经成为构建基于Web的系统的主要技术。当你在构造这样的系统时就需要考

虑怎样从已有的软件组件和系统开始工作。

2.现在人们普遍认识到,提前制定这些系统的所有需求是不切实际的。应逐步开发和交付这种基于Web的系统。

3.用户界面受到Web浏览器能力的约束。

1.2软件工程人员的职业道德

一.软件工程人员必须坚持诚实正直的行为准则,这是不可言喻的。他们不能用掌握的知识和技能做不诚实的事情,更不能给软件工程行业抹黑。然而,在有些方面,某些行为没有法律加以规范,只能靠职业道德来约束,这种约束是软弱无力的。包括:

1.保密

工程人员必须严格保守雇主或客户的机密,而不管是否签署了保密协议。

2.工作能力

工程人员应该实事求是地表述自己的工作能力,不应有意接受超出自己能力的工作。3.知识产权

工程人员应当知晓有关专利权,著作权等知识产权的地方法律,必须谨慎行事,确保雇主和客户的知识产权收到保护。

4.计算机滥用

软件工程人员不应运用自己的技能滥用他人的计算机。滥用计算机有时对他人的影响不大(如在雇主的机器上玩游戏),但有些时候后果非常严重(传播病毒)。

二.软件工程职业道德和执业行为准则

软件工程人员应当做出承诺,是软件的分析,描述,设计,开发,测试和维护等工作对社会有益且受人尊重。基于对公众健康,安全和福利的考虑,软件工程人员应当遵守以下8条原则:

1.公众感

软件工程人员应始终与公众利益保持一致。

2.客户和雇主

软件工程人员应当在与公众利益保持一致的前提下,保证客户和雇主的最大利益。

3.产品

软件工程人员应当保证他们的产品及其相关附件达到尽可能高的行业标准。

4.判断力

软件工程人员应当具备公正和独立的职业判断力。

5.管理

软件工程管理者和领导者应当维护并倡导合乎道理的有关软件开发和维护的管理方法。

6.职业感

软件工程人员应当弘扬职业正义感和荣誉感,尊重社会公众利益。

7.同事

软件工程人员应当公平地对待和协助每一位同事

8.自己

软件工程人员应当毕生学习专业知识,倡导合乎职业道德的职业活动方式。

1.3案例研究

一.用于案例的3种类型的系统分别是:

1.嵌入式系统

系统的软件控制硬件设备并嵌入在这个设备中。嵌入式系统的典型问题包括物理尺寸,响应性,电源管理等。本书嵌入式的例子是一个软件系统控制的医疗设备。

2.信息系统

这个系统的主要目的是管理和提供对信息数据库的访问服务。信息系统的主要问题包括信息安全性,可用性,隐私和维护数据的完整性。信息系统的例子是一个医疗数据系统。

3.基于传感器的数据采集系统

这个系统的主要目的是从多个传感器手机数据并以适当的方式处理数据。这类系统的关键需求是可依赖性,甚至是在极端环境条件下的可靠运行,可维护性。数据采集系统的例子是一个野外气象站。

1.3.1胰岛素泵控制系统

一.胰岛素泵是一个仿真胰腺(一种体内组织)运转的医疗系统。此系统的软件控制部分是一个嵌入式系统,它从传感器收集数据,然后控制泵输送指定剂量的胰岛素给患者。

一.糖尿病患者使用这个系统。糖尿病是一种常见病症,是由于人体无法产生足够数量的胰岛素而引起的。胰岛素在血液中起到促进葡萄糖新陈代谢的作用。糖尿病的传统治疗方法是长期规律地注射人工胰岛素。通过使用一种外部仪器测量糖尿病患者的血糖值,从而计算所需要注射的胰岛素剂量。

二.这个治疗方法存在的问题是,血液中的胰岛素浓度不仅与血液中的葡萄糖浓度相关,还与最后一次注射胰岛素的时间有关。这样有可能导致血糖浓度太低(当胰岛素太多时),或血糖浓度太高(当胰岛素太少时)。短时间内的低血糖是一种比较严重的情况,会导致暂时的脑功能障碍,最后失去知觉甚至死亡。长期处于高血糖则会导致眼睛损伤,肾损伤和心脏问题。

三.目前在开发微型传感器方面取得的进步使得自动胰岛素传送系统开发成为可能。系统监控血糖浓度,根据需要输送适当的胰岛素。这样的胰岛素输送系统已经在临床中得到使用了。在将来有可能将这样的系统永久地植入糖尿病患者体内。

四.该系统使用一个植入在人体内的微传感器来测量一些血液参数,这些参数与血糖浓度成正比。这些参数被送到泵控制器。控制器计算血糖浓度,得出胰岛素需要量,然后向一个小型化的泵发送信号使之通过持久连接的针头输送胰岛素。

五.显然,这是个安全性要求极高的系统。若此系统的操作失败,将会危及病人的健康,病人甚至因血糖浓度过低或者过高引起昏迷。因而在这个胰岛素输送系统中,有两个高级别的紧要需求是系统所必须达到的:

1.当需要输入胰岛素的时候这个系统能够输送胰岛素。

2.系统必须能可靠地运行,并根据当前血糖浓度输入正确剂量的胰岛素。

1.3.2用于心理健康治疗的患者信息系统

一.MHC-PMS有两个总体目标

1.生成管理信息,使医疗卫生管理部门能够据此评估本地和政府在此方面的执行情况。

2.为医疗服务人员提供及时的相关信息以保证对病人的治疗。

二.这个系统的主要特征

1.病历管理

2.病人检测

3.管理报告

1.3.3野外气象站

一.野外气象站只是一个更大系统的一部分,改大系统是一个从气象站采集数据并能将其提供给其他系统处理的气象信息系统。改系统包括:

1.气象站系统

2.数据管理系统与存档系统

3.气象站维护系统

二.气象站软件不能仅仅只是做到数据采集。它还必须做到以下几点:

1.监控仪器,电源,通信软件,并向管理系统报告故障。

2.管理系统电源,确保电池在环境条件允许的情况下得到充电,也确保在恶劣天气情况下比如大风天气,及时关闭发电机以免受到破坏。

3.允许动态配置,在部分软件版本更新时,或者是当系统发生失败而切换备份装置时。

第1章_软件工程学概述练习题

第一章练习题 一、判断题 1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动。(√) 2..软件是指用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,软件开 发实际上就是编写程序代码。(X) 3.在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是 生成类的模板。(X) 4.快速原型模型可以有效地适应用户需求的动态变化。(√) 5.类是关于对象性质的描述,由方法和数据组成。(√) 6.如果把软件开发所需的资源画成一个金字塔,人是最基本的资源。(√) 二、名字解释: 1.软件:完成特定功能的程序+数据结构+文档。 2.软件危机:软件危机指在计算机软件的开发和维护过程中,所遇到的一系列严重问题。 3.软件工程:指导计算机软件开发和维护的一门工程学。 4.软件生命周期:一个软件从定义、开发、使用和维护直至最终被废弃,要经历的漫长时 期。 5.软件过程:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任 务的工作步骤。 6.瀑布模型:是将软件生存各个活动规定为依线性顺序联接的若干阶段的模型。它包括可 行性分析、项目开发计划、需求分析、概要设计、详细设计、编码、测试盒维护。它规定了由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。 7.快速原型模型:是快速建立起来的可以再计算机上运行的程序,它所能完成的功能往往 是最终产品能完成的功能的一个子集。 8.增量模型:是在项目的开发工程中以一系列的增量方式开发系统。增量方式包括增量开 发和增量提交。增量开发是指在项目开发过程中以一定的时间间隔开发部分工作软件; 增量提交是指在开发周期内,以一定的时间间隔增量方式向用户提交工作软件及相应文档。增量开发和增量提交可以同时使用,也可以单独使用。 9.螺旋模型:是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模 型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。 对象。

软件工程概述习题及答案

第一章软件工程概述 一. 填空题 1. 软件的发展过程, , , . 2. 基于软件的工作方式,软件可以划分为, , , . 3. 在软件发展的第四阶段计算机体系结构迅速地从环境转变为环境. 4. 在计算机系统中,软件是, 而硬件是. 5. 软件危机是在软件发展第阶段末期,随着第代计算机和诞而产生。 6. 文档一般可分为面向的文档,面向的文档,面向的文档和面向的文档。 7. 软件生存期若分为三个大的阶段,,. 8. 它是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。 9. 在软件的生存周期开发阶段要经三个步骤, , 。 10. 瀑布模型是以文档为驱动、适合于的软件项目的模型。 11. 螺旋模型将开发过程分为几个螺旋周期,在每个螺旋周期内为,, 和四个步骤。 12. 软件开发的螺旋模型综合了瀑布模型和演化模型的优点,还增加了____。采用螺旋模型时,软件开发沿着螺线自内向外旋转,每转一圈都要对____ 进行识别和分析,并采取相应的对策。螺旋线第一圈的开始点可能是一个____ 。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直运转到软件生命期结束。 13. 软件开发模型, , , , , . 14. 软件工程面临的问题有, , , . 15. 面向对象方法学把客观世界的事物或实体都看成对象,把对象作为分析设计的元素,把所有对象都划分成对象类,类可以派生和. 16.基于软件的功能划分可以把软件划分为, ,和。 17.计算机系统发展的早期所形成的一系列错误概念和做法,已经严重地阻碍了计算机软件的开发,甚至有的根本无法维护,只能提前报废,造成大量人力、物力的浪费,从而导致软件危机。为了研究解决的方法,计算机科学技术领域中的一门新兴的学科逐步形成了,这就是。18.软件工程是指导的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。 19.为了开发出低成本高质量的软件产品,软件工程学应遵守以下基本原则:, ,和, 。 20.原型模型是从需求分析开始。软件开发者和用户在一起定义,说明需求,并规划出定义的区域。然后快速设计软件中对用户/客户可见部分的表示。快速设计导致了原形的建造,原形由用户/客户评估,并进一步求精。

软件工程概述课程作业

软件工程作业与解答 第一章软件工程概述 1.简述软件的发展过程。 答:计算机软件的发展经历了三个阶段:(1)程序设计阶段,约50至 60 年代;(2)程序系统阶段,约60至70年代;(3)软件工程阶段, 约70年代以后。各个时期软件开发的特点见课本第7页表1.3。 2.简述软件的定义及特点。 答:软件是计算机系统中与硬件相互依存的另一部份,它是包括程序、数据及其相关文档的完整集合。 特点见课本第1页至第3页。 3.简述软件的种类。 答:见课本第3页至第6页。 4.什么叫软件危机? 答:在软件发展的第二阶段,随着计算机硬件技术的进步,计算机的容量、速度和可靠性有了明显的提高,生产硬件的成本降低了。计算机价格的下跌为它的广泛应用创造了极好的条件。在这一形式下,要求软件能与之相适应。然而软件技术的进步一直未能满足形式发展提出的要求。 在软件开发中遇到的问题找不到解决的办法,致使问题积累起来,形成日益尖锐的矛盾。软件开发时期所面临的这种状态就是所谓的软件危机。 5.软件危机主要有哪几种表现? 答:见课本第8页(1)、(2)、(3)、(4)。

6.什么叫软件工程? 答:开发、运行、维护和修复软件的系统方法。 7.什么叫软件生存周期? 答:软件从孕育、诞生、成长、成熟到衰亡的过程叫软件生存周期。它 包括制定计划、需求分析、设计、程序编码、测试及运行维护。 8.简单介绍软件开发的瀑布型模型和螺线型模型。 答:见课本第11页至第14页。 第二章系统分析 1.简述系统分析的目标 (1) (2) (3) (4) (5) (6)识别用户要求; 评价系统的可行性; 进行经济分析和技术分析; 把功能分配给硬件、软件、人、数据库和其它系统元素; 建立成本和进度限制; 生成系统规格说明,形成所有后续工程的基础。 2.系统分析过程的第一步就是识别用户要求。要求的识别是系统开发的起点。为此,分析员必须回答哪些问题,才能完成这一步骤? (1) (2) (3) (4) (5) (6) (7) (8)所期望的功能和性能是什么可靠性和质量问题是哪些总的系统目标是什么成本与进度限制如何制造的需求是什么 市场与竞争情况怎样 有效的技术有哪些 将来可能有哪些扩充 3.软件项目的可行性研究主要集中在哪个方面? (1)经济可行性。(2)技术可行性。(3)法律可行性。(4)抉择。

软件工程习题解答第一章概述

软件工程习题解答 第一章概述 1.软件产品的特性是什么? a.软件产品是一种逻辑产品。 b.软件产品的生产主是研制,软件产品的成本主要体现在软件的开发和研制上,软件开发完成 后,复制就产生了大量软件产品。 c.软件产品不会用坏,不存在磨损、消耗问题。 d.软件产品的生产主要是脑力劳动,还未完全摆脱手工开发方式,而且碰分是"定做"的。 e.软件费用不断增加,成本相当昂贵。 2.软件产品有几个阶段?各有何特征? 阶段 A.程序设计时代(1946-1956) B.程序系统时代(1956-1968) C.软件工程时代(1968-今) 生产方式个体手工劳动小集团合作生产工程化的生产 工具机器语言、汇编高级语言数据库、开发工具、开发环境、 网络、分布式、面向对象技术开发方法追求编和技巧,追求程序运 行效率 个人技巧,开始提出结构化方法 硬件特征价格贵、存储容量小、运行 可靠性差速度、容量、工作可靠性有明显提 高,价格降低,销售有爆炸性增长 向超高速、大容量、微型化以 及网络化方 软件特征只有程序、程序设计概念, 不重视程序设计方法程序员数量猛增,已意识到软件开 发的重要性,开发技术没有新的突 破,大量软件开发的需求已提出, 开发人员的素质和工程兵的开发技 术不适应规模大、结构复杂的软件 开发,产生了尖锐矛盾,导致软件 危机的产生 开发技术有很大进步,但未能 获得突破性进展,软件价格不 断上升,没有完全摆脱软件危 机 3.什么是软件危机?其产生的原因是什么? 软件危机:软件发展第二阶段的末期,由于计算机硬件技术的进步。一些复杂的、大型的软件开发项目提出来了,但,软件开发技术的进步一直未能满足发展的要求。 在软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。主要表现在以下几个方面: a.经费预算经常突破,完成时间一再拖延。 b.开发的软件不通满足用户要求。 c.开发的软件可维护性差。 d. 开发的软件可靠性差。 软件危机产生的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的: a.软件的规模越来越大,结构越来越复杂。 b.软件开发管理困难而复杂。 c.软件开发费用不断增加。 d.软件开发技术落后。 e.生产方式落后。 f.开发工具落后,生产率提高缓慢。

华南理工软件工程随堂练习

1.(单选题) 软件工程的出现主要是由于()。A.程序设计方法学的影响B.其他工程科学的影响C.软件危机的出现D.计算机的发展 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 2.(单选题) 软件工程方法的提出起源于软件危机,其目的应该是最终解决软件的()问题。A.软件危机B.质量保证C.开发效率D.生产工程化 答题: A. B. C. D. (已提交) 参考答案:D 问题解析: 3.(单选题) 软件工程学涉及软件开发技术和项目管理等方面的内容,下述内容中()不属于开发技术的范畴。 A.软件工程经济B.软件开发工具 C.软件工程环境D.软件开发方法 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 4.(单选题) ()是将软件生命周期的各个阶段,依线性顺序连接,用文档驱动的模型。A.智能模型B.瀑布模型C.螺旋模型D.喷泉模型 答题: A. B. C. D. (已提交) 参考答案:B 问题解析: 5.(单选题) 原型模型是用户和设计者之间的一种交互过程,适用于()系统。 A.需求不确定性较高的B.需求确定的 C.管理信息D.决策支持 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 6.(单选题) 快速原型从设计用户界面开始,首先形成(),然后用户运行界面原行,并就同意什么和不同意什么提出意见。 A.用户使用手册B.系统界面原行 C.界面需求分析说明书D.完善用户界面

答题: A. B. C. D. (已提交) 参考答案:B 问题解析: 7.(单选题) 喷泉模型克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,喷泉模型的开发过程具有()和无间隙。 A.确定性B.迭代性C.可靠性D.风险性 答题: A. B. C. D. (已提交) 参考答案:B 问题解析: 8.(单选题) 要开发一个软件,它的功能是把73624.9385这个数开平方,所得到的结果精确到小数点后4位,一旦实现并测试完后,该产品将被抛弃。该项目选择()生命周期模型。A.快速原型B.瀑布模型C.喷泉模型D.螺旋模型 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: A. B. C. A. B. C. A. B. C.

《软件工程》第一章软件工程学概述

第一章软件工程学概述 1.1 软件危机 1.1.1 软件的定义 ——定义:软件=“完成特定功能的程序+数据结构+文档” ——特征:(3个)软件是开发的,而不是制造的;软件不磨损,但退化;自定义。 ——发展问题 1.1.2 软件危机的表现 ——定义:在计算机软件的开发和维护过程中所遇到的一系列严重的问题。 ——表现:(6个) (1)对软件开发成本和进度的估计常常很不准确。 (2)软件产品质量较差,可靠性低。 (3)用户对开发出来的软件产品不满意。 (4)软件常常是不可维护的。 (5)软件产品缺少应有的文档资料。 (6)软件产品的供不应求。 1.1.3 软件危机的原因 ——客观原因 ——主观原因 1.2 软件工程 1.2.1 软件工程的概念 ——定义:指导软件开发与维护的工程科学。采用工程的概念、原理、技术和方法来开发和维护软件,综合运用正确的管理技术和最好的技术方法,以经济 地开发出高质量的软件并有效维护它。 IEEE的定义:①软件工程是把系统的、规范的、可度量的途径应用于软件 开发、运行和维护过程,也就是把工程应用于软件;②对这些途径加以研究。 1.2.2 软件工程的基本原理(7个) ——(1)用分阶段的生命周期计划严格管理 (2)坚持进行阶段评审 (3)实行严格的产品控制 (4)采用现代程序设计技术 (5)结果可以清楚地审查 (6)开发小组成员少而精 (7)承认不断改进软件工程实践的必要性 1.2.3 软件工程方法学:3个要素(方法、工具和过程) ——传统方法学:结构化技术,软件生命周期 ——面向对象方法学:类+对象+继承+消息,软件开发过程更接近人类认知模式 1.3 软件生命周期 1.3.1 软件生命周期的概念 ——定义:一个软件从定义、开发、使用和维护,直至最终被废弃,要经历的漫长的时期称为软件生命周期。

第一章软件工程概述习题及答案

第一章软件工程概述习题 及答案 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

第一章软件工程概述 一. 填空题 1. 软件的发展过程 , , , . 2. 基于软件的工作方式,软件可以划分为 , , , . 3. 在软件发展的第四阶段计算机体系结构迅速地从环境转变为环境 . 4. 在计算机系统中,软件是 , 而硬件是 . 5. 软件危机是在软件发展第阶段末期,随着第代计算机和诞而产生。 6. 文档一般可分为面向的文档,面向的文档,面向的文档和面向的文档。 7. 软件生存期若分为三个大的阶段,, . 8. 它是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。 9. 在软件的生存周期开发阶段要经三个步骤 , , 。 10. 瀑布模型是以文档为驱动、适合于的软件项目的模型。 11. 螺旋模型将开发过程分为几个螺旋周期,在每个螺旋周期内为,, 和四个步骤。 12. 软件开发的螺旋模型综合了瀑布模型和演化模型的优点,还增加了____。采用螺旋模型时,软件开发沿着螺线自内向外旋转,每转一圈都要对____ 进行识别和分析,并采取相应的对策。螺旋线第一圈的开始点可能是一个____ 。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直运转到软件生命期结束。 13. 软件开发模型 , , , , , . 14. 软件工程面临的问题有 , , , . 15. 面向对象方法学把客观世界的事物或实体都看成对象,把对象作为分析设计的元素,把所有对象都划分成对象类,类可以派生和 . 16.基于软件的功能划分可以把软件划分为 , ,和。 17.计算机系统发展的早期所形成的一系列错误概念和做法,已经严重地阻碍了计算机软件的开发,甚至有的根本无法维护,只能提前报废,造成大量人力、物力的浪费,从而导致软件危机。为了研究解决的方法,计算机科学技术领域中的一门新兴的学科逐步形成了,这就是。 18.软件工程是指导的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。 19.为了开发出低成本高质量的软件产品,软件工程学应遵守以下基本原 则: , ,和 , 。

软件工程第一二三章习题参考答案

第一章软件工程概述 软件是计算机程序及其有关的数据和文档的结合。 软件危机是指在计算机软件开发和维护时所遇到的一系列问题。 软件危机主要包含两方面的问题:一是如何开发软件以满足对软件日益增长的需求;二是如何维护数量不断增长的已有软件。 软件工程是软件开发、运行、维护和引退的系统方法。 软件工程是指导计算机软件开发和维护的工程学科。软件工程采用工程的概念、原理、技术和方法来开发与维护软件。软件工程的目标是实现软件的优质高产。 软件工程学的主要内容是软件开发技术和软件工程管理。 软件开发方法学是编制软件的系统方法,它确定软件开发的各个阶段,规定每一阶段的活动、产品、验收的步骤和完成准则。常用的软件开发方法有结构化方法、面向数据结构方法和面向对象方法等。 习题参考答案: 1.什么是软件危机?为什么会出现软件危机? 答:软件危机是指在计算机的开发和维护过程中所遇到的一系列严重问题。这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。 出现软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。软件不同于硬件,它是计算机系统中逻辑件而不是物理部件。管理和控制软件开发过程相当困难。软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。目前相当多的软件专业人员对软件开发和维护还有不少糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这是使软件问题发展成软件危机的主要原因。总结如下: 1)取得正确的用户需求和正确地描述需求很困难 2)开发人员对需求的正确理解也有困难 3)常常在没有正确理解之前就仓促开始编程 4)软件项目缺乏有效的组织、管理和内部交流 5)缺乏软件开发方法、模型和工具的支持 6)软件维护的困难性 2.假设你是一家软件公司的总工程师,当你把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意你的观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”你怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件已经完成时再引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。 3.什么是软件工程?它有哪些本质特性?怎样用软件工程消除(至少是缓解)软件危机? 答:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。

软件工程笔记(完整版)

第一章软件工程概述 1.软件危机 (software crisis):是指在计算机软件的开发和维护过程中所遇到的一系列 严重问题。即“两低一高”问题:质量低、效率低、成本高。 软件危机也成为“软件萧条(depression)”或“软件困扰(afflication)” 2.软件危机主要表现 1)开发成本和进度估计不准 2)用户对“已完成的”软件系统不满意 3)软件质量往往靠不住 4)软件常常是不可维护的 5)软件通常没有适当的文档资料 6)软件成本逐年上升 7)软件开发生产率滞后于硬件和计算机应用普及的趋势 3.产生软件危机的原因 1)与软件本身的特点有关 a. 软件不同于硬件,是逻辑部件而不是物理部件 缺乏可见性 难于测试 管理和控制开发过程困难 不会因使用时间过长而被“用坏” 难以维护 b.软件不同于一般程序,规模庞大,而且程序复杂性随着程序规模的增加而呈指数上 升 2)和软件开发与维护的方法不正确有关 a.对软件开发和维护有关的错误认识和作法 忽视软件需求分析的重要性 认为软件开发就是写程序 轻视软件维护 b. 对软件开发过程与方法的认识与应用 软件开发要经历一个漫长的时期(编程占10-20%) 程序仅是完成软件配置的一个组成部分 软件开发方法要有利于软件维护 4.软件的特点 (1)软件是无形的(intangible) (2)软件副本的大批量生产轻而易举 (3)软件业是劳动密集型的 (4)一个没有经过充分训练的软件开发人员很容易编写出难以理解和修改的软件 (5)软件本身很容易修改。但由于它的复杂性,又很难正确地修改。 (6)软件不像其他的工业产品那样会因使用而磨损,随着反复修改,它的设计会逐渐退 化 5.消除软件危机的途径 1)对计算机软件的正确认识 2)认识到软件开发不是个体劳动的神秘技巧,而是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目 3)推广使用成功的软件开发技术和方法

软件工程第一章概述

第一章:概述 目标: 什么是软件工程,为什么它很重要; 开发不同类型的软件系统可能需要不同的软件工程方法; 道德和职业问题对于软件工程的重要性; 介绍3个不同类型的软件系统,这3个系统将作为贯穿全书的例子; 1.1专业化软件开发 一.对于软件工程的一些常见问题 1.什么是软件? 计算机程序和相关文档。软件产品可针对特定客户开发或为通用市场开发。 2.什么是优良软件的特点? 好的软件应具有用户所需的功能与性能,而且应该可维护,可靠,可用。 3.什么是软件工程? 软件工程师关于软件生产的各个方面的工程学科。 4.什么是基本的软件工程活动? 软件描述,软件开发,软件验证以及软件进化。 5.软件工程和计算机科学有何区别? 计算机科学侧重理论和基础,而软件工程则侧重于软件开发和交付的实际活动。 6.软件工程和系统工程有何区别? 系统工程侧重基于计算机系统的开发的所有方面,包括硬件,软件和过程工程。 7.软件工程面临的主要挑战是什么? 不断增长的多样性,减少交付时间以及开发可靠的软件的要求。 8.什么是软件工程的成本? 软件开发成本约占总成本的60%,测试成本占40%。对于定制软件而言,进化成本常常高于开发成本。 9.什么才是最好的软件工程技术和方法? 由于所有的软件项目都必须进行专业化的管理和开发,所以不同的技术应适用于不同类型的系统。例如,游戏开发需要一系列原型,而安全要求极高的控制系统开发需要一个完整的和可分析的描述。因此,你不能单纯的评判一种方法比另一种方法更好。 10.Web给软件工程带来了哪些不同? Web带来了软件服务的可用性,以及开发高品质的基于服务的分布式系统的可能性。基于Web的系统开发极大地促进了编程语言和软件复用的发展。 二.软件产品有以下两类 1.通用软件产品 2.定制软件产品 这两类产品的一个重要区别在于:在通用软件产品中,软件描述由开发者自己完成,而定制软件产品,其软件描述通常是由客户给出,开发者必须按客户要求进行开发。 三.软件除了提供相应的功能外,作为一个产品它还有一系列相关的反映质量的属性。这些属性不直接涉及软件的功能,而是反映软件在执行时的行为以及源程序的结构,组织及相关的文档。软件对用户查询的响应时间和程序代码的可理解性就属于这类属性(有时也称为非

软件工程笔记(完整版)

第一章软件工程概述 1. 软件危机(software crisis):是指在计算机软件的开发和维护过程中所遇到的一系列 严重问题。即“两低一高”问题:质量低、效率低、成本高。 软件危机也成为“软件萧条(depression) ”或“软件困扰(afflication) ” 2. 软件危机主要表现 1 )开发成本和进度估计不准 2 )用户对已完成的”软件系统不满意 3 )软件质量往往靠不住 4 )软件常常是不可维护的 5 )软件通常没有适当的文档资料 6 )软件成本逐年上升 7 )软件开发生产率滞后于硬件和计算机应用普及的趋势 3. 产生软件危机的原因 1 )与软件本身的特点有关 a. 软件不同于硬件,是逻辑部件而不是物理部件 缺乏可见性 难于测试 管理和控制开发过程困难 不会因使用时间过长而被“用坏” 难以维护 b. 软件不同于一般程序,规模庞大,而且程序复杂性随着程序规模的增加而呈指数上升 2 )和软件开发与维护的方法不正确有关 a. 对软件开发和维护有关的错误认识和作法 忽视软件需求分析的重要性 认为软件开发就是写程序 轻视软件维护 b. 对软件开发过程与方法的认识与应用 软件开发要经历一个漫长的时期(编程占10-20%) 程序仅是完成软件配置的一个组成部分 软件开发方法要有利于软件维护 4. 软件的特点 (1) 软件是无形的(intangible ) (2) 软件副本的大批量生产轻而易举 (3) 软件业是劳动密集型的 (4) 一个没有经过充分训练的软件开发人员很容易编写出难以理解和修改的软件 (5) 软件本身很容易修改。但由于它的复杂性,又很难正确地修改。 (6) 软件不像其他的工业产品那样会因使用而磨损,随着反复修改,它的设计会逐渐退 化 5. 消除软件危机的途径 1) 对计算机软件的正确认识 2 )认识到软件开发不是个体劳动的神秘技巧,而是一种组织良好、管理严密、各类人员 协同配合、共同完成的工程项目 3 )推广使用成功的软件开发技术和方法

相关主题
文本预览
相关文档 最新文档