软件工程导论作业

发布 2021-05-05 19:32:28 阅读 8679

《软件工程导论》作业。

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

答: 软件危机是指在计算机软件开发和维护过程中所遇到的一系列的严重问题,它的典型表现:1.

软件开发成本高,成本难以控制。2.研究周期长,软件开发进度难以控制,周期拖得很长。

3.正确性难以保证,软件质量差,可靠性难以保证。4.

软件维护困难,维护人员和维护费用不断增长。5.软件发展跟不上硬件的发展和用户的要求。

它出现的原因一方面是由于软件生产本身存在着复杂性,另一方面是与软件开发所使用的方法和技术有关。软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。管理和控制软件开发工程相当困难,软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。

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

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

答:软件工程是将系统化的,规范化的,可度量的方法应用于软件开发,运行和维护的过程,即将工程化应用于软件中。

它的本质特性:1.软件工程关注于大型程序的构造 2.

软件工程的中心课题是控制复杂性 3.软件经常化 4.开发软件的效率非常重要 5.

和谐地合作是开发软件的关键 6.软件必须有效地支持它的用户 7.在软件工程领域中是由一种文化背景的人替具有另一种文化背景的人创造产品。

基本原理: 1.用分阶段的生命周期计划严格管理 2.

坚持进行阶段评审 3.实行严格的产品控制 4.采用现代程序设计的技术 5.

结果应能清楚地审查 6.开发小组的人员应该少而精 7.承认不断改进软件工程实践的必要性。

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

答:软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

软件过程定义了运用技术方法的顺序,应该交付的文档资料,为保证软件质量和协调软件变化必须采用的管理措施,以及标志完成了相应开发活动的里程碑。软件过程是软件工程方法学的3个重要组成部分之一。软件工程的基础是软件过程。

4、 什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。

答:软件生命周期模型是软件开发全部过程,活动和任务的结构框架,它能直观表达软件开发全过程,明确规定要完成的主要活动,任务和开发策略。也叫软件开发模型。

瀑布模型优点:有利于大型软件开发过程中人员的组织,管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。

缺点:1,开发过程一般不能逆转,否则代价太大 2.实际的项目开发很难严格按。

照该模型进行 3.客户往往很难清楚地给出所有的需求,而该模型却要求如此 4.软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。

适用范围:1.用户的需求非常清楚全面,且在开发过程中没有或变化很少 2.

开发人员对软件的应用领域很熟悉 3.用户的使用环境非常稳定 4.开发工作队用户参与的要求很低。

原型模型优点:1.可以得到比较良好的需求定义,容易适应需求的变化 2.有利于开发与培训的同步 3.开发费用低,开发周期短且队用户更友好。

缺点:1.客户与开发者对原型的理解不同 2.准确的原型设计比较困难 3.不利于开发人员的创新。

适用范围:1.对所开发的领域比较熟悉而且有快速的原型开发工具 2.

项目投标时,可以以原型模型作为软件的开发模型 3.进行产品移植或升级时,或对已有产品原型进行客户化工作时,原型模型非常合适。

增量模型优点:1.采用增量模型的优点是人员分配灵活,刚开始不用投入大量的人力资源。

2.如果核心产品很受欢迎,则可增加人力实现下一个增量 3.可先发部分功能给客户,对客户起到镇静剂的作用。

缺点:1.并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构 2.

增量模型的灵活性可以使其适应这种变化的能力大于优于瀑布模型和原型模型,但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性。

适用范围:1.进行已有产品升级或新版本开发,增量模型是非常适合的 2.

对完成期限严格要求的产品,可以使用增量模型 3.对所开发的领域比较熟悉而且已有原型系统,增量模型也非常适合。

螺旋模型优点:1.实际上的灵活性,可以再项目的各个阶级进行变更 2.

以小的分段来构建大型系统,是成本计算变得简单容易 3.客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性 4.随着项目推进,客户始终掌握项目的最新消息,从而是他或她能够和管理层有效地交互。

缺点:1.采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失 2.

过多的迭代次数会增加开发成本,延迟提交时间。

适用范围:只适合于大规模的软件项目。

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

答:在现实生活中,并不是所有的问题都能有显而易见的解决方法,生活中有许多的问题是不能在预定的系统规模或预定时间期限下得到解决的。如果问题没有可行的解决方法,那么在这项工程上花费的人力、物力、财力、时间、资源,都是一种无谓的浪费。

而可行性研究的出现,解决了这种让很多人都头疼的问题。可行性研究的目的就是在付出最小的代价的前提下确定问题是否能在尽可能短的时间内得到解决。如果答案是肯定的,那么就能着手开始这项工程;否则,就不用做费力不讨好的事情。

6、 为什么要进行需求分析?

答:需求分析就是分析软件用户的需求是什么,用户通过软件可以实现那些功能,完成那些操作。如果投入大量的人力物力,但是最后产出的软件根本没有用户愿意使用,或者根本不能满足用户的需要,那么这种结果无疑是痛心的,需求分析,建立需求模型,一方面是便于和客户沟通,因为客户可以通过模型能够比较直观的看到你对自己所提出需求的理解程度,一方面也是自己对客户需求的一个完整梳理过程。

因此是一个项目成败的关键步骤。

7、 非形式化方法有什么缺点?

答:非形式化方法的缺点: 1.非形式化的描述可能存在矛盾、二意性和含糊性等问题; 2.难以进行严格的证明工作; 3.对于高可靠性的系统,使用该方法描述存在潜在的问题;

8、 形式化方法有什么优点?

答:形式化描述的优点: 1.使用形式化方法可以严格准确地描述出系统对象; 2.使用形式化方法描述的系统可以向任意具体系统进行映射转换; 3.可以对形式化描述的系统进行严格的数学证明分析。

9、 什么是总体设计?

答:总体设计又称为概要设计。

分析每种方案的优缺点,并在充分权衡各种方案的利弊的基础上,推荐一个最佳方案。此外,还应该制定出实现最佳方案的详细计划。如果客户接受所推荐的方案,则应该进一步完成下述的另一项主要任务。

总体设计的另一项主要任务就是设计程序的体系结构,也就是确定程序由哪些模块组成以及模块间的关系。

10、 什么是详细设计?

答:详细设计阶段的任务就是把解法具体化,这个阶段的任务还不是编写程序,而是设计出程序的详细规格说明。这种规格说明的作用很类似于其他工程领域中工程师经常使用的工程蓝图,它们应该包含必要的细节,程序员可以根据它们写出实际的程序**。

详细设计也称为模块设计,在这个阶段将详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。

11、 什么是软件维护?

答:软件维护是指在运行、维护阶段对软件产品所进行的修改。

12、 简述四类维护活动.

答:改正性维护,也就是诊断和改正在使用过程中发现的软件错误;

适应性维护,即修改软件以适应环境的变化;

完善性维护,即根据用户的要求改进或扩充软件使它更完善;

预防性维护,即修改软件为将来的维护活动预先做准备。

13、 简述面向对象方法具有的四个要点。

答:(1)把对象作为融合了数据及在数据上的操作行为的统一的软件构件。

2) 把所有对象都划分成类。

3) 按照父类(或称为基类)与子类(或称为派生类)的关系把若干个相关类组成一个层次结构的系统(也称为类等级)。

4) 对象彼此间仅能通过发送消息互相联系。

14、简述喷泉模型。

答:喷泉模型是一种以用户需求为动力,以对象作为驱动的模型。它适合于面向对象的开发方法。

它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。系统某些部分常常重复工作多次,相关功能在每次迭代中随之加入演化的系统。

无间隙是指在分析、设计和实现等开发活动之间不存在明显的。

边界。15、 什么是多态性?

答:在面向对象的软件技术中,多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。也就是说,在类等级的不同层次中可以共享(公用)一个行为(方法)的名字,然而不同层次中的每个类却各自按自己的需要来实现这个行为。

当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法。

在c++语言中,多态性是通过虚函数来实现的。在类等级不同层次中可以说明名字、参数特征和返回值类型都相同的虚拟成员函数,而不同层次的类中的虚函数实现算法各不相同。虚函数机制使得程序员能在一个类等级中使用相同函数的多个不同版本,在运行时刻才根据接收消息的对象所属于的类,决定到底执行哪个特定的版本,这称为动态联编,也叫滞后联编。

读后感。信号1505毛威15212155

通过阅读这两篇文章,我进一步理解了软件工程的概念,以及软件复用和软件工程技术的发展。我之前一直认为软件工程就等于编写程序**,后来经过老师的介绍得知软件工程是一个具有完整生命周期的系统工程,包括需求设计、实现确认、以及支持维护等活动,编写程序只是其中很小的一环。

从某种角度来说,软件开发的本质就是要实现“高层概念”到“低层概念”的映射,实现“高层处理逻辑”到“低层处理逻辑”的映射。对于大型软件系统的开发,这一映射是相当复杂的,涉及到有关人员使用的技术采取的途径以及成本和进度的约束,为了提高软件开发效率,工程人员提出了软件复用的概念。软件复用是在软件开发中避免重复劳动的解决方案,其出发点是应用系统的开发不再采用一切“从零开始”的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,如:

需求分析结果、设计方案、源**、测试计划及测试案例等,从而将开发的重点集中于应用的特有构成成分。

软件技术的发展的过程,其实是软件开发人员追求在一个更高的抽象层次上进行程序设计。随后出现了一系列开发范型和结构化程序设计技术,实现了模块化的数据抽象和过程抽象,高了人们表达客观世界的抽象层次,并使开发的软件具有一定的构造性和演化性近。20 年来,面向对象程序设计语言的诞生并逐步流行,为人们提供了一种以对象为基本计算单元,以消息传递为基本交互手段来表达的软件模型。

面向对象方法的实质是以拟人化的观点来看待客观世界,即客观世界是由一系列对象构成,这些对象之间的交互形成了客观世界中各式各样的系统。面向对象方法中的概念和处理逻辑更接近人们解决计算问题的思维模式,使开发的软件具有更好的构造性和演化性。目前,人们更加关注软件复用问题,构建比对象粒度更大更易于复用的基本单元构件,并研究以构件复用为基础的软件构造方法,更好地凸现软件的构造性和演化特性。

易于复用的软件,一定是具有很好构造性和演化性的软件。

软件工程导论作业

安徽工业大学计算机学院。程序设计综合实习 软 报告。题目 关于酒店管理系统的课程报告。姓名 刘逸敏。学号 119074226 学院 计算机学院 专业 软件工程。班级 113 指导教师 胡增涛。完成日期。内容。课程设计任务书 目录。一 可行性研究报告 3 1.项目由来 3 2.可选方案 3 3.可行性...

软件工程导论作业答案

1 1 什么是软件危机?答 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。1 3 什么是软件工程?有哪些本质特性?怎样用软件工程消除软件危机?答 是指导计算机软件开发和维护的一门工程学科。特性略。技术措施和管理措施消除软件危机。1 4 简述结构化范型和面向对象范型的要点,并分析它们的优缺...

软件工程导论大作业

要求 1手写 2每道题适当展开叙述,不得是提纲式回答问题 3统一用a4纸书写。软件工程导论大作业。1.网上购票系统等网上分布式系统都要采用验证码机制?2.叙述图灵机和冯诺依曼机的原理。3.计算机发展经历几代机?每一代机主要根据什么划分的?各代机有什么特点?4.为什么当前计算机都采用二进制数?5.实数...