软件工程认知实习免费下载.docx
- 文档编号:4647134
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:14
- 大小:30.23KB
软件工程认知实习免费下载.docx
《软件工程认知实习免费下载.docx》由会员分享,可在线阅读,更多相关《软件工程认知实习免费下载.docx(14页珍藏版)》请在冰豆网上搜索。
软件工程认知实习免费下载
哈尔滨理工大学
软件工程认识实习报告
学生姓名:
学号:
学 院:
系别:
软件工程系
专业班级:
软件工程10-1
报告题目:
软件工程认识实习
指导教师:
2012年1月
目录
摘要
正文
一、认识软件工程
1、软件工程定义与目的
1.1.1软件工程定义
1.1.2软件工程的目的
1.2.2软件工程学习的内容
2、软件工程的内容
1.2.1软件工程研究内容
1.2.2软件工程学习的内容
3、软件工程的发展历史及趋势
1.3.1软件工程的发展历史
1.3.2软件工程的发展趋势
二、认识软件开发
1、软件开发流程
2、软件开发所需的知识和技能
3、软件编程语言
4、目前的软件行业现状
2.4.1国外软件产业发展现状
2.4.2国内软件产业发展现状
2.4.2我国软件业发展的机遇
三、关于软件的热点问题
1.软件外包
3.1.1软件外包的定义
3.1.2中国软件外包现状
2.物联网
3.2.1物联网定义
3.2.2物联网的分层
3.云计算
3.3.1云计算的定义
3.3.2云计算的应用
四、认识实习心得与体会
4.1我的职业理想与规划
4.2心得与体会
中文摘要
随着软件工程学习的深入,除了对基本专业知识的掌握外,对软件工程总体的把握显得越来越重要,因此这次认识实习学到的知识对于我们认识软件工程和规划今后道路来说非常重要,通过这次认识实习,了解了软件工程的定义、目的历史、热点问题等,掌握了软件开发的流程,编程语言和行业现状。
并对今后的学习和职业道路有了自己的规划,明确了自己的方向。
关键字:
软件工程,定义,软件开发,编程语言,热点问题,心得
Englishabstract
Withthein-depthstudyinthesoftwareengineering,inadditiontothebasicprofessionalknowledge,graspoftheoverallsoftwareprojectbecomesmoreandmoreimportant,sothispracticeknowledgeforourunderstandingofsoftwareengineeringandplanningfuturedevelopmentisveryimportant,throughthispractice,weunderstandingofthesoftwareengineeringdefinition,objectivehistory,hotissuesandso,grasptheprocessofsoftwaredevelopment,programminglanguagesandtradecurrentsituation.Andhasourownplanningtothefutureoflearningandoccupationroad,clearourowndirection.
Keyword:
Softwareengineering,definition,softwaredevelopment,programminglanguage,hotissues,experience。
一、认识软件工程
1、软件工程定义与目的
1.1.1软件工程定义
软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。
它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
1.1.2软件工程的目的
软件工程的目标是明确的,就是研制开发与生产出具有良好的软件质量和费用合算的产品。
费用合算是指软件开发运行的整个开销能满足用户要求的程度。
软件质量是指该软件能满足明确的和隐含的需求能力的有关特征和特性的总和。
2、软件工程的内容
1.2.1软件工程研究内容
软件工程学主要研究软件结构、软件设计方法论、软件工具、软件工程标准和规范,以及与软件工程有关的理论等。
1.2.2软件工程学习的内容
从软件的生产管理技术来分:
软件的需求定义和分析技术;软件设计技术和设计审查技术;软件设计表现技术;软件测试技术;软件可靠性的理论及其评价方法;软件扩充和维护;软件成本估算等。
从内容上可分为理论、结构、方法、工具等部分。
其中理论与结构是方法论与工具的基础及前提。
在方法论与工具方面存在着这样的关系:
为了找出行之有效的方法就应该具备合适的工具;反之,为了制造、改进软件工具,也应先有合适的方法
3、软件工程的发展历史及趋势
1.3.1软件工程的发展历史
(1)、早期软件的出现
计算机出现之前,就已经有很多数学家为计算机软件的出现打下了坚实的数学理论基础,比如著名的数学家“阿兰.图灵”和他的导师一起努力,在20世纪三、四十年代年代就创建立了“图灵机”理论,从理论上解决了计算机软件和核心——“计算复杂性”以及“算法表示”问题。
(2)、现代计算机软件的问世
1946年,伴随着第一台电子计算机的问世诞生了。
以写软件为职业的人也开始出现,他们多是经过训练的数学家和电子工程师,硬件通常用来执行一个单一的程序,而这个程序又是为一个特定的目的而编制的。
1954年,“约翰.巴科斯”建立了高级语言的思想,并设计出了世界上第一个真正意义上(至今广泛应用)的高级语言,第一个完全脱离机器硬件的高级语言—Fortran问世
1961年第一个数据库管理系统—IDS由通用电气(GE)公司的CharlesBachman开发出。
(3)软件危机的出现
60年代中期软件开始作为一种产品被广泛使用,出现了“软件作坊”专职应别人的需求写软件。
“软件危机”就这样开始了!
1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机”(softwarecrisis)这个名词。
概括来说,软件危机包含两方面问题:
一、如何开发软件,以满足不断增长,日趋复杂的需求;二、如何维护数量不断膨胀的软件产品。
同年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。
在那次会议上第一次提出了软件工程(softwareengineering)这个概念。
60年代末“软件危机”后出现的第一个生命周期模型。
如下所示:
分析→设计→编码→测试→维护,使人们认识到了文档的标准以及开发者之间、开发者与用户之间的交流方式的重要性。
1969年UNIX出现
1969年12月,Internet的前身——美国的ARPA网投入运行,它标志着我们常称的计算机网络的兴起。
1969年,提出了结构化程序设计方法,
1970年,第一个结构化程序设计语言—Pascal语言出现,标志着结构化程序设计时期的开始,即PO(面向过程的开发或结构化方法)以及结构化的分析、设计和相应的测试方法。
1971年,大、超大规模集成电路计算机,应用更加广泛,出现了微型计算机。
(3)现代软件的发展
1972C语言出现
1975年的第六版UNIX才开始走出贝尔实验室
1983年C++出现
1983年IBMDB2数据库产品推出的。
1984年Tuxedo作为第一个严格意义上的中间件产品由AT&T的贝尔实验室开发完成。
1985年Windows1.0正式推出。
之前软件结构体系也是Mainframe结构,该结构下客户、数据和程序被集中在主机上。
90年代,中间件技术才开始迅速发展,建立在计算机和网络技术基础上的计算机网络技术得到了迅猛的发展。
1993年美国宣布建立国家信息基础设施NII后,全世界许多国家纷纷制定和建立本国的NII,从而极大地推动了计算机网络技术的发展,使计算机网络进入了一个崭新的阶段。
目前,全球以美国为核心的高速计算机互联网络即Internet已经形成。
1994年PHP出现。
1995年Java出现。
1996年JavaScript出现。
2000年C#出现。
业务基础平台作为一个新的软件层级尤为引人注目。
业务基础平台是以业务导向和驱动的、可快速构建应用系统的软件平台
2006年被炒得沸沸扬扬的SOA(Service-OrientedArchitecture)作为下一代软件架构,主要用于解决传统对象模型中无法解决的异构和耦合问题。
软件的发展史其实就是在裸机(硬件)和终端用户之间不断沉淀(平台化)的过程。
当与裸机接近的某个层次发展成熟后,与这个层次相关的创新和成果会明显减少,而从这个层次更靠近终端用户业务的层次的创新和成果会增多。
就这样不断不断的沉淀形成平台,不断的向用户和业务领域靠拢。
1.3.2软件工程的发展趋势
Internet及其上应用的快速发展与普及,使计算机软件所面临的环境开始从静态封闭逐步走向开放、动态和多变。
软件系统为了适应这样一种发展趋势,将会逐步呈现出柔性、多目标、连续反应式的网构软件系统的形态。
面对这种新型的软件形态,传统的软件理论、方法、技术和平台面临了一系列挑战。
从宏观上看,这种挑战为我们研究软件理论、方法和技术提供了难得的机遇,使我们有可能建立一套适合于Internet开放、动态和多变环境的新型软件理论、方法和技术体系。
从微观的角度来看,Internet的发展将使系统软件和支撑平台的研究重点开始从操作系统等转向新型中间件平台,而网构软件的理论、方法和技术的突破必将导致在建立新型中间件平台创新技术方面的突破。
二、认识软件开发
1、软件开发流程
(1)需求调研分析
相关系统分析员和用户初步了解需求,然后用WORD列出要开发的
功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。
系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。
这次的文档会清楚例用系统大致的大功能模块,大功能模块有哪些小功能模块,并且还例出相关的界面和界面功能。
系统分析员和用户再次确认需求。
(2)概要设计 首先,开发者需要对软件系统进行概要设计,即系统设计。
概要设计需要对软件系统的设计进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。
(3)详细设计 在概要设计的基础上,开发者需要进行软件系统的详细设计。
在详细设计中,描述实现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试。
(4)编码在软件编码阶段,开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。
(5)测试测试编写好的系统。
交给用户使用,用户使用后一个一个的确认每个功能。
(6)软件交付准备在软件测试证明软件达到要求后,软件开发者应向用户提交开发的目标安装程序、数据库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等双方合同约定的产物。
(7)验收 用户验收。
(8)软件运行维护
2、软件开发所需的知识和技能
软件开发基础知识和技能:
程序设计基础、网页设计基础、关系数据库基础、面向对象的可视化程序设计、数据库应用与开发、客户/服务器开发技术、软件工程、客户端编程、WEB程序设计、WEB开发技术、高级.NET开发技术、嵌入式系统开发、数据结构、操作系统、IT产品服务与营销等。
3、软件编程语言
它并不是特指某一种具体的语言,而是包括了很多编程语言,目前流行的VB、C++、Java、C#等。
(1)Pascal语言:
Pascal是一种计算机通用的高级程序设计语言,由瑞士NiklausWirth教授六十年代末设计并创立的。
Pascal的主要特点有:
严格的结构化形式、丰富完备的数据类型、运行效率高、查错能力强等特点。
由于上述特点,Pascal可以方便用于描述各种算法和数据结构。
对于程序设计的初学者,Pascal语言有益于培养良好的程序设计风格和习惯。
(2)C语言:
C语言是介于汇编语言和高级语言之间的语言,属于高级语言,也称为中级语言,是集汇编和高级语言优点于一身的程序设计语言。
于1972年在美国贝尔实验室里问世。
早期的C语言主要用于UNIX系统。
成为当代最优秀的程序设计语言之一。
C的特点:
1.是一种结构化语言。
层次清晰,便于按模块化方式组织程序,易于调试和维护。
2.C语言的表现能力和处理能力极强。
3.由于C语言实现对硬件的编程操作,所以既可用于系统软件的开发,也适合于应用软件的开发
4.由于C语言允许直接对位、字节和地址进行操作,能实现汇编语言的大部分功能。
5.目标代码质量高,程序执行效率高。
C语言的弱点:
非强类型;语法限制不严格,使得编程者无法过多地依赖C编译程序去查错;缺少实时检查,如数组越界等。
C语言作为一门面向过程的计算机语言,至今已有三十多年历史,应用广泛,无论是Windows还是Linux,你所看到的底层都是用C写的。
大部分的网络协议也都是用C实现的。
(3)C++语言:
C++是于1986年由AT&T贝尔实验室开发的,语言开发的目的在于通过数据封装减少程序变量的副作用,从而降低程序的复杂性并提高程序的可靠性。
C++是C语言的直接扩展,C++的多继承机制能更好地描述对象的属性和行为。
C++是C的扩展,但C++可以作为一种全新的语言来看。
C++的特点:
面向对象、继承、封装、多态性。
由于C++是C的扩展,所以也具有C的特点。
C++在C的基础上,加入了面向对象编程思想,也就决定了C++的效率在某一方面是不如C的。
但由于时代的发展,项目或工程的庞大化,基于面向对象的思想显然更能适应。
即C++在这方面能比C要做得更漂亮。
现在不少系统级编程都是用C++实现,许多应用级别的软件也是用C++实现。
这里要注意一点,就是C++并不是完全的面向对象语言。
它是提供了面向对象的模型以及思路,但是同时兼容了面向过程的模型。
(4)Java语言:
Java语言来自于Sun公司的一个叫Green的项目,其原先的目的是为家用消费电子产品开发一个分布式代码系统。
Java的特点:
1.简单性:
风格类似于C++,Java摒弃了C++中容易引发程序错误的地方,如指针和内存管理。
2.面向对象:
Java是一种完全面向对象语言。
3.分布式:
Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。
4.健壮:
Java致力于检查程序在编译和运行时的错误。
类型检查帮助检查出许多开发早期出现的错误。
Java自己操纵内存减少了内存出错的可能性。
5.结构中立:
Java将程序编译成一种结构中立的中间文件格式。
6.安全:
1)删除了香指针和手动释放内存等功能,避免了非法内存操作。
2)当Java用来创建浏览器时,语言功能和浏览器本身提供的功能结合起来。
7.可移植的:
同体系结构无关的特性使得Java应用程序可以在配备Java解释器和运行环境的任何计算机系统上运行。
8.解释性。
Java解释器能直接运行目标代码指令。
链接程序通常比编译程序所需资源少。
9.高性能。
如果解释器速度不慢,Java可以在运行时直接将目标代码翻译成机器指令。
Sun用直接解释器一秒钟内可调用300,000个过程。
10.多线程:
Java提供的多线程功能使得在一个程序里可同时执行多个小任务。
多线程带来的更大好处是更好的交互性能和实时控制性能。
11.动态:
动态特性允许程序动态地装入运行过程中所需要的类。
在运行时确定引用的好处是可以使用已被更新的类,而不必担心会影响原有的代码。
Java在诞生之后不久,便受到广大群众的欢迎,甚至有人说出有了Java,可以不要C/C++了。
一度把Java提到了很高的地位。
这当然是对Java的一种赞赏,只是有点过了。
到今天,Java依然不能取代C,C++,而且还出现了新的对手――.Net。
Java目前主要应用:
Web浏览器、网络应用系统。
(5)C#语言.
C#是一种精确、简单、类型安全、面向对象的语言。
微软总裁兼首席执行官SteveBallrner把它定义为:
.Net代表一个集合,一个环境,它可以作为平台支持下一代Internet的可编程结构。
C#是.net的代表语言。
C#的特点:
1.完全面向对象。
2.支持分布式,之所以有C#,是因为微软相信分布式应用程序是未来的趋势,即处理过程分布在客户机和服务器上。
所以C#一出生就注定了能很好解决分布式问题。
3.跟Java类似,C#代码经过编译后,成为了一种IL(中间语言)。
在运行时,再把IL编译为平台专用的代码。
4.健壮,C#在检查程序错误和编译与运行时错误一点也不逊于Java,C#也用了自动管理内存机制。
5.C#不像Java那样完全摒弃了指针和手动内存管理。
C#默认情况下是不能使用指针的,程序员在有必要时可以打开指针来使用。
这样可以保证编程的灵活性。
6.安全性:
C#的安全性是有.net平台来提供的。
C#代码编译后成为IL语言。
是一种受控代码,.net提供类型安全检查等机制保证代码是安全的。
7.可移植性:
由于C#使用类似Java的中间语言机制。
使得C#也跟Java类似,可以很方便的移植到其他系统。
在运行时,再把中间代码编译为适合特定机器的代码。
8.解释性:
C#也是一种特殊的解释性语言。
9.高性能:
C#把代码编译成中间语言后,可以高效的执行程序。
10.多线程:
与Java类似,可以由一个主进程分出多个执行小任务的多线程。
11.组件模式:
C#很适合组件开发。
各个组件可以由其他语言实现的,然后集成在.net中。
C#目前主要是应用在网络编程上,其他领域比如数据库、窗体编程,都逐渐在增大。
4、目前的软件行业现状
2.4.1国外软件产业发展现状
发达国家已经认识到软件的重要性,并将其视为国家关键技术,软件技术的研究和软件产业的发展是当今发达国家竞相扶持的重点,并成为国家间相互竞争的武器,一些发展中国家也在积极发展自己的软件行业,争取抓住机遇,迎头赶上。
在软件产业发展中,发达国家占有明显优势,美国已经成为全球软件发展的龙头,大多数先进的软件技术及产品都源于美国,世界软件市场的份额分配大致为:
美国60%,西欧20%,美国12%,其他8%。
发展中国家在软件行业发展中以印度较为突出,其软件行业已在世界市场占有有利地位,在世界银行对7个软件出口国的比较研究中,从提供软件服务的规模和质量看,印度名列第一。
1995年,印度约有90%的软件出口,目前,印度已有近百个软件企业通过了ISO-9000质量认证。
2.4.2国内软件产业发展现状
(一)在全球软件产业中的地位低微,与周边国家相比也存在较大差距
从总量以及所占比例来看,2000年,我国软件产业占全球市场的份额虽然与周边国家如印度、韩国所占的份额相差不多,比爱尔兰略低0.3个百分点,似乎差别不大,但是考虑到软件产品质量、软件开发的规范程度、软件出口或满足国内市场的程度等方面,我国与这些周边国家以及爱尔兰相比则存在很大差距。
(二)软件产业对国民经济发展的贡献较低,发展速度不能适应国家信息化的要求。
1996—2001年,我国软件产业国内市场增长速度分别为46.8%、31%、26.4%、27%、33%、34%,年均增长率约为30%,虽然高于世界软件产业的平均增长速度,但比印度软件产业起飞时期低20个百分点,比爱尔兰低50个百分点,难以满足国家信息化建设对软件产业的要求。
(三)软件产业的发展空间巨大,但国产软件的市场份额十分有限
我国目前正在大力推行国民经济与社会信息化建设,但是,信息化的迅猛发展并没有形成对国产软件有效的需求,反而有助于跨国公司在我国的发展。
(四)缺乏核心产品和关键技术,核心竞争力薄弱
在我国,国外软件产品占据了2/3的国内市场,其中在系统软件方面几乎没有我国自主版权软件的立足之地,国产支撑软件只是凤毛麟角,应用软件同样面临剧烈竞争。
缺乏基础和核心技术以及具有自主知识产权的软件产品,自主创新能力弱,不仅使得大量利润流入外国企业,严重影响我国软件产业的积累和再循环能力,而且还严重威胁着我国的信息安全。
(五)产业发展基础薄弱,无力与跨国公司抗衡
软件产业是以智力和资本密集型为主要特点的,人才是软件技术创新的根本,是软件产业竞争的焦点。
在人才结构上,高级开发人才、通晓金融懂管理的人才、软件工程过程管理人才和软件技术工人均严重不足。
某些省区对软件人才的吸引力较弱,省区内高校培养的软件人才供给不足且流失严重,造成软件设计专业技术人员缺乏。
再加上“一低两高”(劳动生产率低,人力成本高,开发成本高)的现状,发展速度之慢也就不足为怪了。
(六)软件企业内部及国家政策落实中存在诸多问题
由于软件企业固定资产少、无形资产比重大,缺少可供抵押或质押的资产,很难争取到银行贷款。
同时,由于软件企业的规模较小,前期研发投入过大,而且研发费用很难转化为固定资产,与传统制造业的盈利模式有所不同,同时发行股票的规模也无法放大,因而,在目前实行股票发行核准制的情况下,证券公司在推荐软件企业发行股票方面积极性不高,软件企业上市存在实际的困难。
在税收优惠政策方面,现有的软件产业政策是从软件产品销售收入比例和自产软件产品销售收入比例等方面来界定软件企业,而将软件服务业、软件产业孵化器、软件企业的分支机构以及国产软件的代理和分销商排除在外,实际上使软件产业链条上各环节、各要素处于不平等的地位,导致有些环节发展滞后,成为整个软件产业发展的“瓶颈”。
关于知识产权保护方面,目前版权法的执行仍未取得预期效果
2.4.3我国软件业发展的机遇
(一)入世给我国软件业带来的机遇。
使我国有权参与制定相关的规则和协议,进而处于主动地位加入WTO后,一些国家对我国设置的贸易障碍将会取消,对中国出口商品的歧视性行为也会得到抑制。
同时中国将变被动为主动,可以从本国利益和实际出发,提出一些有利于本国经济发展的建议,从而为我国争取应有的权利。
(二)我国政府通过采购等方式为软件产业的发展营造良好的政策和经济环境。
三、关于软件的热点问题
1.软件外包
3.1.1软件外包的定义
所谓软件外包就是一些发达国家的软件公司将他们的一些非核心的软件项目通过外包的形式交给人力资源成本相对较低的国家的公司开发,以达到降低软件开发成本的目的。
众所周知,软件开发的成本中70%是人力资源成本,所以,降低人力资源成本将有效地降低软件开发的成本。
3.1.2中国软件外包现状
全球软件外包市场规模已达1000亿美元。
发包市场主要集中在北美、西欧和日本,接包市场主要是印度、爱尔兰等国家。
其中,美国市场被印度垄断,欧洲市场则被爱尔兰垄断。
现在,菲律宾、巴西、俄罗斯、澳大利亚等国也加入了世界软件外包的竞争行列。
虽然中国IT外包服务市场一直高速增长,但截至目前,IT外包服务的用户群还相当狭小。
就IT外包
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 认知 实习 免费 下载
![提示](https://static.bdocx.com/images/bang_tan.gif)