新网站设计最简单的软件,肇庆百度网站推广,网站备案投诉,前台登录 wordpress1、软件的概念、特点和分类 要了解软件工程#xff0c;首先让我们重新认识一下软件。如今可以说是一个软件定义一切的时代#xff0c;虽然人工智能发展的如火如荼#xff0c;但究其本质#xff0c;核心还是软件。那么#xff0c;如何给软件下一个定义呢#xff1f;软件又…1、软件的概念、特点和分类 要了解软件工程首先让我们重新认识一下软件。如今可以说是一个软件定义一切的时代虽然人工智能发展的如火如荼但究其本质核心还是软件。那么如何给软件下一个定义呢软件又具有哪些特点如何对软件进行分类我们一起来了解一下。 1软件的概念 软件的定义软件是计算机系统中与硬件相互依存的另一部分它是包括程序数据及其相关文档的完整集合。 一直以来人们对软件的认识都存在误区一种比较典型的误解是软件就是程序开发软件就是编程序。从上面的定义可以看出软件是由程序、数据和文档三部分组成的。
程序计算机可以接受的一系列指令运行时可以提供所要求的功能和性能。数据使得程序能够适当地操作信息的数据结构。文档描述程序的研制过程、方法和使用的图文资料。 当然对软件的定义还有其他一些具有代表性的说法
IEEE定义1983年计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。 计算机软件是由专业人员开发并长期维护的软件产品。 注IEEE是电气与电子工程师协会Institute of Electrical and Electronics Engineers的简称 总部位于美国纽约是一个国际性的电子技术与信息科学工程师的协会也是全球最大的非营利性专业技术学会。在本栏目的文章中还会多次提到它有关其详细介绍可参见百度百科。 思考题当前火遍全球的ChatGPT是不是软件 2软件的特点 由上面的定义可以得知软件是计算机系统不可缺少的组成部分那么与硬件相比它具有哪些特殊性呢下面我们来一起认识一下。
软件形态的逻辑性 我们对事物的认识一般都是首先从其外形入手的。不过软件却让你失望了因为它是一个逻辑实体是抽象的、不可见的。这样导致其开发过程中进度难以衡量、质量难以评价、管理和控制相当困难。
生产过程的非制造性 软件的生产过程就是软件的开发过程不过与一般产品的生产过程不同它的开发过程中没有明显的制造过程。正如前面的定义所提到的软件是由程序、数据和文档组成的软件并不是传统意义上的制造产生的软件一旦开发完成只需经过简单的拷贝就可以完成其大规模的发布。在互联网时代其发布更为简单用户只需在网站上完成注册即可轻松使用你并不需要关心它是如何生产出来的。软件成本集中于开发上这意味着软件项目不能象硬件制造项目那样来管理。
使用方式的无磨损性 在软件的运行和使用期间没有硬件那样的机械磨损和老化问题。软件不会被“用坏”但是会存在“不好用”的问题为了让其好用软件开发者就需要对其进行维护维护意味着改正或修改原来的设计。当一个硬件构件磨损时可以用另外一个备用零件替换它但对于软件则不然。每一个软件故障都表明了设计/编程中存在错误。因此软件维护更复杂。
开发和运行对环境的依赖性 正如定义中所提到的软件的开发和运行常受到计算机系统的限制对计算机系统有着不同程度的依赖性。
软件的复杂性 软件可以说是人类能够创造的最复杂的产物其复杂性体现在实际问题的复杂性、程序逻辑结构的复杂性和其他领域专门知识的复杂性。
开发方式的手工化 正是由于软件具有的复杂性软件的开发至今尚未完全摆脱手工的开发方式。大多数软件是定制的而不是通过已有的构件组装而来的。 当前正处于人工智能时代涌现出一批包括ChatGPT在内的“编程机器人”但它们仅仅能处理一些通用的情况对于特殊情况的软件开发仍然需要开发人员手工来完成。
成本的昂贵性 由于软件多为“纯手工打造”所以软件的成本相当昂贵。在软件开发过程中会投入大量的、复杂的、高强度的脑力劳动投入的研发和管理成本相对比较高。
社会因素 软件之所以能够得到推广就是由于它能够让人们借助计算机大大提高了工作的效率。也正因为如此软件的使用必然会引起劳动力的释放、机构的重组由此带来一系列的社会问题。这与人们一直以来讨论的“人工智能是否会替代人类”是一个道理。
3软件的分类 我们可以从不同的角度对软件进行分类最直接的就是按照软件实现的功能来对其分类。包括
系统软件用于管理和控制计算机硬件资源并提供用户界面和其他系统服务。应用软件包括办公软件、图形设计软件、音视频播放软件、游戏软件、网络通信软件、实用工具软件等用于满足用户实际需求的各种软件。支撑软件介于系统软件和应用软件之间用于为应用软件的开发和运行提供支撑。包括开发工具软件、数据库管理软件等。 思考题针对上面各类软件你能举出一些具体的例子吗其中哪些是国产的软件与国外的软件相比我们有哪些优势和劣势 除了按照功能分类以外下图还给出了一些其他的软件分类方式。 2、软件危机 对软件有了基本的认识之后我们就需要了解一下与软件工程发展有着密切关系的另一个基本概念那便是“软件危机”。首先来看看对其的定义 软件危机的定义 软件危机是在计算机软件开发、维护过程中所遇到的一系列严重问题导致软件的开发、维护出现风险。 由定义可以看出 软件危机通常包含两方面的问题 1如何开发软件以满足对软件日益增长的需求。 2如何维护数量不断膨胀的已有软件。
不管是开发还是维护一旦出现问题都将带来不可预估的风险和损失我们先来看几个例子 软件危机示例11996年6月4日Ariane5火箭在发射37秒之后偏离其飞行路径 并突然发生爆炸 当时火箭上载有价值数亿美元的通信卫星。 事故原因 程序中试图将64位浮点数转换成16位整数时产生溢出缺少对数据溢出的错误处理程序备份软件通过复制而成 在这个例子中正是由于软件开发过程中出现的疏忽导致了数亿美元的损失想象一下如果这样的事故发生在载人航天领域其后果将更为惨痛。 3、软件工程的发展历程