软件为什么越来越复杂
❶ 为什么存在软件危机
软件危机:软件发展第二阶段的末期,由于计算机硬件技术的进步。一些复杂的、大型的软件开发项目提出来了,但,软件开发技术的进步一直未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。主要表现在以下几个方面:
a.经费预算经常突破,完成时间一再拖延。
b.开发的软件不通满足用户要求。
c.开发的软件可维护性差。
d. 开发的软件可靠性差。
软件危机产生的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的:
a.软件的规模越来越大,结构越来越复杂。
b.软件开发管理困难而复杂。
c.软件开发费用不断增加。
d.软件开发技术落后。
e.生产方式落后。
f.开发工具落后,生产率提高缓慢。
自己根据这几方面,扯开来来谈就是的,想怎么说就怎么说
❷ 为什么会产生软件危机怎样克服软件危机
(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施
❸ 软件的特征
软件的特点:
1 是一种逻辑产品,与物质产品有很大的区别。
2 软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。
3 软件产品不会用坏,不存在磨损,消耗。
4 生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是"定做"的。
5 开发软件的费用不断增加,致使生产成本相当昂贵
按软件的功能划分-
系统软件:能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效率地工作的软件。如操作系统、数据库管理系统、设备驱动程序以及通信处理程序等。系统软件是计算机系统中必不可少的一个组成部分。
应用软件:是在特定的领域内开发,为特定目的服务的一类软件。如,CAD-CAM 计算机辅助制造-CAI 计算机辅助教学, 专家系统,模式识别,刹车系统
支撑软件:是协助用户开发软件的工具性软件,其中包括帮助程序人员开发软件产品的工具,也包括帮助管理人员控制开发的进程的工具。
按规模划分:
1、微型--只有一个人,甚至是半时,在几天之内完成的软件。写出的程序不到500行语句。
2、小型--一个人半年之内完成的2千行以内的程序。例如,数值计算问题或是数据处理问题就是这种规模的课题。这种程序通常没有与其他程序的接口。
如,有求伯君开发最初的 WPS,单独完成BASIC 的比尔.盖茨。
3、中型--5人以内在一年多时间里完成的5千到5万行的程序。这种课题开始出现了软件人员之间,软件人员与用户之间的联系、协调和配合关系的问题。
4、大型--5人至10人在两年多的时间里完成5万行到10万行的程序。例如编译程序、小型分时系统、应用软件包、实时控制系统等很可能都是这种软件。
5、甚大型-100人至1000人参加
6、极大型--2000-5000人参加,如,微软的windows 2000项目就包含了近3000名工程师,他们被分成几百个小的团队。
按开发分---软件产品和软件项目
软件产品---指的是不局限于特定领域的、可以被广大用户直接使用的软件系统。如微软的 Windows,Office等。这类系统的特点是技术含量高,开发时要考到各种不同的用户需求;
软件项目--也称定制软件,是受某个特定客户(或少数客户)的委托,由一个或多个软件开发机构在合同的约如我们常说的管理信息系统(MIS)和电子商务系统。这类软件的特点是领域知识所占的比重较大,相对技术而言工程性更强。例如,军用防空指挥系统、卫星控制系统等均为这类软件。
针对这两种不同类型的软件,应该有不同的软件开发方法去指导项目开发过程。
软件项目的开发,目前比较成熟的软件开发方法有软件成熟度模型(CMM)。 这种软件开发模型试图将整个软件开发过程规范化和量化,直到可以对软件开发过程进行定量的控制和优化。
软件产品的开发,像微软公司积累了许多成功的经验。
软件生产的发展:
1 程序设计时代:这个阶段生产方式是个体劳动,生产工具是机器语言,汇编语言。(1946-1956年)
2 程序系统时代:这个阶段生产方式是小集团合作生产,生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。(1956-1968年)
3 软件工程时代:这个阶段生产方式是工程化的生产,使用数据库,开发工具,开发环境,网络,分布式面向对象技术来开发软件。(1968年至今)
软件危机: 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
软件危机的表现:
1 经费预算经常突破,完成时间一再拖延。
2 开发的软件不能满足用户要求。
3 开发的软件可维护性差。
4 开发的软件可靠性差。
软件危机产生原因:
1 软件规模越来越大,结构越来越复杂。
2 软件开发管理困难而复杂。
3 软件开发费用不断增加。
4 软件开发技术落后。
5 生产方式落后,仍采用手工方式。
6 开发工具落后,生产率提高缓慢。
软件工程:用科学的知识和技术原理来定义,开发,维护软件的一门学科。
用工程科学的观点进行费用估算,制定进度,制定计划和方案。
用管理科学的方法和原理进行生产的管理。
用数学的方法建立软件开发中的各种模型和算法。
那么为达到软件优质高产这个目标,从技术到管理做了大量的努力,从而逐渐已形成了"软件工程学"这一新学科。
它包含以下主要内容:
1、软件开发方法:软件工程的方法提供了建造软件在技术上需要"如何做"。 方法涵盖了一系列的任务:需求分析、设计、编程、测试和维护。
是在60年代后期才逐步形成了一种软件开发方法,在不同的软件开发阶段对应有不同的方法,例如在软件的设计阶段有"结构化分析与设计"方法,在软件测试阶段有"黑盒"与"白盒"测试技术,等等。
象目前又有一种更新的技术"面向对象的程序设计方法"。在这一方法中,数据和数据的操作是被封闭在一个个称为"对象(Object) "的统一体中,对象之间则是通过"消息"(message")进行相互联系的。
从而使由软件所描述的系统与客观世界的系统在结构上十分相似,不仅提高了软件的可修改性与可维护性,同时也提高了软件的可重用性,那么这些都是工程多年来所追求的目标。从结构程序设计到面向对象程序设计,是程序设计方法的又一次飞跃。
2、软件工具:所谓工具,在这里泛指是开发一切帮助开发软件的软件。为了提高软件设计的质量和生产效率,现已经发展了许多的帮助开发和维护软件的软件 。例如,我们要用某种语言来开发一个应用软件,这就要涉及到 "编辑程序、编译程序、连接程序等,另外在软件测试阶段还要用到 "测试数据产生器、排错程序、跟踪程序、静态分析工具和覆盖监视工具等。也就是说在不同的时期要用到不同的软件开发工具。目前,软件工具发展迅速,许多用于软件分析和设计的工具正在建立,其目标 就是要实现软件生产自动化。
3、软件工程环境:软件方法和工具是软件开发的两大支柱,她们之间密切相关。软件方法提出了明确的工作步骤和标准的文档格式,这是设计软件工具的基础,而软件工具的实现又将促进软件方法的推广和发展。
"环境"一词,对不同用户有着不同的含义。对最终用户(end user)而言,环境就是他们运行程序所使用的计算机系统。这类用户对环境的要求,主要是运行可靠,操作方便,容易学习和使用。而对于软件开发人员来说,则就不同了,可以说环境就是他们进行软件开发活动动的舞台。(例如,Algo-60,或者 资料管理系统(DbaseII DbaseIII),例如界面只能采用菜单来完成各种功能)
象现在生产数据库管理的软件的环境有:大型数据库软件 Sybase ,还有能帮助进行程序设计的 PB 软件)
4、软件工程管理学:大家知道,对于一个企业来说,如果只有先进的设备和技术,而没有完善的管理,是不可能获得应有的经济效益的(例如海尔的海尔文化就是企业管理的象征),(例如微软企业文化宗旨的一句话)
软件生产也是一样的,如果管理不善,是不可能高质量、按时完成任务的。
"软件工程管理就是对软件工程生存期内的各阶段的活动进行管理。软件工程管理的目的是为了能按预期的时间和费用,成功地完成软件的开发和维护任务。
软件工程管理学的内容包括软件费用管理、人员组织、工程计划管理、软件配置管理等各项方面的内容。
显然,软件工程管理也可借助计算机来实现。供经理人员估算成本、指定进度、生成报告等管理工具都已经在许多公司使用了。一个理想的软件工程环境,应该同时具备 支持开发和支持管理两个方面的工具。
以上简介了软件工程学的主要组成成分--软件工程方法学、软件工程环境以及软件工程管理的基本内容台和作用。它们即包括计算机科学家的研究成果,也概括了广大软件工作者的时间经验。还必须指出,软件开发技术可区分为形式化方法与非形式化方法两大分支。前者以形式化的程序变化和严整为主要内容,目的在于达到程序设计的自动化,多用于计算机应用人员。本课程主要讨论的是工程化的软件开发技术。
软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
软件工程内容:研究内容包括开发技术和开发管理两个方面。
开发技术主要研究 :软件开发方法,开发过程,开发工具和环境。采集者退散
开发管理主要研究 :软件管理学,软件经济学,软件心理学。
软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。
❹ 为什么网上的软件资源突然越来越难下载了
这个感觉的确很明显,导致软件资源越来越难下载的因素有好多个,小迷虫认为下面几个原因是最主要的。
啊哈,小迷虫之前做了很多安装系统的图文教程,有兴趣的朋友可以一阅!
❺ 为什么所以软件都越来越臃肿了呢。
你好!因为一些软件,它们的功能在增加,在完善,在打漏洞补丁,使体积就在不断地增加 。这是正常的现象。没办法。谢谢。
❻ 为什么手机用久了都会变卡是因为硬件会老化吗还是只是因为软件越来越复杂了。
是手机内存被占了,有些文件用清理软件清不完的。堆积多了就卡。建议重置手机
❼ 软件危机产生的原因,以及应对方法
软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
产生软件危机的原因主要有两个方面:
1.这与软件本身的特性有关。
与硬件不同,软件是计算机系统的逻辑部分,而不是物理部分。软件样品是产品,试制过程也是生产过程。
软件不会因使用时间过长而“老化”或“磨损”;在编写程序代码并在计算机上运行之前,很难测量软件开发过程的进度和评估软件质量。因此,软件开发过程的管理和控制是非常困难的。
2.软件开发人员的弱点。
首先,软件产品是人们思考的结果,所以软件产品的水平最终在很大程度上取决于软件人员的教育、培训和经验积累。
合作开发大型软件通常需要很多人,即使对于一个软件开发人员深入研究领域的应用程序,所以你需要用户和软件和软件开发人员之间的沟通,不可避免地发生在这个过程中理解的差异,导致后续错误的设计或实现。
(7)软件为什么越来越复杂扩展阅读:
解决途径
人们开始开发过程中软件开发和软件工具的使用,协助软件项目管理和生产技术,人们还将使用在软件生命周期的所有阶段的软件工具有机地集合作为一个整体,形成可以支持软件开发和维护的整个过程的集成软件支持环境,以解决软件危机从管理和技术两个方面的问题。
此外,人工智能和软件工程的结合在20世纪80年代后期成为一个活跃的研究领域。基于程序转换、自动生成和可复用软件的新软件技术的研究取得了一定的进展。
在软件工程理论的指导下,发达国家建立了较为完整的软件产业生产体系,形成了较强的软件生产能力。软件标准化和可重用性受到业界的高度重视,在避免劳动重复使用和缓解软件危机方面发挥了重要作用。
❽ 为什么java这么火,很多年了,java一直长盛不衰,可是java内容很复杂啊,而且越来越复杂,太多东西要学
相对于两种语言,C++的复杂体现在变量的定义有两种模式,一种是指针,一种没有指针,另外C++是可以对内存进行操作,需要程序对使用的内存做及时的释放;
相比较JAVA语言,变量的定义只有一种,没有指针的概念,其实在底层的语义封装的时候就是C++中的指针概念,简单的说,JAVA定义的变量都是指针,而且Java有自己的垃圾回收机制,那么就不存在程序进行内存释放问题。
java是面向应用的,C++是面向底层的。
从程序的开发设计角度来考虑,底层的程序需要进行切块,各个模块间的交互需要明确,因此C++程序往往文件大小不会太大;而应用层的程序,对于用户来说就是实打实的功能,基于目前硬件设备的性能提升,软件功能的应用将越来越复杂,这就导致了JAVA的内容很多很杂。
因此从这点来看,JAVA是因为应用面的广,而导致技术的杂而多。
工资高低不看语言,先是看公司、在看岗位、在看技术
❾ 为什么百度知道软件要搞的越来越复杂呢以至于让许多玩友找不到任务窗口改在哪儿了。
慢慢适应一下就好了,这就是那个时代变了,我也不得不变。任务栏在我的最上方右边那四个小方格图标里,点开就可以看到了。
❿ 现在手机功能越来越复杂了,真的有必要搞这么多功能吗
智能手机的发展伴随着越来越经验丰富的过程。今天,使用手机非常好更简单。智能手机已开发至今,进行的应用程序基本上是固定的,即使手机有数百个功能,它也是我们的主要用途。面对这些已经使用了多次,即使有些复杂,它已经成为一种习惯,潜意识。此外,了解更简单。
手机