第一篇:软件工程认识报告
我对软件工程的认识
班级:软件二班
随着现代计算机应用的日益普及,软件数量的急剧上升。在程序运行时发现的错误必须设法改正;用户有了新的需求时必须相应地修改程序;硬件或操作系统更新时,通常需要修改程序以适应新的环境等等情况都需要对软件进行维护,这样就导致了“软件危机”的产生。为了应对“软件危机”,这样软件工程运应而生。
在我看来,软件工程就是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济地开发出高质量的软件并有效地维护它。
正因为软件工程学对我们以后从事软件行业工作有着举足轻重的指导作用,作为新时代的学生,为了振兴我国的计算机和软件产业,具备软件工程思想和技术,我们更应努力学好软件工程该门课程。
我们要从理论的高度了解软件的开发过程,吸收借鉴学习前人总结的方法与教训,站在一定的高度避免自己在以后的软件开发过程中重蹈覆辙,减少开发的损失与风险。由此可见,软件工程课程的学习,对以后我们的从事软件开发实践活动意义重大,不可不学!
对软件工程该学科的学习,我们要端正要自己的态度,培养自己对这们学科的兴趣,自主学习,领悟前人总结的开发经验。同时也要注重实践的验证,只有理论与实践相结合,才能起到事半功倍的作用。相信通过自身的努力,一定会收获更多的!
第二篇:软件工程认识实习报告
软件工程认识实习报告
专业班级:csdn-java 学生姓名:曹炳旭
随着软件工程学习的深入,除了对基本专业知识的掌握外,对软件工程总 体的把握显得越来越重要,因此这次认识实习学到的知识对于我们认识软件工程和规划今后道路来说非常重要,通过这次认识实习,了解了软件工程的定义、目的历史、热点问题等,掌握了软件开发的流程,编程语言和行业现状。并对今后的学习和职业道路有了自己的规划,明确了自己的方向。软件工程认识实习
一、认识软件工程
1、软件工程定义与目的
(1)软件工程定义
软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
(2)软件工程的目的软件工程的目标是明确的,就是研制开发与生产出具有良好的软件质量和费用合算的产品。
费用合算是指软件开发运行的整个开销能满足用户要求的程度。
软件质量是指该软件能满足明确的和隐含的需求能力的有关特征和特性的总和。
2、软件工程的内容
(1)软件工程研究内容
软件工程学主要研究软件结构、软件设计方法论、软件工具、软件工程标准和规范,以及与软件工程有关的理论等。
(2)软件工程学习的内容
从软件的生产管理技术来分:软件的需求定义和分析技术;软件设计技术和设计审查技术;软件设计表现技术;软件测试技术;软件可靠性的理论及其评价方法;软件扩充和维护;软件成本估算等。
从内容上可分为理论、结构、方法、工具等部分。其中理论与结构是方法论与工具的基础及前提。在方法论与工具方面存在着这样的关系:为了找出行之有效的方法就应该具备合适的工具;反之,为了制造、改进软件工具,也应先有合适的方法
3、软件工程的发展历史
(1)、早期软件的出现
计算机出现之前,就已经有很多数学家为计算机软件的出现打下了坚实的数学理论基础,比如著名的数学家“阿兰.图灵”和他的导师一起努力,在20世纪三、四十年代年代就创建立了“图灵机”理论,从理论上解决了计算机软件和核心——“计算复杂性”以及“算法表示”问题。
(2)、现代计算机软件的问世
1946年,伴随着第一台电子计算机的问世诞生了。以写软件为职业的人也开始出现,他们多是经过训练的数学家和电子工程师,硬件通常用来执行一个单一的程序,而这个程序又是为一个特定的目的而编制的。
1954年,“约翰.巴科斯”建立了高级语言的思想,并设计出了世界上第一个真正意义上(至今广泛应用)的高级语言,第一个完全脱离机器硬件的高级语言—Fortran问世1961年第一个数据库管理系统—IDS由通用电气(GE)公司的Charles Bachman开发出。(3)软件危机的出现
60年代中期软件开始作为一种产品被广泛使用,出现了“软件作坊”专职应别人的需求写软件。“软件危机”就这样开始了!1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危
机”(software crisis)这个名词。概括来说,软件危机包含两方面问题:
一、如何开发软件,以满足不断增长,日趋复杂的需求;如何维护数量不断膨胀的软件产品。同年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。在那次会议上第一次提出了软件工程(software engineering)这个概念。60年代末“软件危机”后出现的第一个生命周期模型。如下所示:分析 → 设计 → 编码 → 测试 → 维护,使人们认识到了文档的标准以及开发者之间、开发者与用户之间的交流方式的重要性。
1969年UNIX出现
1969年12月,Internet 的前身——美国的ARPA网投入运行,它标志着我们常称的计算机网络的兴起。
1969年,提出了结构化程序设计方法,1970年,第一个结构化程序设计语言—Pascal语言出现,标志着结构化程序设计时期的开始,即PO(面向过程的开发或结构化方法)以及结构化的分析、设计和相应的测试方法。
1971年,大、超大规模集成电路计算机,应用更加广泛,出现了微型计算机。(4)现代软件的发展 1972 C语言出现
1975年的第六版 UNIX才开始走出贝尔实验室 1983年 C++出现
1983年IBM DB2数据库产品推出的。
1984年Tuxedo作为第一个严格意义上的中间件产品由AT&T的贝尔实验室开发完成。
1985年Windows 1.0正式推出。之前软件结构体系也是Mainframe结构,该结构下客户、数据和程序被集中在主机上。
90年代,中间件技术才开始迅速发展,建立在计算机和网络技术基础上的计算机网络技术得到了迅猛的发展。
1993年美国宣布建立国家信息基础设施NII 后,全世界许多国家纷纷制定和建立本国的NII,从而极大地推动了计算机网络技术的发展,使计算机网络进入了一个崭新的阶段。目前,全球以美国为核心的高速计算机互联网络即Internet已经形成。
1994年 PHP出现。1995年 Java出现。
1996年 JavaScript出现。
2000年 C#出现。业务基础平台作为一个新的软件层级尤为引人注目。业务基础平台是以业务导向和驱动的、可快速构建应用系统的软件平台
2006年被炒得沸沸扬扬的SOA(Service-Oriented Architecture)作为下一代软件架构,主要用于解决传统对象模型中无法解决的异构和耦合问题。软件的发展史其实就是在裸机(硬件)和终端用户之间不断沉淀(平台化)的过程。当与裸机接近的某个层次发展成熟后,与 这个层次相关的创新和成果会明显减少,而从这个层次更靠近终端用户业务的层次的创新和成果会增多。就这样不断不断的沉淀形成平台,不断的向用户和业务领域 靠拢。
4.软件工程的发展趋势
Internet及其上应用的快速发展与普及,使计算机软件所面临的环境开始从静态封闭逐步走向开放、动态和多变。软件系统为了适应这样一种发展趋势,将会逐步呈现出柔性、多目标、连续反应式的网构软件系统的形态。面对这种新型的软件形态,传统的软件理论、方法、技术和平台面临了一系列挑战。从宏观上看,这种挑战为我们研究软件理论、方法和技术提供了难得的机遇,使我们有可能建立一套适合于Internet开放、动态和多变环境的新型软件理论、方法和技术体系。从微观的角度来看,Internet的发展将使系统软件和支撑平台的研究重点开始从操作系统等转向新型中间件平台,而网构软件的理论、方法和技术的突破必将导致在建立新型中间件平台创新技术方面的突破。
二、认识软件开发
1、软件开发流程
(1)需求调研分析
相关系统分析员和用户初步了解需求,然后用WORD列出要开发的功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。
系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚例用系统大致的大功能模块,大功能模块有哪些小功能模块,并且还例出相关的界面和界面功能。系统分析员和用户再次确认需求。
(2)概要设计
首先,开发者需要对软件系统进行概要设计,即系统设计。概要设计需要对软件系统的设计 进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。
(3)详细设计
在概要设计的基础上,开发者需要进行软件系统的详细设计。在详细设计中,描述实 现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或 子程序)的设计考虑,以便进行编码和测试。
(4)编码
在软件编码阶段,开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。
(5)测试
测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能(6)软件交付准备 在软件测试证明软件达到要求后,软件开发者应向用户提交开发的目标安装程序、数据库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等双方合同约定的产物。
(7)验收
用户验收。
(8)软件运行维护
2、软件开发所需的知识和技能
软件开发基础知识和技能:程序设计基础、网页设计基础、关系数据库基础、面向对象的可视化程序设计、数据库应用与开发、客户/服务器开发技术、软件工程、客户端编程、WEB程序设计、WEB开发技术、高级.NET开发技术、嵌入式系统开发、数据结构、操作系统、IT产品服务与营销等。
3、目前的软件行业现状
(1)国外软件产业发展现状
发达国家已经认识到软件的重要性,并将其视为国家关键技术,软件技术的研究和软件产业的发展是当今发达国家竞相扶持的重点,并成为国家间相互竞争的武器,一些发展中国家也在积极发展自己的软件行业,争取抓住机遇,迎头赶上。
在软件产业发展中,发达国家占有明显优势,美国已经成为全球软件发展的龙头,大多数先进的软件技术及产品都源于美国,世界软件市场的份额分配大致为:美国60%,西欧20%,美国12%,其他8%。
发展中国家在软件行业发展中以印度较为突出,其软件行业已在世界市场占有有利地位,在世界银行对7个软件出口国的比较研究中,从提供软件服务的规模和质量看,印度名列第一。1995年,印度约有90%的软件出口,目前,印度已有近百个软件企业通过了ISO-9000质量认证。(2)国内软件产业发展现状
(一)在全球软件产业中的地位低微,与周边国家相比也存在较大差距
从总量以及所占比例来看,2000年,我国软件产业占全球市场的份额虽然与周边国家如印度、韩国所占的份额相差不多,比爱尔兰略低0.3个百分点,似乎差别不大,但是考虑到软件产品质量、软件开发的规范程度、软件出口或满足国内市场的程度等方面,我国与这些周边国家以及爱尔兰相比则存在很大差距。(二)软件产业对国民经济发展的贡献较低,发展速度不能适应国家信息化的要求。1996—2001年,我国软件产业国内市场增长速度分别为46.8%、31%、26.4%、27%、33%、34%,年均增长率约为30%,虽然高于世界软件产业的平均增长速度,但比印度软件产业起飞时期低20个百分点,比爱尔兰低50个百分点,难以满足国家信息化建设对软件产业的要求。
三.作为一名大一学生,还有不到两年时间毕业,我给自己做的规划如下:
(1)在校时间
a.在校期间完成基本学业,牢固掌握基础课,学好专业课,为考研和就业做准备,利用课余时间深入学习软件编程技术,linux技术,数据库语言,汇编语言,数据结构等,提高自己的专业能力。
b.积极参加各种活动,提高自己的交流能力,语言表达能力,团队合作能力。
c.利用课余时间或假期,寻求专业方面的实践,在实践中掌握和巩固学到的知识。
五。心得与体会
通过对软件工程的认识实习,我受益良多。以前一直对软件存在一些偏见或者是误解,认为软件就是程序,软件的开发就是编写程序,只要编写完了程序,就可以完成任务。但是通过认识实习,我认识到了我以前的错误,软件其实不仅仅是程序,软件开发其实也不仅仅是编写程序,软件是思想在硬件上的载体和体现,处理的是逻辑和信息。唯有对软件和软件工程的开发过程,有充分的认识,才能开发出好的软件产品。
从认识实习中我也发现,编程其实是一种乐趣与苦恼共存的创造性活动,变成不仅仅能够满足我们内心深处进行创造的渴望,还能预约我们的内心情感。
通过在认识实习中的自主学习,我知道我需要掌握如何在最小的成本中,训练自己的基本工程素质和能力,如何激发自己的积极性等,也让我明白了扎实的专业基础的重要性和团队协作能力的重要性。剧本这些能力会让我们在今后的学习和将来的工作中少走弯路。
认识实习虽然结束,软件之路才刚刚开始,也许在学习和今后的工作中会疲惫会有很多失败很多挫折,但是既然选择了这条路并且对其保持有充分的热情,就不会放弃,相信我会在软件行业走得更好,走的更远。
第三篇:软件工程认识实习报告
2010年中国软件产业发展现状概况
2010 年,我国软件业实现新的突破,产业增速稳步回升,业务结构调整加快,企业发展和区域布局出现新的特点,在国民经济中的地位不断提升。
2010 年,实现软件业务收入13364 亿元,产业规模比2001年扩大十几倍,年均增长38%,占电子信息产业的比重由2001 年的6%上升到18%。在全球软件与信息服务业中,所占份额由不足5%,上升到超过15%。软件业从业人数由2001 年不足30万人提高到超过200 万人。
2010 年,信息技术咨询服务和信息技术增值服务收入分别为1233 和2178 亿元,同比增长37.2%和44.6%。软件产品收入4208 亿元,同比增长28.6%;嵌入式系统软件受通信类产品增长放缓影响,完成收入2242 亿元,同比增长15.1%。受集成电路行业复苏和软件外包市场增长带动,设计开发实现收入593 亿元,同比增长73.1%;系统集成和支持服务实现收入2910 亿元,同比增长31.8%。2010年全国计算机软件著作权登记量突破了8万件。
软件产业发展聚集趋势从过去主要集中在京粤地区转向沿海地区。2010 年,江苏、辽宁、福建、山东四省软件收入增长超过35%,占全国比重合计达35%,逐步打破过去京粤两地占全国一半以上的集中局面(两地占比下降为35.5%)。中心城市成为软件产业发展的主要聚集地,2010 年全国4 个直辖市和15 个副省级城市软件收入10643 亿元,占全国的比重为80%。在中西部地,成都、西安、重庆三个城市占西部地区的90%,武汉、长沙二个城市占中部地区30%以上。
软件产业面临的形势
从国际上看,全球软件产业格局充分洗牌,为后发国家实现追赶和跨越带来更大的机遇,软件技术和产业的格局正在孕育新一轮的重大调整,一方面跨国公司原有的技术垄断受到了挑战,对后发国家的技术锁定效应大大降低,所谓的技术锁定就是垄断,技术封锁效应。另一方面是云计算为代表的模式的创新对产业发展的影响日益突出,在这种背景下,软件技术创新速度将明显加快,服务的新业态新模式将不断的涌现。
从国内看,推进两化深度融合和培育战略性新兴产业给软件产业带来巨大的发展空间,我国作为后发国家,拥有大国优势,有庞大的潜在的消费市场。商务部统计,我国的消费是每年15%的速度在增长,其中有很大一部分是电子消费,满足不同层次和年龄的需要,推动两化深度融合,培育发展战略性新兴产业为我国新一轮信息技术发展提供了广阔的创新和应用空间,从云计算、物联网新兴业态的发展情况来看,我国和美国有一段距离,但是国际上物联网是这两年刚刚有的新的概念,我们觉得和日本韩国相比处在同一个起跑线上。
软件产业发展趋势分析
未来软件产业发展的趋势可以归纳为“五化”,分别是网络化、服务化、智能化、平台化、融合化。
网络化将成为信息技术发展的一个基本方向,互联网已经成为了软件开发部署和运行的一个平台,推动了整个产业的全面的转型,三代网、物联网和移动互联网云计算都是软件网络化趋势的具体体现。
服务化是网络转型的本质和特点,软件开发技术和应用模式正在向以用户为中心转变,云计算是软件服务化的模式,可以按照用户需要,动态的来提供计算、存储、应用等各类资源,具有可动态的伸缩性,使用成本比较低,可管理性好,节约能耗,安全便捷等优点,在服务化的大趋势下,向用户提供软件服务的体验,将来成为竞争的重要因素。
智能化是软件技术发展的永恒的主题,软件能够从复杂多样的海量的数据当中,自动高效的提取所需要的知识、信息进行加工处理,软件开发语言更加的高级化,开发工具也更加的集成化。
平台化是软件技术和产品发展的新引擎,操作系统、数据库、中间件和应用软件相互的渗透,向一体化的软件平台进行演变,平台化的趋势下,软件的竞争从单一产品的竞争发展为平台间的竞争,未来软件产业将围绕主流软件平台构造整个软件产业链。
融合化是软件技术和产业发展的新空间,软硬结合,软件与网络的结合,产品与业务的融合,软件产业与其他产业之间的相互渗透、相互融合不断深化,融合化趋势创造了巨大的市场需求。
什么是“软件工程”?
IEEE计算机学会将“软件工程”定义为:“(1)应用系统化的、学科化的、定量的方 法,来开发、运行和维护软件,即,将工程应用到软件。(2)对(1)中各种方法的研究”。(参见:IEEE Standard Glossary of Software Engineering Terminology。IEEE, Piscataway, NJ std 610.12-1990, 1990)
软件工程知识域
软件需求 Software Requirements 软件设计 Software Design 软件构造 Software Construction 软件测试 Software Testing 软件维护 Software Maintenance 软件配置管理 Software Configuration Management 软件工程管理 Software Engineering Management 软件工程过程 Software Engineering Process 软件工程工具和方法 Software Engineering Tools and Methods 软件质量 Software Quality 软件工程职业的乐趣
首先是一种创建事物的纯粹快乐;
其次,快乐来自于开发对其他人有用的东西;
第三是整个过程体现出魔术般的力量——将相互啮合的零部件组装在一起,看到它们精妙地运行,得到预先所希望的结果;
第四是学习的乐趣,来自于这项工作的非重复特性; 最后,乐趣还来自于工作在如此易于驾驭的介质上
软件工程职业的苦恼 首先,必须追求完美;
其次,是由他人来设定目标,供给资源,提供信息;
概念性设计是有趣的,但寻找琐碎的 bug 却只是一项重复性的活动;
最后一个苦恼,有时也是一种无奈——当投入了大量辛苦的劳动,产品在即将完成或者终于完成的时候,却已显得陈旧过时;
软件工程职业发展路线
从程序员到软件设计师
软件技术发展到今天,分工越来越细。程序员作为一个通用称谓已经无法确切定义各种工作的性质和特点。因为软件开发中各种职责区分不清,无论是刚刚写代码的新手还是具有多年经验的老手,一概被扣上程序员的通用名称,这也使得很多进入这个领域的软件开发人员无法制订自己未来的职业发展之路。
实际上,软件公司也认识到了对程序员分类的重要性开始将各种职位定义得更加准确。对于从事软件开发的程序员来说,更需要尽快明确自己的发展方向,并在此方向上将专业知识积累得更深厚,这才能尽快摆脱对未来发展方向的迷茫。
从程序员的技术方向发展来看,软件设计师无疑是职业生涯的顶峰。拿破仑说过“不想当元帅的士兵不是好士兵”,借用这句话,不想当软件设计师的程序员也不是好程序员。不过首先要了解什么是软件设计师,如何才能成为软件设计师。明了这些,才有可能向软件设计师发展,创造更辉煌的程序人生。
软件设计师的定义
软件设计师包括软件系统设计师(System Designer)和软件架构设计师(Architect)。
系统设计师应对“系统结构”所使用的软件技术非常了解,自身具备良好编程技巧,才能成为优秀的系统设计师。系统设计师的职责是把结构模型对应到实现模型上,从概念到实现期间规划和组合模型的优劣是决定软件系统设计师好坏的标准。
软件架构设计师是程序员技术方向的最终归属,也是成长链中最神圣的一环,架构设计师的贡献最大。架构设计师彻底摆脱了语言的束缚,知道软件发展趋势。他们会开发新一代产品或者制定新一代产品的方案。软件架构设计是面向未来的。全球大规模的软件公司并不多,很重要的一个原因是软件产品的发展都滞后于市场需求,即有需求后再研发产品,而不是预见需求,预先设计,因此往往软件设计局部是合理的,但从整体的角度看却不合理。要解决这些问题就要看的能力了。
软件设计的三个层次
软件设计可以分三个层次。
第一层属于标准层,像J2EE、.NET的框架设计;
第二种属于系统层的设计,比如Delphi这样的开发工具就是工具系统级的设计;
而应用最广泛的是第三层:应用软件设计。基于中国软件产业发展的现状,大部分设计都是这个层次上的基于应用的架构设计,本文非特殊标明,提到的软件设计师泛指应用软件系统设计师,当然有些也是架构设计师的能力所在。
//*从软件开发历史看,软件设计经历了很多阶段。最早是结构化设计,只是把复杂的问题逐层分解,通过流程图形式将任务标明,提到的软件设计师泛指应用软件系统设逐级细化;后来出现面向对象设计,从底层进行对象封装、继承、多态,这时更多的是考虑代码重用,面向的主要是类和对象。接下来出现组件设计,这主要是面向应用方面。这三种都是面向功能的设计。
从EJB、COBRA技术出现之后,人们开始基于框架进行设计,也就是架构设计。继续发展,就是基于规则的设计了,比如基于模块和工作流的设计,这时主要将客户化做的更详细以及考虑开放性、可扩展性、可靠性、效率方面的问题。*// 软件设计师的工作
随着大型软件开发越来越多,整体把握软件架构变的越来越重要。尤其当用户需求并不明确的情况下,就要开始做软件,如何防止交付的软件产品与用户的要求距离很远,这就需要软件系统设计师进行恰当的设计。
在应用软件开发中,软件设计师担当承上启下的角色也就是把用户的需求,基于应用的问题变成计算机系统中可以解决的问题。设计可以分为功能上的设计和技术体系上的设计,但在实际工作中,这两者很难区分清晰。
软件设计师的要求
做为应用软件开发中最顶层的角色,软件设计师需要各方面的能力更强,除了具备更强的编程技巧能力外,还需要了解系统结构、主流软件技术和软件趋势,同时要具备相当的专业知识。多年编程经验:
既包括在专业领域的经验,也包括在软件工程领域的经验。对于一个构架团队,这些素质要求可由各团队成员分别承担,但其中至少要有一名构架设计师能够把握项目的全局。和任何行业一样,经验是最重要的。软件设计不是纸上谈兵,一个软件设计师首先要是非常好的程序员。软件设计师在编程的时候,用的工具和普通程序员没有任何差别,但使用深度是绝对不一样的。抽象能力:
一个程序员刚写程序的时候,无非就是为了解决某个功能而进行代码编写。随着程序编写越来越多,他对自己所做的应用方面的理解也越来越多。不同的企业有不同的需求,但把这些企业放在一起来看,就会发现他们的一些共性。将这些共性提炼出来,这就是抽象的过程。抽象出来的共性形成的模型可以把这些企业的需求都包含进去,这是做通用软件必须要走的一步。面向对象的思想:
面向对象是软件开发出现以来最伟大的创新之一,这是每个程序员都追求的,但是否真正掌握了面向对象的思想,这是需要探讨的,面向对象并不受开发工具和语言的限制。很多程序员在用C++写面向对象代码时,实际上还是在写C代码。甚至使用C#这种完全面向对象的语言写出来的还是流程化的程序。面向对象可以应用的领域非常广泛。不仅在写代码的过程中要考虑到面向对象,在设计和分析阶段也要用到面向对象的方法。舍得抛弃:
软件设计是一个渐进过程,是通过不断碰壁,不断调整提高的。要想取得突破,就需要舍得抛弃。
很多人舍不得扔掉自己的代码,往往是不断的修改,最后进入一个恶性的循环。当然,这种抛弃也是有继承的抛弃,不同时期产品的架构之间也有连续性,不是一个架构就会完全取代前面的架构,好的东西还是可以继承的,像微软的.NET架构就是从DNA架构上发展来的。领悟和突破:
程序员技术的成长可以通过学习技巧而成长,也可以通过思想领悟而得到成长,后者更为重要。如果不能领悟开发的思想,仅仅掌握了技巧,一旦改换了平台和语言,又要从头学起,所以很多人在转型过程中失败了。而掌握了编程的思想,自动就移过去了。
即便是很小的软件,也可以锻炼突破性的编程思维。一种基本的设计原则和思路就是程序设计千万不要回溯,否则就会崩溃,这是多少人脑袋碰墙多少次之后才明白的。非软件知识:
提起软件设计师,人们很喜欢拿建筑师做比较,的确这两个行业有很多相似之处。古罗马建筑师维特鲁威说“理想的建筑师应该既是文学家又是数学家,他还应通晓历史,热衷于哲学研究,精通音乐,懂得医药知识,具有法学造诣,深谙天文学及天文计算。”软件设计同样如此。
从程序员到测试工程师
软件测试是一门非常重要的学科,目前研究的内容还很不深入。软件测试需要什么样的专业基础还没有定论,而且目前还没有一种很好的标准来衡量测试人员。但无可置疑,软件测试越来越受到软件公司的重视,软件测试工程师的作用也逐渐被人们所认可。这已经在像微软这样的国外大型软件企业中所证实,微软的一个开发人员会对应一至两个测试人员。
2002年4月份,微软公司董事长兼首席软件设计师比尔·盖茨让微软研发部门将所有手头正在进行的工作暂停,彻底检查了每一个微软的软件,将所有存在的漏洞全部修好,所有的开发人员全部成为了测试人员,为的是“可信赖的计算”。
国内软件公司对软件测试的态度令人担忧。软件测试不足,开发测试人员比例不合理。据调查,最好的企业中测试人员和开发人员的比例是1:8,有的是1:20大部分公司甚至没有专职的测试工程师。
重视测试首先需要有开放性的软件文化,而在很多公司中,测试工程师只是绝对服从的听命角色,没有发挥他们的积极性和创造性。一些管理人员对软件开发的流程管理经验不足,仍然用传统企业的方法进行管理,再加上对软件质量的控制理解不对,认为让程序员编完程序后经过简单的功能测试就可以发布了,而没有认识到软件测试是控制质量最好的方法。不过,国内还是有一些大型公司和专业公司已经在软件测试方面走上正规IBM软件测试项目,已经成为公司主体软件外包业务之一。
一提到软件测试工程师,很多人会想到那些反复使用软件,试图在频繁操作中寻找到错误发生的低层次人员或者软件用户。其实这是一种错误的概念,软件测试早已超越了用户使用来发现Bug的基本测试阶段。
现在软件测试工程师普遍分为三种:测试执行者(BasicSoftware Tester)、测试工具软件开发工程师(SoftwareDevelopment Engineer in Test)和高级软件测试工程师(Ad_hoc Tester)。
测试执行者负责理解产品的功能要求,然后根据测试规范和测试案例对其进行测试,检查软件有没有错误,决定软件是否具有稳定性,属于最低级的执行角色。测试工具软件开发工程师负责写测试工具代码,并利用测试工具对软件进行测试;或者开发测试工具为软件测试工程师服务。产品开发后的性能测试、提交测试等过程,都有可能要用到开发的测试工具。对技术要求最强的是这些人因为他们要具备写程序的技术。“不同产品的特性不一样,对测试工具要求也是不同的,就像Windows的测试工具不能用于office,office的测试工具也不能用于SQLserver现在很多测试工程师就是负责专门为某个产品写测试程序的。”
软件测试工程师的素质:
因为软件测试仍然处在发展阶段,还没有上升到理论层次。对人员的评测,包括微软在内,都还没有一个统一标准,因此评定软件测试工程师只能根据工作实践进行自然淘汰了。
软件测试对逻辑思维、学习能力、反应要求很高,是否有严密的思维和逆向思维也非常重要。
做测试还要考虑到所有出错的可能性,做一些不按常规、非常奇怪的事。除了漏洞检测,测试还应该考虑性能问题,也就是要保证软件运行得很好,没有内存泄漏,不会出现运行越来越慢的情况;在不同的使用环境下,考虑软件的兼容性同样重要。软件测试同产品的规模也有很大的关系,因为软件的bug往往出在大型软件的连接处。
做软件测试工程师需要对软件抱有怀疑态度。这是因为开发人员喜欢想当然,总是找一些有利于自己程序执行的数据,有些开发人员甚至认为不利于程序执行的数据是对代码的玷污和亵渎。而软件测试却要策略性的准备各种数据,从每个细节上设计不同的应用场景,不去想当然的假定任何一个数据是可行的。
在职业素质和交际方面方面,并不是测试工程师爱挑别人毛病才好,反而这个工作要求很强的沟通能力。要经常和开发人员进行沟通,说话办事要很得当,不能指责别人,否则会事倍功半。软件测试工程师在工作中,对人和对事是完全不同的两个问题。
测试设计中需要考虑的22种测试类型:
1.黑盒测试:
不基于内部设计和代码的任何知识,而是基于需求和功能性。2.白盒测试:
基于一个应用代码的内部逻辑知识,测试是基于覆盖全部代码、分支、路径、条件。3.单元测试:
最微小规模的测试;以测试某个功能或代码块典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。4.累积综合测试:
当一个新功能增加后,对应用系统所做的连续测试。它要求应用系统的不同形态的功能能够足够独立以便在全部系统完成前能分别工作,这种测试可由程序员或测试员来做。5.集成测试:
一个应用系统的各个部件的联合测试,以决定他们能否在一起共同工作。部件可以是代码块、独立的应用、网络上的客户端或服务器端程序。这种类型的测试主要与客户服务器和分布式系统有关。6.功能测试:
用于测试应用系统的功能需求的黑盒测试方法。7.系统测试:
基于系统整体需求说明书的黑盒类测试;应覆盖系统所有联合的部件。8.端到端测试:
类似于系统测试;测试级的“宏大”的端点;涉及整个应用系统环境在一个现实世界使用时的模拟情形的所有测试。例如与数据库对话,用网络通讯,或与外部硬件、应用系统或适当的系统对话。9.健全测试:
典型的是指一个初始化的测试工作,以决定一个新的软件版本测试是否足以执行下一步的测试。10.衰竭测试:
软件或环境的修复或更正后的“再测试”。可能很难确定需要多少遍再次测试。尤其在接近开发周期结束时。自动测试工具对这类测试尤其有用。11.接受测试:
基于客户或最终用户的规格书的最终测试,或基于用户一段时间的使用后,看软件是否满足客户要求。12.负载测试:
测试一个应用在重负荷下的表现,例如测试一个 Web站点在大量的负荷下,何时系统的响应会退化或失败。13.强迫测试:
在交替进行负荷和性能测试时常用的术语。也用于描述象在异乎寻常的重载下的系统功能测试之类的测试,如某个动作或输入大量的重复,大量数据的输入,对一个数据库系统大量的复杂查询等。14.性能测试:
在交替进行负荷和强迫测试时常用的术语。“性能测试”(和其他类型的测试)应在需求文档或质量保证、测试计划中定义。15.可用性测试:
对“用户友好性”的测试。显然这是主观的,且将取决于目标最终用户或客户。用户面谈、调查用户对话的录象和其他一些技术都可使用。程序员和测试员通常都不宜作可用性测试员。16.安装/卸载测试:
对软件的全部、部分或升级安装/卸载处理过程的测试。17.恢复测试:
测试一个系统从如下灾难中能否很好地恢复如遇到系统崩溃、硬件损坏或其他灾难性问题。18.安全测试:
测试系统在防止非授权的内部或外部用户的访问或故意破坏等情况时怎么样。这可能需要复杂的测试技术。19.兼容测试:
测试软件在一个特定的硬件/软件/操作系统/网络等环境下的性能如何。20.比较测试:
与竞争伙伴的产品的比较测试,如软件的弱点、优点或实力。21.Alpha测试:
在系统开发接近完成时对应用系统的测试测试后,仍然会有少量的设计变更。这种测试一般由最终用户或其他人员员完成不能由程序员或测试员完成。22.Beta 测试:
当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其他人员完成不能由程序员或测试员完成。
如何成为优秀的软件人才
专业知识技能
软件人员的专业知识技能 大学的计算机专业知识技能 软件工程知识与实践 项目管理知识与实践 企业研发管理
本科学历是必需的,硕士学历是受欢迎的,博士学历是可有可无的
IT人才要珍惜青春,切勿沉沦于纸上谈兵、自欺欺人的“学问” 打好专业基础最重要,做学生不要急功近利。学习时“扬长补短”,工作时“扬长避短”。至关重要的综合才能
表达能力:说和写
业界通病:软件人员的表达能力远远低于其开发能力(例如不会写文档)
错误的思想根源:认为表达能力是可有可无的,技术才能才是最重要的
大学教育失误:培养优秀的工程师而不是领导人。无论那个领域的风云人物,都是“能说会写”之人
如果一个人不在乎自己的文才与口才,实际上他已经选择了平庸之路。
不要怨“英雄无用武之地”,因为别人不知道你能成为英雄!如果你想干一番事业,必须练好你的文才和口才。管理能力
管理能力决定你的“仕途”!误区:没有机会锻炼管理能力
不同行业有不同的管理方法。先从软件项目管理入手(麻雀虽小五脏具全)。
搞技术要用脑子,搞管理要用心。
职业道德和工作态度
职业道德
上班时间不干与工作无关的事情 不损害集体利益 不干危害社会的事情 工作态度
认真负责 服务意识
如何高效率地工作
观念
在有生之时,为个人、家庭、集体、国家多做贡献 但是不要天天辛苦的工作,辛苦地生活。应该愉快地工作,愉快地生活。上班族的经验
合理安排一天的时间:上午,中午,下午,晚上
减少路上花费的时间:时间比钱更值钱,前者浪费了无法追回!正确地开会:明确会议目的,限定人员与时间,不要把上班时间切割得很零碎
处理电子邮件:不要即时响应电子邮件,早中晚三次收发邮件就够了。
随时记录问题与灵感:因为我们大部分人不是天才,靠日积月累才能产生成果!总结
通过这次认识实习,我了解了一些关于软件工程的职业以及怎样做好它们,使我明确了以后的发展方向。
第四篇:软件工程认识实习报告
信息科学与技术学院15软件工程1班
姓 名学 号电 话
认 知 实习心 得 体 会
20151008322 ***
:李甜雅 : :正文:
这个周三是一个特殊的日子,我们软件工程1班终于迎来了期待已久的属于我们的第一次认知实习!虽然路途遥远,但是我们依然热情高涨。通过对红友公司的参观,感觉收获颇丰,也对我们的专业和未来将要从事的工作有了更深刻的认识。因而,对专业的认识特列出以下几点:
一、什么是“软件工程”?
IEEE计算机学会将“软件工程”定义为:
(1)应用系统化的、学科化的、定量的方法,来开发、运行和维护软件,即,将工程应用到软件。
(2)对(1)中各种方法的研究”。
二、软件产业发展趋势分析
未来软件产业发展的趋势可以归纳为“五化”,分别是网络化、服务化、智能化、平台化、融合化。
三、软件工程职业的乐趣 首先是一种创建事物的纯粹快乐;
其次,快乐来自于开发对其他人有用的东西;
第三是整个过程体现出魔术般的力量——将相互啮合的零部件组装在一起,看到它们精妙地运行,得到预先所希望的结果;
第四是学习的乐趣,来自于这项工作的非重复特性; 最后,乐趣还来自于工作在如此易于驾驭的介质上
四、软件工程职业的苦恼 首先,必须追求完美;
其次,是由他人来设定目标,供给资源,提供信息; 概念性设计是有趣的,但寻找琐碎的 bug 却只是一项重复性的活动;
最后一个苦恼,有时也是一种无奈——当投入了大量辛苦的劳动,产品在即将完成或者终于完成的时候,却已显得陈旧过时;
五、软件工程职业发展路线
六、如何成为优秀的软件人才 1.专业知识技能
软件人员的专业知识技能 大学的计算机专业知识技能 软件工程知识与实践 项目管理知识与实践 企业研发管理
本科学历是必需的,硕士学历是受欢迎的,博士学历是可有可无的
IT人才要珍惜青春,切勿沉沦于纸上谈兵、自欺欺人的“学问”
打好专业基础最重要,做学生不要急功近利。学习时“扬长补短”,工作时“扬长避短”。
2.至关重要的综合才能
表达能力:说和写
业界通病:软件人员的表达能力远远低于其开发能力(例如不会写文档)
错误的思想根源:认为表达能力是可有可无的,技术才能才是最重要的
大学教育失误:培养优秀的工程师而不是领导人。无论那个领域的风云人物,都是“能说会写”之人 如果一个人不在乎自己的文才与口才,实际上他已经选择了平庸之路。
不要怨“英雄无用武之地”,因为别人不知道你能成为英雄!如果你想干一番事业,必须练好你的文才和口才。
管理能力
管理能力决定你的“仕途”!误区:没有机会锻炼管理能力
不同行业有不同的管理方法。先从软件项目管理入手(麻雀虽小五脏具全)。搞技术要用脑子,搞管理要用心。3.职业道德和工作态度 职业道德
上班时间不干与工作无关的事情 不损害集体利益 不干危害社会的事情 工作态度 认真负责 服务意识
4.如何高效率地工作 观念
在有生之时,为个人、家庭、集体、国家多做贡献 但是不要天天辛苦的工作,辛苦地生活。应该愉快地工作,愉快地生活。
上班族的经验
合理安排一天的时间:上午,中午,下午,晚上
减少路上花费的时间:时间比钱更值钱,前者浪费了无法追回!
正确地开会:明确会议目的,限定人员与时间,不要把上班时间切割得很零碎
处理电子邮件:不要即时响应电子邮件,早中晚三次收发邮件就够了。随时记录问题与灵感:因为我们大部分人不是天才,靠日积月累才能产生成果!总结
通过这次认识实习,我了解了一些关于软件工程的职业以及怎样做好它们,使我明确了以后的发展方向,我将朝着自己的梦想更加坚定的前进。
第五篇:软件工程专业认识实习报告
软件工程专业认识实习报告
姓名学号专业分院
【摘要】
在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。因此网站建设在Internet应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。计算机专业虽然是一个热门专业但是同时存在着竞争力激烈,需要我们计算机业的同学们随是跟上时代的步伐。现在我们大学生存在的问题亟待改正。
【正文】
通过一个假期的的学习实践中和老师的指导下以大量明晰的操作步骤和典型的应用实例,教会我们。使更丰富全面的软件技术和应用技巧,使我们真正对所学的软件融会贯通,熟练在手。
我所实习的部门是在计算机机房。主要从事电厂电脑维修服务工作。虽然我学的是软件工程专业,但在电脑维修服务方面的知识少之又少,所以一切都要从零学起。刚开始实习时,办公室的同事给了我一些有关部门运营和计算机维护的公司的规章制度,让我对公司运营情况和计算机维护--特别是系统维护有了一定的认识,真正体会到了一个国家性企业单位对人事的重视,理解了我计算机机房的电脑维护工作虽然是企业部门运营的一个小侧面,但关系到企业在广大市民心目中的形象,我们中有经验的大哥哥大姐姐还给我仔细讲解了计算机维护的每一款注意事项,经常领着我去进行顾客回访、产品市场调查;后来,又让我参与了一些具体的工作,比如约定顾客、维修单开立、对外宣传以及。在部门领导及全体同事的帮助指导下,经过这么多天的学习、工作,我已熟悉整个电脑维护服务的流程,可以独立、熟练地比较准确地报出各种电脑故障问题。
唐山开滦东方发电有限责任公司多年来坚持以“科技求发展,以质量求生存”为方针目标,以“服务只有起点,满意没有终点”原则,以“诚实、守信”作为与客户合作恪守的商业道德标准,以“开拓,高效,求实,创新”为企业精神,不断推进企业的创新,以强大的技术和实力服务客户,全力以赴追求卓越经营方针:以市场为先导 以研发为动力 以产品为支点 以管理出效益。人才是公司发展的坚实后盾,在创业的砺炼中,高达培养了一批具有诚信、严谨和创新的高科技技术人才和高素质的时常队伍。企业的合资,使公司具有大批量生产能力,实现科研、开发、生产、销售高度一体化的全面提升,使公司具有长久的市场竞争力和蓬勃的生命力。
在实习期间,我深切地感受到计算机机房是一个团结、上进、充满活力的集体。每天大家都是笑脸相迎,即使面临很大的工作压力,办公室里仍然会听到笑声;面对客户,大家总是热情真诚;面对工作上的困难,大家总是互相帮助,直至解决难题。整个部门和睦相处,就像一个温馨的大家庭。而部门领导就是这个家庭中的家长,给每个人很大的空间自由发挥。从他们身上,我真正体会到了“敬人、敬业、高效、高水平服务”的真实意义,体会到了服务部“服务、奉献”的意义,体会到了“创造完美、服务社会”的服务理念,知道了什么是“创新就是生活”。特别令我感动的是,每当我遇到困难向大家求助时,谁都会无私的告诉我;有一次,一个技术人员曾对我这样说:有个顾客说他的计算机经常出现无故的黑屏、死机的故障,当他们到那儿的时候,无论是谁都没能查出来到底是出了什么毛病或哪儿有毛病。他们把主机带回来后我建议说看看是不是顾客自己对计算机进行CPU超频了,大家并没有因为我是客服而不考虑我的意见,结果查明确实是这么回事,然后他们挑回了CPU的主频,并对顾客进行了自己绝对不要随便超频计算机的教育;后来大家在当天的下班总结时当场对我进行了表扬。我真是太高兴了。我对能到这样的公司实习感到骄傲,感到自豪。我很庆幸自己能在这样有限的时间里,在这么和谐的气氛中工作、学习,和同事们一起分享快乐,分担工
作。所以我努力向同事学习,不懂就问,认真完成领导和同事交给我的每一项工作。部门领导和同事也都尽力帮助我,给我讲授和维修电脑有关的知识.刚开始的时候有点手忙脚乱,不是这边搞错就是那边忘了,都是同事帮我纠正。由于后来心态的调整和熟练了,慢慢地学得差不多了,过了两个星期左右,由于原来只有我的同事一个人上白班忙不过来,就把我和她安排在一起(本来我们是两班倒的),从晚上八点到第二天八点,中间有停下来吃夜宵,哦不叫夜宵叫午饭了,这里可是小时全天工作的哦!刚开始真有点受不了,把我的生物钟都给搞乱了,我是白天睡觉晚上工作黑白颠倒了,真累啊!没办法,只能撑着。独自呆在一个房间里,有工作就安排给技术员,没有就闲着,忙的时候一直忙,大部分时间都闲着。没事就对着天花板发呆或者看着手表倒计时,好无聊啊!真留恋学校生活啊!自由啊!
来这个公司虽然才短短一个月,收获挺多的,由对一窍不通到现在对它的原理和生产流程都有所了解,也让我深深体会到了客服的重要性,虽然这是一些简简单的基本操作,但是只要我们的记录不正确和安排的疏忽都会影响到公司的声誉和给客户造成不利影响。所以我们每一步都有要集中注意力,争取把每一步都做好。
目前我们依然存在着不少问题。
一、主动性严重不足:大部分同学还没有认识到目前形式的严峻,还处于“走一步算一步”的思想意识支配下,“拿来主义”的思想很严重。活着意识到了自己的困境,但却没有去尝试改变现状,也是处在得过且过的状态。都等着老师知道,有老师相中自己,缺乏自主思考的能力。
二、把握机遇的能力不强:且不谈主动创造机会的能力如何,把握机会能力就应该是在竞争中获胜的基本本领。从过去的各项活动中可以看出,我们专业的学生把握机遇的能力不够突出,不懂得抓住机会i,利用机会。
三、实践能力偏弱:专业同学往往都注重了理论知识,而忽略了动手实践能力,虽然在成绩上个可都能达到八九十分以上,处于专业前茅,但当需要进行一定的动手实践时,却显得有些手足无措。对于希望从事硬件开发的同学来说,这种情况绝对要不得。
通过这次实习,我学到了很多,看到了很多,听到了很多。从对IT、信息类毕业生就业形势的分析来看,目前,对于我们软件工程专业的学生仍然面临着非常严峻的考验。我们同学们处于一种动手能力差、实践经验不足的情况,特别是各招聘信息上列出来的要求,只能勉强适应其中的一、两条,有些同学基本上很难找到自己觉得能被看重的岗位,更谈不上熟练、精通这样的要求。另外,我们面临的最大劣势是实践能力差,没有相关的研发经验,对工程项目构筑没有概念。可能一个专业中目前有接触过工程项目的同学犹如凤毛麟角,对于整个项目的开发流程机会就是一片空白。
还有许多关于IT行业的言论,媒体频频爆出的各类关于IT行业者身心受到莫大伤害的大小新闻,IT从行者工作很苦很累,繁琐枯燥的程序、技术心理与现实状态的脱节、没有空闲时间,不能陪亲人朋友,工作的性质是生活多了一些单调,生活仿佛学生时代一般的两点一线,远没有想象中的那样绚丽多彩。任何一个行业都有着各自的光线和灰暗,只是行外人的人不了解。对于刚刚迈进校园的我们,对于已经迈入社会的学长学姐们,对于不同岗位上的每一位前辈,举步从来都是维艰的,辉煌的铸就更是循序渐进,我们不可以只看到行业光鲜亮丽的外表,而忽视背后拖起它成长的艰难。
一年来我们对于课程的学习,厌倦过,焦虑过,但既然当初选择了它,我们就没有退路。可以说软件工程这个专业是一个很有前景的学科,是不是随意轻视任何一门课程。干一行、爱一行,既然选择了它,就要对它有始有终。也许现在我们的未来还是一个未知数,但我们有目标有理想,我们不可能一帆风顺的到达彼岸,所以脚踏实地才是最根本的原则。