软件与硬件区别及软件工程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.什么是软件?它具有哪些区别于硬件的特点?
软件是一系列按照特定顺序组织的计算机数据和指令的集合。软件并不只是包括可以在计算机上的运行的计算机程序,与这些计算机程序相关的文档也被认为是软件的一部分。软件就是程序加文档的集合体。
软件是一种逻辑产品,与硬件产品有本质的区别。硬件是看得见、摸得着的物理部件或设备。软件产品是以程序加文档的形式存在,通过在计算机上运行来体现他的作用。
电脑软件分为系统软件和应用软件,系统软件和硬件一起提供一个“平台”,它们管理和优化电脑资源的应用。
2.详细说明“软件生存周期”的概念
软件生存周期(SDLC,软件生命周期)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。
2.什么是软件危机?产生原因和主要体现是什么?如何解决?
软件危机:落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
原因:软件本身的特点有关--- 软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件;软件样品即是产品,试制过程也就是生产过
程;软件不会因使用时间过长而“老化”或“用坏”;软件具有可
运行的行为特性,在写出程序代码并在计算机上试运行之前,软件
开发过程的进展情况较难衡量,软件质量也较难评价,因此管理和
控制软件开发过程十分困难;软件质量不是根据大量制造的相同实
体的质量来度量,而是与每一个组成部分的不同实体的质量紧密相
关,因此,在运行时所出现的软件错误几乎都是在开发时期就存在
而一直未被发现的,改正这类错误通常意味着改正或修改原来的设
计,这就在客观上使得软件维护远比硬件维护困难。
软件开发人员的弱点--- 软件产品是人的思维结果,因此软件生产水平最终在相当程度上取决于软件人员的教育、训练和经验的积累;对
于大型软件往往需要许多人合作开发,甚至要求软件开发人员深入
应用领域的问题研究,这样就需要在用户与软件人员之间以及软件
开发人员之间相互通讯,在此过程中难免发生理解的差异,从而导
致后续错误的设计或实现,而要消除这些误解和错误往往需要付出
巨大的代价;由于计算机技术和应用发展迅速,知识更新周期加快,
软件开发人员经常处在变化之中,不仅需要适应硬件更新的变化,
而且还要涉及日益扩大的应用领域问题研究;软件开发人员所进行
的每一项软件开发几乎都必须调整自身的知识结构以适应新的问
题求解的需要,而这种调整是人所固有的学习行为,难以用工具来
代替。
解决:软件工程诞生于60年代末期,它作为一个新兴的工程学科,主要研究软件生产的客观规律性,建立与系统化软件生产有关的概念、原则、方
法、技术和工具,指导和支持软件系统的生产活动,以期达到降低软件
生产成本、改进软件产品质量、提高软件生产率水平的目标。软件工程
学从硬件工程和其他人类工程中吸收了许多成功的经验,明确提出了软
件生命周期的模型,发展了许多软件开发与维护阶段适用的技术和方法,并应用于软件工程实践,取得良好的效果。在软件开发过程中人们开始
研制和使用软件工具,用以辅助进行软件项目管理与技术生产,人们还
将软件生命周期各阶段使用的软件工具有机地集合成为一个整体,形成
能够连续支持软件开发与维护全过程的集成化软件支援环境,以期从管
理和技术两方面解决软件危机问题。此外,人工智能与软件工程的结合
成为80年代末期活跃的研究领域。基于程序变换、自动生成和可重用软
件等软件新技术研究也已取得一定的进展,把程序设计自动化的进程向
前推进一步。在软件工程理论的指导下,发达国家已经建立起较为完备
的软件工业化生产体系,形成了强大的软件生产能力。软件标准化与可
重用性得到了工业界的高度重视,在避免重用劳动,缓解软件危机方面
起到了重要作用。
体现:(1)软件开发费用和进度失控。费用超支、进度拖延的情况屡屡发生。
有时为了赶进度或压成本不得不采取一些权宜之计,这样又往往严重
损害了软件产品的质量。
(2)软件的可靠性差。尽管耗费了大量的人力物力,而系统的正确性却越来越难以保证,出错率大大增加,由于软件错误而造成的损失十分
惊人。
(3)生产出来的软件难以维护。很多程序缺乏相应的文档资料,程序中的错误难以定位,难以改正,有时改正了已有的错误又引入新的错误。
随着软件的社会拥有量越来越大,维护占用了大量人力、物力和财力。
进入80年代以来,尽管软件工程研究与实践取得了可喜的成就,软件
技术水平有了长足的进展,但是软件生产水平依然远远落后于硬件生
产水平的发展速度。
(5)用户对“已完成”的系统不满意现象经常发生。一方面,许多用户在软件开发的初期不能准确完整的向开发人员表达他们的需求;另一方
面,软件开发人员常常在对用户需求还没有正确全面认识的情况下,
就急于编写程序。
(6)软件成本在计算机系统总成本中所占的比例居高不下,且逐年上升。
由于微电子学技术的进步和硬件生产自动化程度不断提高,硬件成本逐
年下降,性能和产量迅速提高。然而软件开发需要大量人力,软件成本
随着软件规模和数量的剧增而持续上升。
(7)软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的需要,软件产品供不应求的状况使得人类不能充分利用现代计算机硬件所
能提供的巨大潜力。
4.软件为什么要采用工程化的方法开发
是指将软件的开发企图变成工业化流水线一样的加工,从而保证开发的进度与质量。强调分析与设计,与早期的程序设计方法比,程序员的重要性大为下降。
5.软件工程包含哪些要素?是说明之。
3个要素:方法、工具和过程。其中,方法是完成软件开发的各项任务的技术方法,回答“怎样做”问题;工具是为运用方法而提供的自动的或半自的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
6.有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大,对否?是说明理由、
正确。在软件开发的不同阶段进行修改所付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;而在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上夜更复杂,因此付出的代价剧增;在软件“已经完成”时再引入变动,当然需要付出更高的代价。