目录

软件的定义:

软件的本质特性:

软件的本质特性:复杂性:

软件的本质特性:复杂性

软件的本质特性:一致性

软件的本质特性:可变性

软件的本质特性:不可见性:

小结:


软件的定义:

软件 = 程序 + 数据 + 文档

程序:计算机可以接受的一系列指令,运行时可以提供所要求的功能和性能

数据:使得程序能够适当地操作信息的数据结构

文档:描述程序的研制过程、方法和使用的图文资料

软件的本质特性:

1.一架客机由数百万个单独的部件组成,需要上千人组装,但通常都能够按时按预算交付使用。

2.微软于1989年11月发布的Word最初版本,花费了55个人年,大约有249000行源代码,却晚了4年交付使用。

开发软件于建造客机本质区别:

Fred Brooks是北卡罗莱纳大学的计算机科学教授,曾担任IBM OS360 系统的项目经理,在计算机体系结构、操作系统和软件工程方面做出了里程碑式的贡献,于1999年荣获计算机领域最具声誉的图灵奖。

Fred Brooks
        Fred Brooks, in full Frederick Phillips Brooks, Jr., (born April 19, 1931, Durham, North Carolina, U.S.), American computer scientist and winner of the 1999 A.M. Turing Award, the highest honour in computer science, for his “landmark contributions to computer architecture, operating systems, and software engineering.”
        Brooks received a bachelor’s degree (1953) in physics from Duke University and a doctorate (1956) in applied mathematics from Harvard University, where he studied under the computer pioneer Howard Aiken. After finishing his doctorate, Brooks joined IBM, where he worked on the IBM 7030 (known as Stretch), a supercomputer ordered by the U.S. National Security Agency for the Los Alamos National Laboratory. Together with Dura Sweeney, Brooks invented the computer’s interrupt system, which is used to recognize different computing “events” that require immediate attention and to synchronize the activities of multiple programs or input/output devices. Brooks also managed the development of the IBM OS/360 operating system and its associated family of computers. In this capacity Brooks was responsible for selecting the 8-bit byte as the basic addressable unit and the inclusion of a complete set of alphanumeric characters, features that were adopted in nearly all subsequent computers.
        Brooks left IBM in 1965, having founded the computer science department at the University of North Carolina, Chapel Hill, the previous year; he served as chair until 1984 and was Kenan Professor of Computer Science. His research interests have included human-computer interaction, threedimensional computer graphics, and especially virtual reality, where he has led in the creation of scientific visualization tools. For example, Brooks built the first molecular graphics system to solve the physical structure of a new protein.
        Brooks was the author, with Kenneth E. Iverson, of Automatic Data Processing (1963), The Mythical Man-Month: Essays on Software Engineering (1975), and, with Gerrit A. Blaauw, Computer Architecture: Concepts and Evolution (1997) and Computer Architecture: A Computer Zoo (1997).
2022/9/7 13:17 Fred Brooks -- Britannica Online Encyclopedia https://www.britannica.com/print/article/1196550 2/2 Brooks was elected to the Institute of Electrical and Electronic Engineers (IEEE; 1968), the U.S. National Academy of Engineering (1976), the American Academy of Arts and Sciences (1976), the Royal Netherlands Academy of Arts and Sciences (1991), the Association for Computing Machinery (ACM; 1994), the British Computer Society (1994), the U.K. Royal Academy of Engineering (1994), and the U.S. National Academy of Sciences (2001). He also served on various civilian bodies that advised the U.S. military, including the Defense Science Board (1983–86), the Artificial Intelligence Task Force (1983–84), the Computers in Simulation and Training Task Force (1986–87), and the National Science Board (1987–92). He was chairman of the Military Software Task Force (1985–87).
        In addition to the Turing Award, Brooks received the IEEE McDowell Award (1970), the IEEE Computer Pioneer Award (1982), the U.S. National Medal of Technology (1985), the IEEE Harry Goode Memorial Award (1989), the IEEE John von Neumann Medal (1993), the ACM Allen Newell Award (1994), the Franklin Institute Bower Award and Prize in Science (1995), and the ACM/IEEE Eckert-Mauchly Award (2004).
William L. Hosch
Citation Information
Article Title: Fred Brooks
Website Name: Encyclopaedia Britannica
Publisher: Encyclopaedia Britannica, Inc.
Date Published: 15 April 2022
URL: https://www.britannica.com/biography/Fred-Brooks Access Date: September 07, 2022

软件具有复杂性、一致性、可变性和不可见性等固有的内在特性,这是造成软件开发苦难的根本原因

软件的本质特性:复杂性:

1.Linux内核有630个函数,存在1814个函数调用。

注:将函数表示为节点,调用关系表示为边。

2. 函数vsprintf向控制台输出字符、数字和字符串,它调用了is_digit、strlen、number等多个函数,函数在动态执行过程中呈现出更为复杂的状态

软件的本质特性:复杂性

1.Google搜索引擎建立在遍布全球30多个站点、超过100万台服务器的云计算设施上。

2.Amazon拥有28个云计算中心,在全球的服务器总量超过150万台。

3.阿里云是国内最大的云计算平台,拥有近百万台服务器,分布在北京、上海、深圳、香港和美国等。

软件的本质特性:一致性

1.软件不能独立存在,需要依附于一定的环境(如硬件、网络以及其它软件)。

2.软件必须遵从人为的惯例并适应已有的技术和系统。

3.软件需要随接口不同而改变,随时间推移而变化,而这些变化是不同人设计的结果。

用户使用不同的服务终端发出请求,微信服务器接收请求并转发至抢票主服务器,主服务器处理响应要求非常高的抢票请求,然后将其他的请求转发给其他的辅助服务器。当然在整个的过程中,系统还可能和一些身份认证等其他系统进行交互。从这个应用来看,它需要与微信系统、身份验证系统等系统打交道,因此就必须遵循这些系统定义的接口,而这些接口都是开发工程师认为设计的,任何接口的变化都会带来微信应用的修改,所以说要保持与其他系统的一致性也会造成软件设计的复杂性。

软件的本质特性:可变性

①、人们总是认为软件是容易修改的,但忽视了修改所带来的副作用。

②、不断的修改最终导致软件的退化,从而结束其生命周期。

​ 理想的情况下,随着软件的使用其故障率会逐渐降低,逐渐达到一个稳定的质量,但是软件是在不断变化的,每一次的修改都会造成故障率的升高,同时也有可能对软件的结构带来破坏,不断地修改最终可能导致软件的退化,从而结束其生命周期。如下图的《时间-失效率曲线图》所示

尽管如此,成功的软件都是会发生演化的,没有任何变化的软件一定是没有用的,虽然软件的可变性给开发带来了很多难题,但是也给软件本身带来了生命力,所以我们需要用积极地态度和有效的方法来控制变更,使软件在演化的过程中保证高质量。

这个世界在变,唯一不变的就是一直在变。

我们通过微信开发就可以了解软件的可变性

软件的本质特性:不可见性:

1.软件是一种“看不见、摸不着”的逻辑实体,不具有空间的形体特征。

2.开发人员可以直接看到程序代码,但是源代码并不是软件本身。

3.软件是以机器的形式运行,但是开发人员无法看到源代码是如何执行的

这种不可见行不仅限制了软件的设计过程,同时严重的阻碍了相互之间的人与人的交流

小结:

软件所具有的复杂性、一致性、可变性、不可见性等特性,使得软件开发过程变得难以控制,开发团队如同在焦油坑中挣扎的巨兽。我们需要寻找解决问题的有效方法,从而保证软件开发过程的高效、有序、可控。

软件工程学习(一)初识软件工程相关推荐

  1. 软件工程学习笔记《一》什么是软件工程

    文章目录 软件工程学习笔记目录 软件工程过程 软件工程方法 软件质量 软件质量如何评价 软件的质量模型 ISO9126模型 易用性: 效率 可维护性 可移植性 为什么内存缓冲区是2048或4096 软 ...

  2. 软件工程学习笔记《四》需求分析

    文章目录 软件工程学习笔记<目录> 需求工程师 当代的需求工程师需要具备的能力 当代的需求工程师需要努力的方向 当代的需求工程师需要注意的错误 需求的定义 需求目标 需求分析的实质 需求分 ...

  3. 软件工程学习笔记《目录》

    软件工程学习笔记<目录> 软件工程学习笔记<一>什么是软件工程 软件工程学习笔记<二>代码规范 软件工程学习笔记<三>代码优化和性能测试 软件工程学习笔 ...

  4. 软件工程学习笔记《三》代码优化和性能测试

    文章目录 软件工程学习笔记目录 如何在开源社区提问? 代码审查 代码优化 运行结果 参数解释 代码优化原则 对常见的数据结构排序算法进行测试 关于冒泡排序优化的探讨 结果 软件工程学习笔记目录 [ht ...

  5. 软件工程学习笔记《二》代码规范

    文章目录 软件工程学习笔记目录 google代码规范 节选python来自google翻译 错误注释的示例 命名规范 import语句的规范 import this 源码 软件工程学习笔记目录 [ht ...

  6. 《构建之法》学习总结1——软件工程概论,团队组织及管理,开发流程

    写在前面: 这是我作为一个软件工程专业学生的第一篇个人技术博客,虽然我接下来的人生中还会有无数像这样的博客,但这是一个开始,接下来我将会从一个软件工程专业的大学生向一个合格的程序元转变.说实话现在,这 ...

  7. 软件工程1 初识软件工程

    一.初识软件工程 软件工程是一门研究用工程化方法构建和维护有效.实用和高质量的软件的学科.它涉及程序设计语言..数据库.软件开发工具.系统平台.标准.设计件有电子邮件.嵌入式系统.人机界面.办公套件. ...

  8. 软件工程 学习管理系统 需求分析文档

    软件工程 学习管理系统 需求分析文档 [摘要] 学生学习管理系统是学生管理的一个重要组成部分,也是学校管理的组成部分.尤其是在信息技术高度发达的今天,利用信息技术实现高效的校园学习管理有着巨大的实用价 ...

  9. 网易云课堂--软件工程学习心得

    网易云课堂–软件工程学习心得 一.软件工程实验 通过十周的学习,老师要求的网易云课堂–软件工程的学习,终于结束了. 从开始的对linux平台的不熟悉,到能够熟练运用linux书写代码,我相信大家和我一 ...

  10. 中科大高级软件工程学习心得体会

    中科大高级软件工程学习心得体会 在本门课程中,首先我对一些基本开发工具,如VSCode.Git.Vim.正则表达式等,重新审视了自己的认知,顺便学了一手shell编程,并在课程的基础上又自定义了很多配 ...

最新文章

  1. 执行Shell脚本的4种方法
  2. 0.11内核rd_load@ramdisk.c中memcpy函数好像有bug
  3. 普通人改变命运最关键的这几种方法
  4. Dual-arm cooperation and implementing for robotic harvesting tomato using binocular vision(摘西红柿机器人)
  5. 读《探索需求-设计前的质量》有感三
  6. python stdout stderr 一起输出_Python日志记录在stdout和stderr之间拆分
  7. Android系统中用C语言来编写服务程序并且开机自启动运行服务
  8. mysql datetime设置now()无效,直接用程序设置默认值比较好
  9. vs.net 2005中文版下载
  10. 深入解读Linux内存管理系列(7)——伙伴系统
  11. 解决办法:dpkg: 错误: 无法打开软件包的 info 文件 /var/lib/dpkg/available 以便读取: 没有那个文件或目录
  12. (转)wxWindows一些网文
  13. 初中向局里申请计算机报告,物资申请报告格式
  14. win7修复计算机无法修复工具栏,win7系统任务栏假死怎么办 win7电脑任务栏假死修复方法...
  15. Matlab 蒙特卡洛求解三门问题
  16. 小米MIUI开发版应用闪退问题 Secure.ANDROID_ID must not be null
  17. java 拉姆达 lamdba get
  18. socket技术详解(看清socket编程)
  19. Vue单文件中引入背景图片时,四周有空白的问题
  20. fetion机器人安装

热门文章

  1. 飞康发布第8代备份及重复数据删除一体化方案
  2. 开封微信朋友圈怎样投放广告?
  3. 中南卡通动漫研学教育基地
  4. 年薪最高30万!蒙泰集团招聘66人!工作地点:鄂尔多斯!
  5. AnyGantt Flash甘特图组件免费下载及使用教程
  6. Facebook开源FriendFeed的实时技术
  7. js设置单选按钮选中示例代码
  8. python实现闭合导线平差与坐标计算(改进)
  9. 量化投资学习——Dealing with the Inventory Risk A solution to the market making problem
  10. 基于卷积神经网络和SVM分类器的汽车识别-matlab