软件工程基础离线作业.docx

上传人:b****5 文档编号:7505489 上传时间:2023-01-24 格式:DOCX 页数:34 大小:235.33KB
下载 相关 举报
软件工程基础离线作业.docx_第1页
第1页 / 共34页
软件工程基础离线作业.docx_第2页
第2页 / 共34页
软件工程基础离线作业.docx_第3页
第3页 / 共34页
软件工程基础离线作业.docx_第4页
第4页 / 共34页
软件工程基础离线作业.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

软件工程基础离线作业.docx

《软件工程基础离线作业.docx》由会员分享,可在线阅读,更多相关《软件工程基础离线作业.docx(34页珍藏版)》请在冰豆网上搜索。

软件工程基础离线作业.docx

软件工程基础离线作业

浙江大学远程教育学院

《软件工程基础》课程作业

第一章概述

1.什么是软件危机,它有哪些典型表现?

答:

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

概括地说,软件危机包含下述两方问题:

如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

软件危机典型表现:

对软件开发成本和进度的做计常常很不准确。

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

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

软件常常是不可维护的。

软件通常没有适当的文档资料软件成本在计算机系统总成本中所占的比例逐年上涨。

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

产生软件危机的原因:

一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。

软件不同于硬件,它是计算机系统中逻辑部件而不是物理部件。

管理和控制软件开发过程相当困难。

软件是击规模庞大,而且程式复杂性将随着程式规模的增加而呈指数上升。

目前相当多的软件专业人员对软开发和维护还有不省糊涂观念,在实践过程中或多或省地采用了错误的方法和技术,这是使软件问题发展成软件危机的主机原因。

2.简述产生软件危机的原因和解决的思路。

答:

软件危机产生的原因一方面与软件本身的特点有关,另一方面,是与已有软件开发、维护的方法不正确有密切关系。

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

即采用工程化的原则和方法组织软件开发是摆脱软件危机的一个主要出路。

3.什么是软件工程?

它有哪些本质特性?

答:

软件工程是指导计算机软件开发和维护的一门工程学科。

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

软件工程本质特性:

1、软件工程关注注于大型程序的构造;2、软件工程的中心课题是控制复杂性;3、软件经常变化;4、开发软件的效率非常重要;5、和谐地合作是开发软件的关键;6、软件必须有效地支持它的用户;7、在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。

4.软件工程是如何用来消除软件危机的?

答:

消除软件危机的途径:

为了消除软件危要,首先庆该对计算机软件有一个正确的认识。

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

应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法,应当开发和使用更好的软件工具。

为了解决软件危机,既要有技术措施,又要有必要的组织管措施。

5.假设你是某软件开发企业的CEO,当你把教材P.4的图1.1给手下的软件工程师们看,同时告诉他们应及早发现并改正错误的重要性时,有人不以为然,认为要求在错误进入软件前就发现并清除它们是不现实的,并举例说:

“如果一个故障是编码错误造成的,那么又如何能够在设计阶段就发现并清除呢?

”那你应该如何说服?

答:

软件开发编码错误虽然无法完全避免,但是我们要掌握先进开发技术以及正确的开发方法,才能降低因某些错误引发软件危机。

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

应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法,应当开发和使用更好的软件工具。

为了解决软件危机,既要有技术措施,又要有必要的组织管措施。

6.简述软件的定义。

答:

软件=程序+数据+文档

7.软件工程的目的是什么?

答:

为高质量的软件开发提供一个科学的体系框架。

8.什么是软件工程方法学?

软件工程是一种什么样的技术?

包括哪三大要素?

分为哪三个分支?

答:

软件工程方法学就是指在软件生命周期全过程中使用的一整套管理和开发技术方法的集合。

目前,使用最广泛的软件工程方法学分别是传统方法学和面向对象方法学。

软件工程作为一种层次化的技术,有方法、工具和过程三大要素,并由于其涉及学科内容的极为广泛,而分为三个分支:

软件开发技术、软件项目管理技术、软件质量管理技术。

9.简述软件工程的基本原理。

答:

软件工程有7条基本原理:

1.严格按照软件生命周期计划进行管理

2.坚持进行阶段评审

3.实行严格的产品控制

4.采用先进的程序设计技术

5.结果应能清楚的审查

6.开发小组成员应少而精

7.承认不断改进软件工程实践的必要性

10.软件工程的基本开发原则有哪些?

答:

软件工程的基本开发原则有:

1.模块化

2.抽象和信息隐蔽

3.模块的高内聚和低耦合

4.确定性

5.一致性

6.完备性

11.构成软件工程的基本元素有哪些?

答:

除了前面给出的软件工程三大要素,还应该包括控制和质量保证。

这里的控制,即规模控制、成本控制、复杂性控制等。

12.什么是软件过程?

它与软件工程方法学有何关系?

答:

软件过程是指为了获得高质量软件产品,在软件工具支持下,由软件人员完成的一系列软件工程活动。

软件过程规定了开发软件所需完成的各项任务步骤。

过程步骤的设定与软件生命周期、生命周期模型、软件开发工具,以及参与开发的人员等诸方面因素有关。

13.什么是软件生命周期?

什么是软件生命周期模型?

答:

软件如同自然界任何事物一样,都有其孕育、诞生、成长、成熟、衰亡的生存过程。

软件的这一过程,称为软件生命周期。

软件生命周期模型也称软件开发过程模型,是为了解决产业环境中的实际问题,而提出的开发策略。

是反映整个软件生命期中,系统开发、运行、维护等实施活动的一种结构框架。

14.简述软件生命周期方法学的途径,以及划分阶段步骤的目的和实质。

答:

软件生命周期方法学是软件工程的传统途径,划分阶段步骤的目的和实质是:

控制开发工作的复杂性,通过有限步骤,把抽象逻辑概念,转化为具体物力实现。

15.试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明它们各自的适用范围。

答:

1.瀑布模型。

瀑布模型广为人知和历史悠久,其优势是规范及文档驱动的方法。

但问题是,往往不能够真正满足用户的需求。

适用于传统软件工程领域的结构化开发。

2.原型模型。

是为了克服瀑布模型的缺点而提出来的。

通过快速构建一个在机器上可运行的原型系统,让用户试用原型,并收集反馈意见的办法,来获取用户真实的需求。

3.螺旋模型。

螺旋模型适用于大型软件项目,比起之前的其它模型而言,有其一定的优越性,但这些优越性并不是绝对的。

主要体现在对开发人员的风险评估经验和专门知识的要求较高。

如果项目风险较大,而开发人员的水平较低,不能准确的识别和分析风险,则势必造成重大损失。

4.增量模型。

具有在软件开发早期阶段使投资获得明显回报和交易维护的优点,但是要求软件具有开放的结构。

第二章可行性研究

1.在软件开发的早期阶段,为什么要进行可行性研究?

其目的和任务各是什么?

答:

可行性研究的目的是用最小的代价,在尽可能短的时间内确定问题是否可解决,以及是否值得解决。

可行性研究的任务不是解决问题,而是确定是否可解/值得解。

2.应该从哪些方面研究目标系统的可行性?

答:

主要从以下几个方面进行可行性研究:

1.技术可行性。

以现有技术,能否在预定时间内完成该系统开发。

2.经济可行性。

通过成本-效益分析,估算系统的整体经济效益是否满足要求。

3.操作可行性。

分析系统的运行方式、操作规程是否适应用户应用需要。

4.社会可行性。

分析系统在法律、社会、市场等方面的认可度。

3.可行性研究有哪些工作步骤?

答:

(1)复查定义,确定系统规模和目标。

(2)研究老系统

(3)导出高层逻辑模型(conceptualdesign)

(4)重新定义

(5)导出多种解法

(6)推荐行动方针

(7)开发计划(粗略)

(8)审查、存档

4.简述系统流程图在可行性研究中的作用。

答:

系统流程图是概括的描述物理系统的传统工具。

系统流程图反映的是信息在系统各部分间流动的情况。

系统流程图可以帮助了解和分析系统,以概括的方式表达对系统的认识,并可以描述未来物理系统的概貌。

5.简述数据流图在可行性研究中的作用和用途。

答:

数据流图在可行性分析中可以帮助分析和描绘数据在软件中流动和被处理的逻辑过程,用图形的方式描述系统的逻辑功能,是系统分析员和用户之间理想的通信工具。

6.简单描述数据字典但内容和定义数据的方法。

答:

数据字典主要由下列4种元素定义组成:

1.数据流

2.数据流分量

3.数据存储

4.处理

除了数据定义外,数据字典还应包含一些关于数据的其它信息。

定义数据的方法通常采用自顶向下分解的方式。

并由顺序、选择、重复三种基本数据元素类型组成数据。

7.说明软件计划的内容和目标。

答:

软件计划的内容=项目任务范围+环境资源+工作量+进度

软件计划的目标是为了提供一个框架,以便于管理者对资源、成本和进度等进行合理的估算。

8.什么是软件范围?

定义软件范围需要哪些信息?

答:

软件范围就是在技术和管理层面上都是无二义性和可理解的项目范围,是软件开发各阶段的工作依据。

定义软件范围需要以下信息:

a.与用户、总体目标及利益相关的问题。

b.有利于系统分析员理解的问题。

c.集中于交流效果的问题。

9.简述软件开发环境资源的三个层次。

答:

软件开发环境资源由三个层次构成:

开发环境、软件构件以及最重要的资源——人。

10.软件环境资源的特征有哪些?

它们对制定软件计划都有哪些意义?

答:

每一类资源都有四个特征:

资源描述、可用性说明和资源提供的时间、资源使用的延续时间。

可以为制定软件计划估算软件开发所需的资源。

11.软件计划中,安排软件开发进度主要可以用哪些工具?

都有哪些优缺点?

答:

甘特图的优点是简单,能动态地反映开发进展;缺点是难以反映多个任务间的逻辑关系。

网络计划法则恰好弥补了甘特图的缺点,最适合反映多个工作之间的逻辑关系。

12.主要的成本估计技术有哪些?

其依据的主要是什么?

答:

主要有,代码行技术。

是一种基于规模的分解估算:

D=∑f(vi)

以及基于问题的分解估算:

EV=(Sopt+4Sm+Spess)/6

还有功能点技术。

这种技术以功能点(FP)为单位,度量软件的规模。

由于项目本身的复杂性,因此,成本估计技术主要采用“分而治之”的分解技术对软件项目进行估算。

13.为什么说成本估计是不可能精准的?

答:

那是由于太多的变化因素——人员、技术、环境、策略、复杂性等等,使得成本估算永远不可能精确。

14.进行成本/效益分析的方法主要有哪些?

答:

常用成本/效益分析的方法主要有:

(1)货币的时间价值

(2)投资回收期

(3)纯收入

(4)投资回收率

15.软件计划的主要内容有哪些?

答:

1.概述:

一般性地叙述开发项目,描述计划组织,并概述这个文档其余部份的内容。

2.阶段计划:

讨论项目开发周期——需求分析阶段、总体设计阶段、详细设计阶段等等。

详细说明每个阶段应该完成的日期,并指出不同阶段可以相互重叠的时间等等。

3.组织计划:

规定从事这个开发项目的每个小组的具体责任。

4.测试计划:

概述应进行的测试和需要的工具,以及完成系统测试的过程和分工,在这一节中并不包括具体的测试方案。

5.变动控制计划:

确定在系统开发过程中需求变动时的管理控制机制。

6.文档计划:

这一节的目的是定义和管理与项目有关的文档。

7.培训计划:

培训从事开发工作的程序员和使用系统的用户的计划。

8.复审和报告计划:

讨论如何报告项目的状况,并确定对项目进展情况进行正式复审的计划。

9.安装和运行计划:

描述在用户现场安装该系统的过程。

10.资源和配置计划:

概述关键的细节计划——进度、里程碑和按合同规定应交付的系统配置成份。

11.索引

16.如何对制定完成的软件计划进行复审?

为什么要复审?

答:

软件计划的复审通常涉及有关软件工作范围和软硬件资源问题等。

复审应该邀请用户参加,用户可提出建议,并与开发人员最终商定内容。

复审内容分为技术和管理两个方面:

技术方面需要考虑的问题有:

系统的任务是否合理;

系统的给你复杂性是否与开发成本、进度以及风险一致;

系统规格说明书是否足够充分;

系统性能要求是否恰当

管理方面需要考虑的问题有:

计划中描述的工作范围是否符合用户需求?

计划中对资源的描述是否有效、合理?

计划中系统的开发成本与进度要求是否合理?

计划中人员的安排是否合理?

系统开发存在哪些风险?

复审可以尽早发现错误,复审是软件质量保证的重要措施。

17.为方便储户,某银行拟开发计算机储蓄系统。

储户填写的存款单或取款单由业务员键入系统。

如果是存款,系统记录存款人的姓名、地址、存款类型、存款日期、存款数量和利率等信息,并印出存款单给储户;如果是取款,系统计算利息并印出利息清单给储户。

请写出问题定义并分析此系统的可行性。

答:

可行性研究的步骤

1、复查定义,确定系统规模和目标,我们认为用户要的还是真是用户所要的。

2、研究老系统,研究老系统存在哪些问题?

3、导出高层逻辑模型

4、重新定义逻辑模型>复查定义

注:

此时合同未签,应考虑成本,不宜反复太多次。

5、导出多种解法

第三章需求分析

1.为什么要进行需求分析?

通常对软件系统有哪些需求?

答:

需求问题是软件工程项目失败的主要原因。

一个高质量的软件,很大程度上取决于对要解决的问题的认识,以及如何准确的表达用户的需求。

需求分析就是要解决这个问题。

通常,对一个软件系统的需求可以有功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求等多个方面。

2.怎样与用户有效地沟通,以获得用户的真实需求?

答:

访谈、情景分析,以及面向数据流的自顶向下求精等方法,编制简易的系统规格说明文档,创建原型等,是获取真实需求的有效方法。

3.需求分析的任务是什么?

答:

确定对待开发系统的综合要求。

4.通常系统的需求可以分为哪几个层次?

答:

一般可以分成5个层次:

(1)功能需求:

系统必须做什么?

(2)业务需求:

反映客户组织机构对系统高层次的目标要求。

(3)运行需求:

运行环境、软硬件配置等。

(4)属性需求:

包括用户关心的属性,如效率、灵活性、完整性、可靠性等;开发者关心的属性,如可维护性、可复用性、可移植性等。

(5)未来可能的扩充需求:

如HDIS各组的合并,3维虚拟现实的效果等等。

5.进行需求分析的步骤有哪些?

答:

1.确定系统的综合要求

2.分析系统的数据要求

3.导出逻辑模型

4.修正系统开发计划

6.简述建立原型模型对软件需求分析的作用。

答:

可以快速构建旨在演示目标系统主要功能的可运行程序,帮助用户确定及提供更为精准的需求,以利用户和开发者能够在目标系统应该“做什么”这一问题上尽快达成一致。

7.解释实体-联系图及其用途。

答:

实体-联系图是按照用户的观点对数据建立的模型。

描述从用户角度看到的数据,反映用户的现实环境,并且与在软件系统中的实现方法无关。

8.说明为什么需要进行需求验证及验证的步骤有哪些?

答:

进行需求验证是为了确保软件开发的质量,降低开发成本。

通常对需求进行验证的步骤有:

验证需求的一致性、验证需求的现实性、验证需求的完整性和有效性。

9.银行计算机储蓄系统的工作过程大致如下:

储户填写的存款单或取款单由业务人员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。

请用数据流图描绘本系统的功能,并用实体-联系图描绘系统中的数据对象。

答:

 

 

 

ER模型

本问题中共有两类实体,分别是“储户”和“储蓄所”,在它们之间存在“存取款”关系。

因为一位储户可以在多家储蓄所存取款,一家储蓄所拥有多位储户,所以“存取款”是多对多(M:

N)关系。

储户的属性主要有姓名、住址、电话号码和身份证号码,储蓄所的属性主要是名称、地址和电话号码,而数额、类型、到期日期、利率和密码则是关系类型存取款的属性

第四章总体设计

1.为每种类型的模块耦合举一个具体的例子。

答:

1、内容耦合(ContentCoupling):

一个模块修改另一个模块的内容。

例1:

A访问C的内部数据或不通过正常入口而转入C的内部。

2、公共耦合(Commoncoupling):

若干模块通过一个公共数据环境相互作用。

例2:

3、控制耦合(Controlcoupling):

一个模块通过传递开关、标志、名字等控制信息,明显地控制选择另一个模块的功能。

例3:

4、数据耦合(Datacoupling):

模块间通过数据参数交换I/O信息。

2.为每种类型的模块内聚举一个具体的例子。

答:

低内聚

巧合内聚(Coincidentalcohesion):

模块内各功能段之间不存在有意义的联系。

逻辑内聚(Logicalcohesion):

将若干具有逻辑相似性的功能段放在一个模块内。

例如:

时间内聚(Temporalcohesion):

把在系统运行的同一时间处理的元素组合成一个模块

例如:

系统的初始化

中内聚:

过程内聚(Proceduralcohesion):

模块内的处理是相关,且须以特定次序执行。

例如:

通信内聚(Communicationalcohesion):

模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据。

例如:

从同一磁带上读取不相干的数据——可能破坏独立性。

高内聚:

信息内聚(Informationcohesion):

模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一入口。

功能内聚(Functionalcohesion):

一个特定功能仅在一个模块内实现。

3.简单说明系统总体设计的步骤步骤。

答:

典型的总体设计包括以下9个步骤:

1、确定最佳方案

2、选取合理方案

3、推荐最佳方案

4、功能分解

5、软件结构设计

6、设计数据库

7、制定测试计划

8、书写文档

9、审查和复审

4.举例说明模块化原理的经验1和经验2。

5.为什么要尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内容耦合?

答:

减少模块之间的关联度,提高模块的独立性。

因为内容耦合会导致一个模块修改另一个模块的内容,使得程序逻辑发生严重问题。

而公共耦合是若干模块通过一个公共数据环境相互作用,公共部分的改动将影响所有调用它的模块,公共部分的数据存取无法控制,并且复杂程度也会随耦合模块的个数增加而增加。

控制耦合是一个模块通过传递开关、标志、名字等控制信息,明显地控制选择另一个模块的功能。

由于接口单一,因此仍然会影响被控模块的内部逻辑。

而数据耦合只是模块间通过数据参数来交换I/O信息,因此不会对其它模块产生任何等影响。

6.为什么模块的规模要适中?

答:

过大不易理解;太小则接口开销过大。

7.请说明为什么模块控制的宽度和深度要适度。

答:

深度过大表示分工过细,而宽度过大则表示系统复杂度大,所以模块控制的宽度和深度要适度。

8.简述面向数据流设计方法的基本思想。

答:

将由数据流图描绘的信息在系统中加工和流动的情况映射成软件结构。

9.常用数据流类型有哪些?

答:

变换流和事务流。

10.面向数据流的设计方法主要有哪几个步骤?

答:

1.复查基本系统模型

2.复查并精化数据流图

3.确定数据流图具有变换特性还是事务特性

4.确定输入流和输出流动边界,从而孤立出变换中心

5.完成“第一级分解”

6.完成“第二级分解”

7.使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化

11.用面向数据流的方法设计第二章习题17系统的软件结构。

答:

 

 

不能是两个分开的子系统,是相同的前台单个处理

 

不能是两个分开的子系统,是相同的前台单个处理

 

第五章详细设计

1.详细设计的任务是什么?

答:

包括模块的算法设计、模块内的数据结构设计、模块接口设计、其它根据软件特点需要完成的设计、模块测试用例设计、设计文档编写、设计评审。

2.在对系统做详细设计时,应遵循哪些原则?

答:

①模块的逻辑描述应清晰易读、正确可靠;

②设计的处理过程应该简明易懂;

③选择恰当的描述工具来描述模块算法。

3.简述结构化设计的特点。

答:

①自顶向下、逐步求精;

②具有单入、单出的控制结构(取消GOTO语句)

4.结构化程序设计中有哪几种基本控制结构?

分别描绘在程序流程图、盒图和PDA图中这些基本控制的图例。

答:

(1)顺序结构

(2)选择结构

(3)先判定型循环结构

(4)后判定型循环结构

(5)多情况选择

5.假设只有SEQUENCE和DO_WHILE两种控制结构,请问应该如何完成IF_THEN_ELSE操作?

答:

转化如下:

K=1

DOWhile(条件ANDK.EQ.10

程序块1

K=K+1

ENDDO

DOWhile((.NOT.条件).AND.K.EQ.1))

程序块2

K=K+1

ENDDO

6.假设只有SEQUENCE和IF_THEN_ELSE两种控制结构,请问应该如何完成DO_WHILE操作?

答:

转化如下:

LABEL:

IF(条件)THEN

程序块

GOTOLABEL

ELSE

程序块

ENDIF

7.试说明ISO为什么要建议停止使用程序流程图,而推荐使用PDA图?

答:

由于程序流程图中的GOTO语句回严重地损害程序结构,而无法实行结构化设计。

PDA图则既吸取了程序流程图好学、好用、好懂,方便、灵活的优点,又保留了N-S图结构化设计的特点,很好地满足了软结构构设计图形工具的要求,以及PDA图所具有的①结构清晰,层次分明,易读;②支持逐步求精的设计思想;③容易将PAD自动转换为高级语言源程序等特点,因此,ISO要推荐使用PDA图。

8.请画出下列伪码程序的程序流程图、盒图和PDA图。

START

IFpTHEN

WHILEqDO

f

ENDDO

ELSE

BLOCK

g

n

ENDBLOCK

ENDIF

STOP

答:

流程图

盒图

PDA图

9.试说明Jackson方法是一种怎么样的程序设计方法。

它有哪些工作步骤?

答:

Jackson方法是以数据结构(datastructure)为基础设计每个模块的处理过程,将数据结构转化成程序结构。

具体工作步骤有:

第1步:

用Jackson图描述I\O的数据结构

第2步:

在两个图中指出有直接因果关系、可以同时处理的单元

第3步:

将数据结构映射到程序结构

第4步:

列出所有操作条件,并分配到上幅程序结构图中

第5步:

用Pseudocode表示程序

10.请将教材P.124图6.13统计空格程序的Jackson图改画成为等价的盒图和PDA图。

11.人机对话由操作员信息和系统信息交替组成。

假设一段对话总是由操作员信息开始,以系统信息结束,请用Jac

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1