文档库 最新最全的文档下载
当前位置:文档库 › 新生研讨课_软件技术导论论文讲解

新生研讨课_软件技术导论论文讲解

新生研讨课大作业

【班级】:14011601

【姓名】:陈梓轩

【学号】:2016303108

【成绩】:

我与软件工程

【摘要】

我与软件工程

软件工程,是一门相对较新的学科,但正因为它的年轻,他成为了近几年来,最具有潜力,最热门的学科之一。

笔者作为一名刚刚进入软件工程专业进行学习的本科学生,将在本文中,从:什么是软件工程,我为什么要学习软件工程,计算机与软件发展历史,软件工程现状与未来发展趋势,自我展望五个方面,总结概括在四周的新生研讨课的学习中所获得的知识,并为自己列出规划,争取在日新月异的计算机发展洪流中,留下自己的烙印。

关键词:【创新】【软件】【编程语言】【模块化】【全球化】

【引言】

软件与计算机,自1946年ENIAC诞生以来,便相辅相成,共同促进着人类社会的发展。在短短不到一个世纪的时间内,创造了不计其数的社会价值。进入二十一世纪,计算机与计算机软件,在人类社会中,扮演了更加重要的角色。

在现代社会中,软件应用于多个方面。典型的软件有电子邮件、操作系统、人机界面、办公套件、编译器、数据库、游戏等。同时,

各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,也提高了工作效率和生活效率。

【正文】

什么是软件工程

软件工程,顾名思义,便是一门学习如何编写软件的学科。但是是真的是这样吗?明显不是。学习软件工程,不仅仅需要学习

C,C++,Python,Java等等各式各样个的语言,要学习的是,如何用这些语言,编写或构造出一个能够在小到PC,手机;大到汽车,甚至飞机、火箭中流畅、高效运行的软件,并对它进行维护。而这门学科所涉及的,也不仅仅是几种枯燥的编程语言,而是要接触电脑的方方面面,各种各样的数据库,不同的操作平台,程序的规范性,软件设计的标准……

不同的人对软件工程有不同的定义:

《计算机科学技术百科全书》:软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质

量、成本等管理。[1]

ISO 9000:软件工程过程是输入转化为输出的一组彼此相关的资源和活动。[2]

以笔者的概括,便是:软件工程是研究和应用如何以系统性的、规范化的方法去开发和维护对社会有价值的软件。

我为什么要学习软件工程

笔者向来是一名实用主义者,向来相信:自己动手,丰衣足食的道理。对于编程,笔者有一定的基础;然而对于软件,笔者还只是一个100%的新手。

选择了软件工程专业之后,笔者就听到各种各样的声音。概括一下,这些声音表达了两种观点:1、软件工程苦啊,出来之后当一个程序猿,熬夜是家常便饭,千万要注意身体啊;2、软件工程好啊,毕业之后就也不愁,工资绝对最高。

但事实上,钱不是我选择软件工程的原因,而吃苦,也并不是笔者所担心的。笔者选择软件工程,既是出于兴趣,也是看中了社会对于软件日趋增长的需求、井喷式的软件的发展。

越来越多的传统行业开始了痛苦的转型期,“互联网+”的提出更是推动了软件行业的发展,机器人逐渐步入生活的方方面面,自动驾驶,工厂的机器化生产……似乎在不久的将来,机器将会取代大部分

人类的工作,而软件,似乎也成为了社会运转的重要支柱。

笔者从小便对计算机有浓厚的兴趣,恰巧,笔者的父亲有一定的编程基础,耳濡目染之中,笔者在高考填报志愿时,毅然决然的选择了软件工程专业。

计算机与软件发展历史

古人有云:“以史为镜,可以知兴替”学习计算机与软件发展的历史,也能帮助我们更好地掌握计算机如软件的发展趋势,并吸取前人经验,帮助我们去探索前方未知的道路。

1、计算机发展史

计算机发展至今经历了电子管计算机,晶体管计算机,中小规模集成电路计算机,大规模与超大规模集成电路计算机四个阶段。

第一台计算机:ENIAC,诞生于1946。

该机使用了1500个继电器,18800个电

子管,占地170m2,重量重达30多吨,

图1 ENIAC

耗电150KW,造价48万美元。开机时让周围居民暂时停电。这台计算机每秒能完成5000次加法运算,400次乘法运算。[3]这台计算机在现代人看来是笨重与低级的代表,但是,正是ENIAC,标志着大型计算机正是走进人类的世界,标志着人类正式迈入信息时代

电子管计算机:这时的计算机的基本线路是采用电子管结构,主要承担科学计算等任务。程序从人工手编的机器指令程序,过渡到符号语言。第一代电子计算机是计算工具革命性发展的开始,它所采用的二进位制与程序存贮等基本技术思想,奠定了现代电子计算机技术基础。

晶体管计算机:20世纪50年代中期,晶体管的出现使计算机生产技术得到了根本性的发展,由晶体管代替电子管作为计算机的基础器件,用磁芯或磁鼓作存储器,在整体性能上,比第一代计算机有了很大的提高。晶体管计算机被用于科学计算的同时,也开始在数据处理、过程控制方面得到应用。[4]

集成电路计算机:计算机的体积大幅度缩小,性能进一步提高,计算机的功能得到空前的拓展,计算机不再是笨重而遥不可及的。她走入了家家户户,各行各业。计算机性能的提升,使它能承担起更加重要的任务,如飞机的自动控制,大数据的处理。计算机已成为了当代社会不可或缺的一部分。

2、编程语言发展史

Fortran:全名:FormulaTranslation,诞生于1957年,是最

早的高级语言。Fortran语言至今仍运用在自动化、航天、政府机关和研究所的控制程序编写中。

Basic 语言:诞生于1964年,由达特茅斯学院学生创造,是一种基础,易学的语言,适合没有数学与编程背景的初学者。由比尔盖茨和保罗阿伦所改编的一款Basic语言是Microsoft的第一款产品。至今,已有两百余万行Basic程序在被使用。

C/C++: C语言诞生于1969年,诞生于贝尔实验室。C++诞生于1983年,是C++的升级款。C++与C语言是当代使用较为广泛的编程语言,著名的Unix,Linux系统便是基于C语言开发的,而firefox浏览器,microsoft office软件,Adobe PDF Reader 都是基于C++开发的。

Pascal 语言:诞生于1970年,名字来源于法国著名物理学家,数学家布莱士·帕斯卡。Pascal语言如今在商业与教育领域被广泛使用。其中,聊天软件Skype便是基于Object Pascal开发。

Python:图标为著名的两条蛇,开

发于1991年,其语法简洁,最大优

势为能够轻松连接各种编程语言所

编写的程序,所以在如今已成为高级

语言的领导者。Mac OS X系统中含有

近9000万行Python语言的代码,

youtube,谷歌搜索也都是基于图 2 如今各种编程语言使用比例

Python语言开发。

Java:开发于1995年,如今运行在超过11亿台PC机上,而且是著名手机操作系统Android也是基于Java开发的。如今许多网站的功能已无法脱离Java而运行。

Javascript:开发于1995年,别看他的名字与JAVA相似,它与Java是两种完全不同的语言环境,拥有不同的语法体系。Javascript主要运用在浏览器、服务器页面的开发。[5]

3、软件发展历程中的的危机

1)软件危机:

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

一系列严重问题的现象。[6]

软件危机使软件开发的成本难以控制,使得投资方投入远超预期的资本。

同时,软件开发时间延长,软件上市时间不断推迟,破坏了软件开发企业的信誉,也对需要这种软件的公司,带

来了不可预计的损失。

2)电脑病毒:

如今,电脑病毒已经成为了电脑安全的最大危害。电脑病毒种类繁多,或是盗取电脑内的用户信息,或是调用电

脑软硬件,监视用户隐私,或是破坏电脑内重要文件……

电脑病毒通常难以被发觉,但其造成的危害却难以估量。

小至用户隐私被窃取,大至扰乱正常社会生产活动,造成

以亿元计的巨大损失。

软件工程现状预期未来发展预期

1、软件工程现状

我国软件工程起步较晚,如今水平仍与欧美发达国家有较大的差距。虽然这几年发展较为迅速,也有了一些拥有自主知识产权的产品,但因为基础较为薄弱,在软件开发的各个阶段都缺少经验,这就造成软件开发团队的工作没有一个可靠的依据,团队之间不能高效的协调合作,这就造成开发周期较长,开发质量有待提高,整体团队效率较低,这种情况下就需要对于开发体制不断的完善,真正做到在开发过程中有据可依有法可循,另外软件开发人员对于开发进度不够重视,这就造成在开发过程中不能保证研发人员的稳定性,造成产品出现质量问题,降低了研发效率,甚至有的产品没有做好开发进度的安排工作造成不能按期完成,影响了项目的进程工作,造成了经济上的重大损失。

2、软件工程未来发展方向

1)软件工程合作国际化

全球化趋势已不可逆转,软件工程也必将顺应全球化趋势。软件巨头将汇集来自全球的精英,形成更为强大的团

队。如同如今的制造业一样,软件产品也将采取外包等方

案,发挥各方优点。同时,来自各个国家的程序员、架构

师也将根据各国国情,使软件更适合地球村村民的不同需

求。

2)软件工程模块化

以笔者看来,将来的软件将更为庞大,这就更加需要程序团队的合作与分工,程序的模块化将会是软件工程发展

的另一重要趋势。将不同的程序模块粘合成一个统一的程

序。这将对程序员提出更高的要求,他们不仅将需要有专

业知识与较高的编程水平,更需要有更强的团队合作能力。

而模块化的程序开发,减小了程序开发的难度,提高了程

序开发的效率。

3)人工智能、机器人方向

人工智能与机器人已经不是一个新概念,如今,智能驾驶,智能家居,家庭机器人这些已经走进我们的生活中,

而Alpha GO战胜李世石,也标志着人工智能的巨大进步。

然而,这些只是标志着人工智能的起步初期的成果,人工

智能仍具有着广阔的前景。如何让人工智能更加接近于人

类?人机交互?如何让人工智能与人类共存?这些都是程

序设计是需要考虑的问题。

4)“互联网+”与传统行业的转变

随着互联网的发展,传统行业受到极大的冲击,传统行业也在尝试着转型,以更好地适应如今的信息社会。而“互

联网+”概念的提出,也大大带动了传统行业的转变。如何

让传统行业融入信息化的浪潮,也是今后程序员应该思考

的问题。如今,如家装行业一开始走入智能行列,智能家

居概念的提出,将会为我们将来的生活带来不可估量的便

捷。

5)私人化,定制化方向,更加人性化的软件。

如今社会更强调“人”,随着经济的发展,越来越多的消费者开始选择享受性消费,而个人定制便是一个主流趋

势。如Nike iD,阿迪达斯的miadidas定制服务,德国工

业4.0概念便是人性化定制的体现。而软件则更为灵活,

私人定制化更加容易。如今,更多可供选择的界面主题,

已初步体现了人性化的需求。然而这还不足够,更加智能,

随着使用着不同心情,所处的不同环境而改变的程序需要

开发。

自我展望

根据以上几点发展趋势我为自己制定了如下几点发展规划:

1、熟练掌握并运用编程语言,有良好的编程规范

作为一名软件设计师,掌握多种编程语言是必不可少的。而开发软件需要团队的合作。没有良好的编程规范,在将多个模块组合起来时会遇到许多问题。所以,掌握多门语言,有良好的编程规范对于将来的发展必不可少。

2、积极了解国际最新科技动向:

软件发展日新月异,层出不穷的新科技是推动软件发展的动力。要想在将来在软件工程方面取得成就,就必须紧跟最新科技。

3、认真学习英语、数学

英语和数学在软件工程方面可以说是两个必不可少的工具。在全球化浪潮的推动下,全球化的分工合作中,需要英语这种工具来与合作伙伴交流。而开发软件的时候,许多算法都需要良好的数学思维与数学基础作为支撑。所以学好数学与英语也是必不可少的。

4、培养合作精神

前文已说,开发软件是一个团队的项目。那么团队合作的精神便是必不可少的。在大学期间,参加各项社团活动与班级活动便是培养团队合作精神的最好方法。

5、培养创新精神,能发现身边需要改进的方面

开发软件便是要服务与社会,为社会创造价值的。当多个程序员水平相当时,能区分它们对社会创造价值的标准,便是谁能创新,谁能开发一个方便人们生活或者工作的程序。正如淘宝、ebay

改变了人们的消费方式;滴滴打车、uber改变了人们的出行选择……这些软件的实现难度并不大,而他们成功的原因便是想法与创新。所以,留心观察身边的不足,开发自己的创新精神,也是取得成就的重要途径。

【参考文献】

[1]:摘自《计算机科学技术百科全书(第二版)》作者:张效祥

[2]:摘自《软件工程概论》作者:郑人杰马素霞殷人昆

[3]:摘自百度百科

[4]:摘自晶体管计算机——中国科技博览

[5]:图源:Rackspace公司

[6]:摘自:《大学计算机基础》

作者:陈梓轩

2016.11

相关文档