SE第1次博客作业

一、对软件工程的初步认知

 (1)软件

  什么是软件?《现代软件构建之法》给出的定义是

软件 = 程序 + 软件工程

  程序我下文提到,是类似一个小的功能组件,能完成能完成一个或几个的对数据处理的功能,那么软件就是将大量的程序有机的,工程化的联系在一起,能达成成本,质量,效率的优良统一。

  在最初的软件概念出现之前,软件其实可以看作是程序,就像书中提到的例子一样,阿超为自己的儿子做一个练习数学的程序,结果被老师发现后大受好评,但同时也带来了很多需求,当需求增加到一定程度,一个人已经无法短时间内完成所有功能,维护,以及后期的运维的时候,就需要一个工程化的流程,将需求统计规划,并交由多个人按照各自的职责完成,以及后期的维护,这样工程化之后的程序,就是后来的软件,也即书中所说的软件 = 程序 + 软件工程。

  以下是软件的严格定义:

  今天的软件是由小心设计的程序、汇编和自动地程序设计的其他方面所组成,至少和现代计算机中的电子管、晶体管、磁带等等成为‘硬件’的内容有同样的重要性的事物

  (2)程序

  在数据结构课程的第一节,书上就有写:

程序 = 数据结构 + 算法

  我认为,程序就像是一个小的功能组件,它能完成一个或几个的对数据处理的功能,是构成软件的最基本部分。

  根据课程,程序的定义最早可以追溯到一位名叫“Augusta Ada King的女性,她最开始写出了一段将数学问题通过步骤的拆解来进行解决的过程,而这些步骤后来可以通过计算机的功能来实现,后经演化,程序也被定义出来。

 (3)硬件

  硬件给软件提供必要的环境支持,当硬件发展到一定程度,组件功能效率提高的同时,也能带来软件的进步

  以冯·诺依曼计算机为例,硬件分为处理器(运算器),存储器,控制器,输入设备以及输出设备几部分

 (4)软件危机

  百度对软件危机的定义是:

软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

  我认为,当软件集成到一定程度,复杂度越来越高,维护难度提高,以及对于错误或者漏洞的抵抗力就会越来越弱,而软件常常是牵一发而动全身,一个数值有所差错或者指令出错就会影响到全部程序的工作,这样一来,就很容易引发众多问题,导致不可逆的惨重后果,这就是软件危机。所以,就需要工程化的方法来对软件进行规范和指引。

  下列几条著名的软件危机:

1.IBMOS/360

IBMOS/360操作系统被认为bai是一个典型的案du例。到现在zhi为止,它仍然被使用在360系列主机中。这个经历dao了数十年,极度复杂的软件项目甚至产生了一套不包括在原始设计方案之中的工作系统。OS/360是第一个超大型的软件项目,它使用了1000人左右的程序员。

佛瑞德·布鲁克斯在随后他的大作《人月神话》中曾经承认,在他管理这个项目的时候,他犯了一个价值数百万美元的错误。

 

2.美国银行信托软件系统开发案

美国银行1982年进入信托商业领域,并规划发展信托软件系统。项目原订预算2千万美元,开发时程9个月,预计于1984年12月31日以前完成,后来至1987年3月都未能完成该系统,期间已投入6千万美元。

美国银行最终因为此系统不稳定而不得不放弃,并将340亿美元的信托账户转移出去,并失去了6亿美元的信托生意商机。

 

3.丹佛新国际机场事件

该机场规模是曼bai哈顿机场的du两倍,宽为希思机场的10倍,可以全天侯同时起降三架喷气式客机,投资1.93亿美元建立了一个地下行李传送系统,总长21英里,有4,000台遥控车,可按不同线路在20家不同的航空公司柜台、登机门和行李领取处之间发送和传递行李。

支持该系统的是5000个电子眼、400台无线电接受机、56台条形码扫描仪和100台计算机。按原定计划要在1993年万圣节前启用,但一直到1994年6月,机场的计划者还无法预测行李系统何时能达到可使机场开放的稳定程度,导致机场无法如期开放。

 (5)软件工程

  软件概念的出现,解决了可移植性,通用性的问题,同时软件的规模越来越大,软件危机频发,人们不得不寻找一种方法使软件能更好的为人们服务,于是软件工程化就被提议出来。

  1968年,德国信息学之父“德里希·鲍尔”在北大西洋公约组织在联邦德国召开的会议上提出了“软件工程”的概念,这里不能不提到另一位杰出的女性——“玛格丽特·汉密尔顿”,她在阿波罗登月计划中带领团队解决了一个可能导致整个飞船错误降落的问题,同时也是“软件工程师”一词的创造者,并获得了总统自由勋章。她说:“希望给予做软件的人们以尊敬,与做硬件和其他的人一样,在这个宏大的工程中各司其职”,她也激励着后来所有的软件工程师们。

  言归正传,软件工程的概念被提出后,软件就再也不是单纯的软件,而是将人们做开发、运营、维护软件的过程中的很多技术、做法、习惯、和思想体系统一到一起,提高了软件开发、运营、维护的效率,并提高了软件的质量,用户满意度,可靠性和软件的可维护性,是人们在软件发展路上走出的一大步。

  一下给出软件工程的严格定义:

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面,是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。

 

二、描述你当前已具备的能力

  Java基础语法,对封装,继承,多态有一定了解,但实践不足

  python,C仅限于基础语法

  sql数据库增删改查的基本语句

  web标签语句,css样式语句

  数据结构,算法水平很差,需要多加锻炼

 

posted @ 2020-09-18 16:44  180402-马金龙  阅读(264)  评论(0)    收藏  举报