计算机软件工程第一章习题答案

合集下载

《软件工程》各章课后习题答案

《软件工程》各章课后习题答案

《软件工程》各章课后习题答案软件工程是计算机科学与技术的一门重要学科,旨在研究和应用工程原则和方法来开发高质量的软件系统。

课程中的习题对于加深学生对软件工程理论和实践的理解至关重要。

下面是对《软件工程》各章课后习题的答案,希望能够帮助你更好地掌握软件工程的知识。

第一章:软件工程导论1. 软件工程的定义:答:软件工程是通过应用系统化、规范化和可量化的方法进行软件开发、运行和维护的学科。

2. 软件工程的目标:答:软件工程的目标是提高软件开发的质量、效率和可靠性,使得软件能够满足用户的需求和期望。

3. 软件生命周期模型:答:常见的软件生命周期模型包括瀑布模型、迭代模型、敏捷模型等。

每个模型都有其独特的特点和适用场景。

4. 软件过程模型:答:软件过程模型描述了软件开发过程中的一系列活动和阶段,常见的软件过程模型包括瀑布模型、迭代模型、敏捷模型等。

5. 软件工程的基本原则:答:常见的软件工程基本原则包括分阶段、逐步求精、持续集成、迭代开发、需求优先等。

第二章:软件项目管理1. 软件项目管理的定义:答:软件项目管理是指对软件开发过程中的资源、进度、质量等进行有效管理,以确保软件项目能够按时、按质地完成。

2. 软件项目管理的内容:答:软件项目管理包括项目计划、需求管理、项目进度管理、资源管理、风险管理等方面。

3. 软件项目管理的方法:答:常见的软件项目管理方法包括敏捷项目管理、水平项目管理、里程碑项目管理等。

4. 软件项目管理的工具:答:常用的软件项目管理工具包括甘特图、PERT/CPM网络图、项目管理软件等。

第三章:软件需求分析与规格说明1. 软件需求的定义:答:软件需求是指用户对软件系统的要求和期望,包括功能需求、性能需求、接口需求等方面。

2. 软件需求分析的方法:答:常用的软件需求分析方法包括面向对象分析法、数据流图法、用例分析法等。

3. 软件需求规格说明的格式:答:常见的软件需求规格说明的格式包括自然语言描述、结构化描述、图形描述等。

软件工程习题及解答1

软件工程习题及解答1

软件工程第一章习题一、选择题1、软件是计算机系统中与硬件相互依存的另一部分,它是包括( A )、( B )及( C )的完整集合。

其中,( A )是按事先设计的功能和性能要求执行的指令序列。

( B )是使程序能够正确操纵信息的数据结构。

( C )是与程序开发、维护和使用有关的图文材料。

供选择的答案:A~C. ①软件②程序③代码④硬件⑤文档⑥外设⑦数据⑧图表2、开发软件时对提高软件开发人员工作效率至关重要的是( A )。

软件工程中描述生存周期的瀑布模型一般包括计划、( B )、设计、编码、测试、维护等几个阶段,其中设计阶段在管理上又可以依次分成( C )和( D )两步。

供选择的答案:A.①程序开发环境②操作系统的资源管理功能③程序人员数量④计算机的并行处理能力B.①需求分析②需求调查③可行性分析④问题定义C、D.①方案设计②代码设计③概要设计④数据设计⑤运行设计⑥详细设计⑦故障处理设计⑧软件体系结构设计3、从供选择的答案中选出适当字句填入下列关于软件发展过程的叙述中的( )内。

有人将软件的发展过程划分为4个阶段:第一阶段(1950~1950年代末)称为“程序设计的原始时期”,这时既没有( A ),也没有( B ),程序员只能用机器指令编写程序。

第二阶段(1950年代末~1960年代末)称为“基本软件期”。

出现了( A ),并逐渐普及。

随着( B )的发展,编译技术也有较大的发展。

第三阶段(1960年代末~1970年代中期)称为“程序设计方法时代”。

这一时期,与硬件费用下降相反,软件开发费急剧上升。

人们提出了( C )和( D )等程序设计方法,设法降低软件的开发费用。

第四阶段(1970年代中期~现在)称为“软件工程时期”。

软件开发技术不再仅仅是程序设计技术,而是包括了与软件开发的各个阶段,如( E )、( F )、编码、单元测试、综合测试、( G )及其整体有关的各种管理技术。

供选择的答案:A ~ D:①汇编语言②操作系统③虚拟存储器概念④高级语言⑤结构式程序设计⑥数据库概念⑦固件⑧模块化程序设计E ~ G:①使用和维护②兼容性的确认③完整性的确认④设计⑤需求定义⑥图象处理二、简答题1、美国一家公司在1982年计划用FORTRAN语言开发一个在VAX750计算机上运行的应用程序,估计这个程序的长度为10000条FORTRAN指令。

软件工程第一章习题答案

软件工程第一章习题答案

第一章习题1.1什么是计算机软件?软件的特点是什么?答:计算机软件(Computer Software,也称软件,软体)是指计算机系统中的程序及其文档,程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料。

程序必须装入机器内部才能工作,文档一般是给人看的,不一定装入机器。

软件的特点:1.软件是一种逻辑实体而不是有形的系统元件,其开发成本和进度难以准确的估算。

2.软件是被开发的或设计的,没有明显的制作工程,一旦开发成功,只需复制即可,但其维护的工作量大。

3.软件的使用没有硬件那样的机械磨损和老化问题。

1.2简述软件的分类,并举例说明。

答:软件分为系统软件,支撑软件和应用软件3类。

系统软件居于计算机系统中最靠近硬件的一层其他软件一般都通过系统软件发挥作用。

例如:编译程序,操作系统等。

支撑软件是支撑软件的开发和维护的软件。

例如:数据库管理系统,网络软件,软件工具,软件开发环境等。

应用软件是特定应用领域专用软件。

例如:工程/科学计算软件,嵌入式软件,产品线软件,Web应用软件,人工智能软件等。

1.3简述软件语言的分类,并举例说明。

答:软件语言是用于书写计算机软件的语言主要包括:需求定义语言,功能性语言,设计性语言,实现性语言和文档语言。

需求定义语言用以书写软件需求定义,软件需求定义是软件功能需求和非功能需求的定义性描述。

软件功能需求刻画“做什么”,软件非功能需求刻画诸如功能性限制、设计限制、环境描述、数据预通信规程以及项目管理等。

功能性语言用以书写软件功能规约,软件功能规约是软件功能的严格而完整的陈述。

软件功能规约通常只刻画软件系统“做什么”的外部功能,而不涉及系统“如何做”的内部算法,因此,功能性语言通常又称为功能规约语言。

设计性语言用以书写软件设计规约。

软件设计规约是软件设计的严格而完整的陈述。

一方面,它是软件功能规约的算法性细化,刻画了软件“如何做”的内部算法;另一方面,它又是软件实现的依据从。

软件工程课后习题参考答案

软件工程课后习题参考答案

软件工程课后习题参考答案软件工程课后习题参考答案1. 第一章规约与软件工程概述1.1 规约的定义规约是软件开发过程中明确要求的描述,包含了对软件需求、设计、实现、测试、部署和维护等各个阶段的要求和约束。

1.2 软件工程的概述软件工程是一门涉及对软件的开发、运行和维护的学科。

它通过应用工程原则和方法,以系统化、规范化、可靠化、经济化和高质量的方式来开发和维护软件。

2. 第二章软件需求规约2.1 软件需求规约的作用软件需求规约是对软件系统所需功能和性能的具体描述和说明,是软件开发的基础和依据。

它指导着开发团队的工作,确保软件的功能和性能符合用户的需求。

2.2 软件需求规约的要素软件需求规约包括功能需求、非功能需求和约束条件。

功能需求描述了软件系统应该具备的功能,非功能需求描述了软件系统的性能要求和质量特性,约束条件描述了软件系统所受限制的条件。

3. 第三章软件设计规约3.1 软件设计规约的目标软件设计规约是对软件系统进行结构化和模块化设计的过程,其目标是确保软件系统具备可靠性、可维护性、可扩展性和可重用性。

3.2 软件设计规约的方法软件设计规约采用面向对象设计、结构化设计和模块化设计等方法。

面向对象设计强调将问题领域的概念和对象转化为软件系统的类和对象,结构化设计强调将系统分解为模块,模块化设计强调模块间的接口和通信。

4. 第四章软件实现规约4.1 软件实现规约的目的软件实现规约是指将软件设计阶段得到的设计规约转化为计算机可执行的程序代码,其目的是确保软件系统的正确性、可靠性、可维护性和可测试性。

4.2 软件实现规约的技术软件实现规约采用编程语言、软件开发工具和软件开发环境等技术。

编程语言提供了描述算法和数据结构的语法和语义,软件开发工具提供了代码编辑、编译、调试和测试等功能,软件开发环境提供了开发的整体支持。

5. 第五章软件测试规约5.1 软件测试规约的目的软件测试规约是对软件系统进行功能、性能和质量等方面的验证和检测,其目的是找出软件系统的错误和缺陷,并修复和改进。

软件工程课后习题答案第五版

软件工程课后习题答案第五版

软件工程课后习题答案第五版《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。

(2)软件产品的质量往往靠不住。

(3)一般软件很难维护。

(4)软件生产效率很低。

(5)软件开发成本越来越大。

(6)软件成本与开发进度难以估计。

- (7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。

2.为什么会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。

造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。

(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。

(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。

3.怎样克服软件危机?(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。

在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。

(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。

(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。

将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。

- 总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。

5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。

软件工程答案

软件工程答案

软件工程第一章作业1.1什么是计算机软件?软件的特点是什么?答:计算机软件指计算机系统中的程序及其文档。

软件的特点是:A 软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以精确得估算;B 软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大;C 软件的运用没有硬件那样的机械磨损和老化问题。

1.2 简述软件的分类,并举例说明。

答:在《计算机科学技术百科全书》中,将软件分为系统软件、支撑软件和应用软件3类。

A 系统软件:系统软件居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。

系统软件和详细的应用领域无关。

例如:编译程序、操作系统等。

B 支撑软件:支撑软件是支撑软件的开发和维护的软件。

例如:数据库管理系统、网络软件、软件工具、软件开发环境等。

C 应用软件:应用软件是特定应用领域专用的软件。

例如:工程/科学计算软件、嵌入式软件、产品线软件、Web应用软件、人工智能软件。

1.4 什么是软件工程?答:在《计算机科学技术百科全书》中软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。

1.5 简述软件工程的基本原则。

答:软件工程原则包括围绕工程设计、工程支持和工程管理提出的以下4条基本原则:第一条:围绕适宜的开发模型;其次条:接受合适的设计方法;第三条:供应高质量的工程支撑;第四条:重视软件工程的管理。

1.6 软件生存周期分哪几个阶段?分别简述各个阶段的任务。

答:软件生存周期有计算机系统工程、需求分析、设计、编码、测试、运行和维护6个阶段。

A计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件和其他计算机系统元素之间的关系,进行成本估算,做出进度支配,并进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中做出选择。

B需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面等要求,生成软件需求规约。

软件工程课后参考答案完整版

软件工程课后参考答案完整版

软件工程课后参考答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】第一章课后参考答案1.什么是软件危机它们有哪些典型表现为什么会出现软件危机“软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。

这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。

它们有以下表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。

出现软件危机的主要原因(1)与软件本身的特点有关(2)与软件开发和维护过程中使用的方法不正确有关2.假设自己是一家软件公司的总工程师,当把图给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”时在引入变动,当然付出的代价更高。

一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。

3.什么是软件工程它有哪些本质特征怎么用软件工程消除软件危机软件工程是指导知道计算机软件开发和维护的一门工程学科。

采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

软件工程第1章习题

软件工程第1章习题

软件工程第1章例题分析与解答一、填空题1.软件与物质产品有很大的区别,软件是一种____逻辑___产品。

2.软件工程是一门综合性交叉学科,计算机科学着重于理论和原理,软件工程着重于___建造一个软件系统____。

3.概要设计主要是把各项功能需求转换成系统的__体系结构______。

4.最基本、应用广泛、以文档为驱动、适用于开发功能明确的软件项目生存期模型是__瀑布模型_____。

5.简单实用、应用广泛、技术成熟的开发方法是__结构化方法______。

二、选择题1.同一软件的大量软件产品的生产主要是通过( B )而得到。

A.研究B.复制C.开发D.研制2.作坊式小团体合作生产方式的时代是( C )时代。

A.程序设计B.软件生产自动化C.程序系统D.软件工程3.软件工程与计算机科学性质不同,软件工程着重于( C )。

A.理论研究B.原理探讨C.建造软件系统D.原理的理论4.将每个模块的控制结构转换成计算机可接受的程序代码是( A )阶段的任务。

A.编码B.需求分析C.详细设计D.测试5.软件生存周期中时间最长的是( D )阶段。

A.需求分析B.概要设计C.测试D.维护一、填空题答案1.逻辑2.建造一个软件系统3.体系结构4.瀑布模型5.结构化方法二、选择题答案1.B2.C3.C4.A5.D第1章自测题及参考答案一、名称解释1.软件2.文档3.软件工程4.软件生存周期5.软件工程过程6.软件生存周期模型7.软件开发方法8.软件工具二、填空题1.构成一个完整计算机系统的两部分是硬件与_____软件___。

2.程序设计时代的生产方式是___个体手工劳动_____。

3.软件工程涉及到几个学科,它是一门__综合性交叉___学科。

4.软件开发划分的各阶段任务尽可能独立,同一阶段任务性质尽可能_____相同___。

5.将软件生存周期各个活动规定为依线性顺序联接的若干阶段的模型是_瀑布_______模型。

6.喷泉模型是一种以用户需求为动力,以____对象___为驱动的模型。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.计算机软件具有哪些共同特点?它们和硬件的主要区别有哪些?(1)软件是一种逻辑实体,而不是具体的物理实体。

因此,它具有抽象性。

(2)软件的生产与硬件不同,软件是由开发或工程化而形成的,它没有明显的制造过程。

对软件的质量控制,必须立足于软件开发方面。

软件成为产品之后,其制造只是简单的复制而已。

(3)任何机械、电子设备在运行和使用过程中,其失效率大致遵循如图1-6所示的U型曲线(即浴盆曲线)。

软件的情况与此不同,它不存在磨损和老化问题。

然而,它存在退化问题,设计人员必须多次修改(维护)软件。

图1-7给出了软件故障率的理想曲线,图1-8给出了实际的软件故障率曲线。

故障率时间0t图1-6 硬件的故障率曲线示意图图1-7 软件的理想故障曲线故障率0时间t理想曲线实际曲线由于负作用造成的故障率提高图1-8 软件的实际故障率曲线(4) 软件的开发和运行往往受到计算机系统的限制,对计算机系统有着不同程度的依赖性。

为了解除这种依赖性,在软件开发中提出了软件移植的问题。

(5) 迄今为止,虽然有许多软件工具能够帮助我们自动生成一些软件代码、结构和框架,但是总体来说,软件的开发尚未完全摆脱手工的方式。

(6) 软件本身是复杂的。

软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。

(7)软件的成本相当昂贵。

软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它投入的成本是比较高的。

(8)相当多的软件工作涉及社会因素。

许多软件的开发和运行涉及机构设置、体制运作及管理方式等问题,甚至涉及人们的观念和心理,这些因素直接影响到项目的成败。

(9)从市场上买到的软件,它本身就是一个完整的软件,而不能作为构件再组装成新的程序。

但目前已有大量支持“软件复用”的软件和中间件作为相对独立的构件。

2.什么是软件生命周期?面向对象与传统软件工程有何相同之处?计算机软件,从决定进行开发到最终退役所经历的一系列步骤与过程称为软件生命周期。

通常将软件生命周期划分为需求分析、规格说明、设计、实现、集成、测试、维护和退役。

表1-1 两种软件开发方法生命周期的比较结构化软件开发阶段面向对象软件开发阶段需求分析阶段需求分析阶段规格说明阶段(以结构化方法与技术进行描述)规格说明阶段(面向对象方法与技术进行描述,同时辅之以结构化方法与技术)结构化概要设计阶段面向对象设计阶段详细设计阶段实现阶段面向对象实现阶段集成阶段集成阶段维护阶段维护阶段退役退役3.软件工程过程包含哪几种基本活动?P、D、C、A各代表什么意思?P(Plan)软件计划及规格说明过程。

规定软件的功能及其运行时的限制。

D(Do)软件开发过程。

产生满足规格说明的软件。

C(Check)软件确认过程。

确认软件能够满足客户提出的要求。

A(Action)软件演进过程。

为满足客户的变更要求,软件必须在使用的过程中演进。

4.简述软件生存周期的各个环节及各环节的主要内容。

(1)需求分析阶段。

探究抽象和求精概念,并明确客户的需求。

(2)规格说明(分析)阶段。

分析客户的需求,形成规格文档。

说明“产品要做什么”。

这个阶段有时也称为分析阶段。

(3)设计阶段。

规格说明顺序经历两个设计阶段。

第一是结构设计,即把产品由一个整体分解成多个组成部分,称为模块。

然后设计各个模块,这个阶段称为详细设计。

在此阶段产生“设计文档”,描述“产品是如何做成的”。

(4)实现阶段。

又可成为“编码阶段”,在这一阶段中,对各部分进行编码和测试。

(5)集成阶段。

将各组成部分合并成一个整体并做测试。

当开发者对产品满意后,就把它交给用户测试(验收测试)。

将用户对产品的认可作为这个阶段终止的标志。

(6}测试阶段。

针对不同的开发阶段,软件测试可以分为单元测试、集成测试、系统测试等不同的测试,其目的是及时发现软件开发各个阶段中的错误和问题。

(7)维护阶段。

维护是指在客户认可产品满足规格文档之后,对软件所做的所有修改。

维护包括改正性维护(或软件修正),主要是排除残余的故障,同时不改变规格说明,以及增进性维护(或软件更新),包括修改规格说明,并实现这些修改。

而增进性维护又包括两种类型。

第一是完善性维护,即用户认为能改善产品功能的修改,如附加功能或降低响应时间。

第二是适应性维护,即为适应产品运行环境的改变而做的修改,例如,出现了新的政府法令。

研究表明,平均来说,修正性维护大约占维护时间的17.5%,完善性维护占60.5%,适应性维护大约占18%。

(8)退役:产品退出服务。

5.软件危机主要包含哪些表现?结合自身实际,谈谈你对软件危机的认识和体会。

(1) 对软件开发成本和进度的估计常常很不准确。

实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几个月甚至几年的现象并不罕见。

这种现象降低了软件开发组织的信誉。

而为了赶进度和节约成本所采取的一些权宜之计又往往降低了软件产品的质量,从而不可避免地会引起用户的不满。

(2) 用户对“已完成的”软件系统不满意的现象经常发生。

软件开发人员常常在对用户要求只有模糊的了解,甚至对所要解决的问题还没有确切认识的情况下,就仓促上阵,匆忙着手编写程序。

软件开发人员和用户之间的信息交流往往很不充分,“闭门造车”必然导致最终的产品不符合用户的实际需要。

(3) 软件产品的质量往往靠不住。

软件可靠性和质量保证的确切的定量概念刚刚出现不久,软件质量保证技术(审查、复审和测试)还没有完全地应用到软件开发的全过程中,这些都导致软件产品发生质量问题。

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

很多程序中的错误是非常难改正的,实际上不可能使这些程序适应新的硬件环境,也不能根据用户的需要在原有程序中增加一些新的功能。

“可重用的软件”还是一个没有完全做到的、正在努力追求的目标,人们仍然在重复开发类似的或基本类似的软件。

(5) 软件通常没有相关的文档资料。

计算机软件不仅仅是程序,还应该有一整套文档资料。

这些文档资料应该是在软件开发过程中产生出来的,而且应该是“最新式的”(即和程序代码完全一致的)。

软件开发组织的管理人员可以使用这些文档资料作为“里程碑”,来管理和评价软件开发工程的进展状况;软件开发人员可以利用它们作为通信工具,在软件开发过程中准确地交流信息;对于软件维护人员而言,这些文档资料更是至关重要、必不可少的。

缺乏必要的文档资料或者文档资料不合格,必然给软件开发和维护带来许多严重的困难和问题。

(6) 软件成本在计算机系统总成本中所占的比例逐年上升。

由于微电子学技术的进步和生产自动化程度不断提高,硬件成本逐年下降,然而软件开发需要大量人力,软件成本随着通货膨胀以及软件规模的不断扩大和数量的增加而持续上升。

美国在1985年软件成本大约已占计算机系统总成本的90%。

(7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

软件产品“供不应求”的现象使人类不能充分利用现代计算机硬件提供的巨大潜力。

6.软件工程学的范畴指的是什么?它包含哪些内容?计算机软件是整个计算机系统中具体实现各种功能和操作的核心部分。

软件工程采用工程的概念、原理、技术和方法来开发和维护计算机软件,将工程管理技术的成功经验和思想与具体的软件开发过程、研究技术相结合,形成一整套适合于计算机软件开发的方法、规范和技术。

7.软件工程的基本目标是什么?有何措施和方法尽可能达到理想的程度?●付出较低的开发成本。

●达到预期的软件功能。

●取得较好的软件性能。

●使开发的软件易于移植。

●需要较低的维护费用。

●能按时完成开发工作,及时交付使用。

8.软件生命周期各阶段的大致花费比例是多少?对于从事软件开发有何参考意义?9.从图1-3和图1-4中能够得到什么启发?图1-3 不同阶段检修故障的相对费用图1-4 实现描述图1-3中实线的各点按线性刻度标记的情况改进规格说明和设计技术非常重要,这不仅仅是为了能尽早地发现故障,也因为规格说明故障和设计所占所有故障的比重特别大。

通常,将维护费用降低10%,可以使总费用下降约7%;同样,规格说明故障和设计故障减少16%,可以使故障总数降低6%~7%。

10.认真比对图1-6、图1-7和图1-8,加深理解硬件与软件的本质区别。

11.简述软件工程原则。

(1)抽象:抽取事物最基本的特性和行为,忽略非基本细节。

采用分层次抽象,自顶向下、逐层细化的办法控制软件开发过程的复杂性。

(2)信息隐蔽:将模块设计成“黑箱”,实现细节隐藏在模块内部,不让模块的使用者直接访问。

这就是所谓信息封装(使用与实现分离)的原则。

使用者只能通过模块接口访问模块中封装的数据。

(3)模块化:模块是程序中在逻辑上相对自主的成分,是独立的编程单位,应有良好的接口定义,如C语言程序中的函数过程、 C++语言程序中的类。

模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。

(4)局部化:在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块之间有松散的耦合,模块内部有较强的内聚。

这有助于控制各个模块的复杂性。

(5)确定性:软件开发过程中所有概念的表达应是确定的、无歧义的、规范的。

这样有助于人们在交流时不会产生误解、遗漏,保证整个开发工作的协调一致。

(6)一致性:整个软件系统(包括程序、文档和数据)的各个模块应使用一致的概念、符号和术语;程序内、外部接口应保持一致;软件同硬件、操作系统的接口应保持一致;系统规格说明与系统行为应保持一致;用于形式化规格说明的公理系统应保持一致。

(7)完备性:软件系统不丢失任何重要成分,可以完全实现系统所要求的功能。

为了保证系统的完备性,在软件开发和运行过程中需要严格的技术评审。

(8)可验证性:开发大型的软件系统时需要对系统自顶向下、逐层分解。

系统分解应遵循使系统易于检查、测试、评审的原则,以确保系统的正确性。

除上述原则外,在现代软件开发过程中,还需特别注意的一个原则是事物分离原则(Principle of Separation of Concerns)。

它强调分析模型和设计模型应该分别建立,分析模型用于捕捉事物的本质或逻辑的需求,不考虑基于实现的系统需求。

而设计模型则以考虑描述在某一特定的实现环境下如何建立一个特定的软件系统为主要任务。

相关文档
最新文档