软件工程概述(上)

news2024/12/29 10:10:24

1、软件的概念、特点和分类

       要了解软件工程,首先让我们重新认识一下软件。如今可以说是一个软件定义一切的时代,虽然人工智能发展的如火如荼,但究其本质,核心还是软件。那么,如何给软件下一个定义呢?软件又具有哪些特点?如何对软件进行分类?我们一起来了解一下。

       (1)软件的概念

软件的定义:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。

       一直以来,人们对软件的认识都存在误区,一种比较典型的误解是:软件就是程序,开发软件就是编程序。从上面的定义可以看出,软件是由程序、数据和文档三部分组成的。

  • 程序:计算机可以接受的一系列指令,运行时可以提供所要求的功能和性能。
  • 数据:使得程序能够适当地操作信息的数据结构。
  • 文档:描述程序的研制过程、方法和使用的图文资料。

       当然,对软件的定义还有其他一些具有代表性的说法:

  • IEEE定义(1983年):计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。 
  •  计算机软件是由专业人员开发并长期维护的软件产品。

        注:IEEE是电气与电子工程师协会(Institute of Electrical and Electronics Engineers)的简称, 总部位于美国纽约,是一个国际性的电子技术与信息科学工程师的协会,也是全球最大的非营利性专业技术学会。在本栏目的文章中还会多次提到它,有关其详细介绍可参见百度百科。

  思考题:当前火遍全球的ChatGPT是不是软件?

(2)软件的特点 

        由上面的定义可以得知,软件是计算机系统不可缺少的组成部分,那么与硬件相比,它具有哪些特殊性呢?下面我们来一起认识一下。

  • 软件形态的逻辑性

        我们对事物的认识,一般都是首先从其外形入手的。不过,软件却让你失望了,因为它是一个逻辑实体,是抽象的、不可见的。这样导致其开发过程中进度难以衡量、质量难以评价、管理和控制相当困难

  • 生产过程的非制造性

       软件的生产过程就是软件的开发过程,不过,与一般产品的生产过程不同,它的开发过程中没有明显的制造过程。正如前面的定义所提到的,软件是由程序、数据和文档组成的,软件并不是传统意义上的制造产生的,软件一旦开发完成,只需经过简单的拷贝就可以完成其大规模的发布。在互联网时代,其发布更为简单,用户只需在网站上完成注册,即可轻松使用,你并不需要关心它是如何生产出来的。软件成本集中于开发上,这意味着软件项目不能象硬件制造项目那样来管理。

  • 使用方式的无磨损性 

        在软件的运行和使用期间,没有硬件那样的机械磨损和老化问题。软件不会被“用坏”,但是会存在“不好用”的问题,为了让其好用,软件开发者就需要对其进行维护,维护意味着改正或修改原来的设计。当一个硬件构件磨损时,可以用另外一个备用零件替换它,但对于软件则不然。每一个软件故障都表明了设计/编程中存在错误。因此,软件维护更复杂。 

  • 开发和运行对环境的依赖性

       正如定义中所提到的,软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。 

  • 软件的复杂性

       软件可以说是人类能够创造的最复杂的产物,其复杂性体现在实际问题的复杂性、程序逻辑结构的复杂性和其他领域专门知识的复杂性。 

  • 开发方式的手工化

       正是由于软件具有的复杂性,软件的开发至今尚未完全摆脱手工的开发方式。大多数软件是定制的,而不是通过已有的构件组装而来的。 当前正处于人工智能时代,涌现出一批包括ChatGPT在内的“编程机器人”,但它们仅仅能处理一些通用的情况,对于特殊情况的软件开发,仍然需要开发人员手工来完成。

  • 成本的昂贵性 

       由于软件多为“纯手工打造”,所以软件的成本相当昂贵。在软件开发过程中,会投入大量的、复杂的、高强度的脑力劳动,投入的研发和管理成本相对比较高。

  • 社会因素

       软件之所以能够得到推广,就是由于它能够让人们借助计算机大大提高了工作的效率。也正因为如此,软件的使用必然会引起劳动力的释放、机构的重组,由此带来一系列的社会问题。这与人们一直以来讨论的“人工智能是否会替代人类”是一个道理。 

(3)软件的分类

        我们可以从不同的角度对软件进行分类,最直接的就是按照软件实现的功能来对其分类。包括:

  • 系统软件:用于管理和控制计算机硬件资源,并提供用户界面和其他系统服务。
  • 应用软件:包括办公软件、图形设计软件、音视频播放软件、游戏软件、网络通信软件、实用工具软件等,用于满足用户实际需求的各种软件。
  • 支撑软件:介于系统软件和应用软件之间,用于为应用软件的开发和运行提供支撑。包括开发工具软件、数据库管理软件等。

思考题:针对上面各类软件,你能举出一些具体的例子吗?其中哪些是国产的软件,与国外的软件相比,我们有哪些优势和劣势?

       除了按照功能分类以外,下图还给出了一些其他的软件分类方式。

      
2、软件危机   

       对软件有了基本的认识之后,我们就需要了解一下与软件工程发展有着密切关系的另一个基本概念,那便是“软件危机”。首先来看看对其的定义:

软件危机的定义: 软件危机是在计算机软件开发、维护过程中所遇到的一系列严重问题,导致软件的开发、维护出现风险。

       由定义可以看出, 软件危机通常包含两方面的问题:

    (1)如何开发软件,以满足对软件日益增长的需求。

    (2)如何维护数量不断膨胀的已有软件。

不管是开发还是维护,一旦出现问题,都将带来不可预估的风险和损失,我们先来看几个例子:

软件危机示例1199664日,Ariane5火箭在发射37秒之后偏离其飞行路径  并突然发生爆炸, 当时火箭上载有价值数亿美元的通信卫星。

事故原因:

  • 程序中试图将64位浮点数转换成16位整数时产生溢出
  • 缺少对数据溢出的错误处理程序
  • 备份软件通过复制而成

        在这个例子中,正是由于软件开发过程中出现的疏忽,导致了数亿美元的损失,想象一下,如果这样的事故发生在载人航天领域,其后果将更为惨痛。 

    
3、软件工程的发展历程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2047568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

再造行业旗舰爆款,书客L2 Pro重塑医护级”护眼更养眼”,被誉为最强旗舰级标杆!

近日,作为照明领域黑马的SUKER书客正式发布护眼台灯L2 Pro,在各项标准都远超国AA的基础上,推出了RRT2.0红光养眼技术、第三代SDIT自适应调光技术以及全新一代紫光激发全光谱技术等一系列首创护眼黑科技,从强悍的护眼效果到惊艳的光…

《python语言程序设计》2018版第7章第04题Fan类,设计一个名为Fan的类表示一个风扇

8点下课到家也9点多。眼睛抬不起来 明天到周二要为好几十个兄弟姐妹们,完成日志和反馈表,还要保证低错误。明天还要完成单位的一些工作。 哦对了,还有这些兄弟姐妹们的视频。 好先看一下Fan类的代码,它继续存在exCode07 class Fa…

【uni-app】使用天气API做一个天气APP(全过程)- 实况、逐小时、40日

头一次使用uni-app写代码, 现学现卖, 写的不好的地方见谅, 申请个appid就可以运行 切换城市界面比较简单, 城市名称需要符合天气api参数规则, 录入的城市不要带市区县; 格式如: 青岛、铁西、海淀、沛县 APP效果 功能说明 实况天气逐小时预报未来7日天气未来40日天气空气质量详…

【Qt】QWidget的toolTip属性

QWidget的toolTip属性 如果一个GUI程序,界面比较复杂,按钮比较多,使用toolTip可以设置当鼠标悬停在控件上的时候,可以弹出一个提示。 API说明 setToolTip 设置 toolTip. ⿏标悬停在该 widget 上时会有提⽰说明. setToolTipDur…

10 ARM 体系

10 ARM 体系 ARM体系1、基本概念1.1 常见的处理器1.2 ARM7三级指令流水线1.3 初识PC寄存器 2、 ARM核的七种工作模式3、ARM核七种异常 ARM体系 1、基本概念 1.1 常见的处理器 PowerPC处理器:飞思卡尔MPC系列 DSP:TI达芬奇系列 FPGA:Xilinx赛灵思的ZYN…

python小游戏之摇骰子猜大小

最近学习Python的随机数,逻辑判断,循环的用法,就想找一些练习题,比如小游戏猜大小,程序思路如下: 附上源代码如下: 摇骰子的函数,这个函数其实并不需要传任何参数,调用后…

理性看待、正确理解 AI 中的 Scaling “laws”

编者按:LLMs 规模和性能的不断提升,让人们不禁产生疑问:这种趋势是否能一直持续下去?我们是否能通过不断扩大模型规模最终实现通用人工智能(AGI)?回答这些问题对于理解 AI 的未来发展轨迹至关重…

独立开发者,技术只是其一

刚开始做独立开发者时,总是想着追究技术的深度。我的软件用了特别牛的技术,我的软件这个功能技术花了很多个日日夜夜才实现!真的好有成就感啊! “额,请问一下,你技术这么牛,卖出去多少钱啦&…

linux如何配置主机间免密ssh连接

1. 生成key 其实就是配置从本地节点到远程主机之间基于key(无密码的方式)的SSH连接: # 生成ssh keyssh-keygen2. 拷贝key到远端主机 # 拷贝ssh key到远程主机,ssh的时候就不需要输入密码了# ssh-copy-id remoteuserremoteserve…

通过电影之镜,提升生活之美

在快节奏的现代生活中,电影不仅是娱乐的载体,更是提升审美情趣、拓宽视野的窗口。三部各具特色的经典之作——《布达佩斯大饭店》、《花样年华》与《天使爱美丽》,以其独特的视觉风格、深刻的情感表达与细腻的艺术构思,为我们展示…

三十九、【人工智能】【机器学习】【监督学习】- 多项式朴素贝叶斯分类器(Multinomial Naive Bayes)

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…

追踪团贷网第1968天:重磅!派生科技的股权准备拍卖!合计8.51亿

周五晚,聊聊团贷网最新消息。 继续关注团贷网涉案资产的拍卖。 这周又有重大进展,派生科技的股权与股票,终于要开始拍卖了。 (来自京东拍卖网) (来自京东拍卖网) 目前正在预热阶段,将会在9月18日集中拍卖,而且拆分成…

Visual C++ 2010 学习版

这个版本很好用。 在这里放一个链接,做个备份。 这个版本是承前启后的版本,非常的重要。 一、使用VC2010 这个版本创建的解决方案可以在VS2010~VS2022版本中打开,反之也行。 二、使用VC2010 可以编绎VC6.0 ~VC2008的项目。可以使用现成的…

让护眼旗舰体验全面普及!书客L2 PRO凭借医学养护眼爆火受追捧!

为了满足消费者日益增长的健康需求,书客宣布推出其最新款护眼台灯——[书客L2 PRO护眼台灯]。书客作为深耕照明领域多年的品牌,八年间始终坚持着医护级“护眼更养眼”的理念,这一款[养眼更护眼]的巅峰力作备受业界的瞩目与期待。书客L2 PRO护…

Visual Studio 2022 无法打开源文件atlimage.h

最近在搞tcp socket 通信demo,网上抄了一下源码(代码参考:C中的Socket编程使用协议发送图片_快速传输 照片 c-CSDN博客),还没开始编译就提示 无法打开源文件atlimage.h,全局搜了一下没有这个文件&#xff0…

(七)Activiti-modeler中文支持

1、修改app.js,51行 注意第3步,之前已经访问过,缓存到cookie了,这里要么注释该方法,要么去浏览器手动删除对应cookie才能使用下面的zh-CN.json 2、i18n\en.json中添加zh-CN.json (以下代码片断为网上获得…

进阶岛【闯关任务】探索 InternLM 模型能力边界

一、任务介绍 在 CompassArena 中选择双模型对话,与InternLM2.5及另外任意其他模型对话,收集 5 个 InternLM2.5 输出结果不如其他模型的对话案例,以及 InternLM2.5 的 5 个 Good Case。 任务地址:Docs 二、评测指标 可以从评测…

CSS小玩意儿:文字适配背景

一&#xff0c;效果 二&#xff0c;代码 1&#xff0c;搭个框架 添加一张背景图片&#xff0c;在图片中显示一行文字。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" conte…

怎么等比例调整图片尺寸大小?调整图片尺寸的8个方法

在数字时代&#xff0c;图片已成为我们日常生活与工作中不可或缺的一部分。从社交媒体分享到专业设计项目&#xff0c;图片的质量和外观直接影响着信息的传达与接收。因此&#xff0c;在处理图片时&#xff0c;保持其原始的纵横比&#xff0c;即等比例调整图片尺寸&#xff0c;…

数字媒体产业发展现状剖析,洞悉数字产业园的创新之举

在当今数字化时代&#xff0c;数字媒体产业发展迅猛&#xff0c;呈现出一片繁荣景象。然而&#xff0c;在这繁荣的背后&#xff0c;数字媒体产业发展现状也存在着诸多挑战与机遇。 数字媒体产业发展现状的一个显著特点是技术的快速更新换代。从虚拟现实&#xff08;VR&#xf…