软件工程认识实习报告_第1页
软件工程认识实习报告_第2页
软件工程认识实习报告_第3页
软件工程认识实习报告_第4页
软件工程认识实习报告_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国软件产业发展现实状况概况年,我国软件业实现新突破,产业增速稳步回升,业务结构调整加紧,企业发展和区域布局出现新特点,在国民经济中地位不停提升。年,实现软件业务收入13364亿元,产业规模比扩大十几倍,年均增加38%,占电子信息产业比重由年6%上升到18%。在全球软件与信息服务业中,所占份额由不足5%,上升到超出15%。软件业从业人数由年不足30万人提升到超出200万人。年,信息技术咨询服务和信息技术增值服务收入分别为1233和2178亿元,同比增加37.2%和44.6%。软件产品收入4208亿元,同比增加28.6%;嵌入式系统软件受通信类产品增加放缓影响,完成收入2242亿元,同比增加15.1%。受集成电路行业复苏和软件外包市场增加带动,设计开发实现收入593亿元,同比增加73.1%;系统集成和支持服务实现收入2910亿元,同比增加31.8%。全国计算机软件著作权登记量突破了8万件。软件产业发展聚集趋势从过去主要集中在京粤地域转向沿海地域。年,江苏、辽宁、福建、山东四省软件收入增加超出35%,占全国比重共计达35%,逐步打破过去京粤两地占全国二分之一以上集中局面(两地占比下降为35.5%)。中心城市成为软件产业发展主要聚集地,年全国4个直辖市和15个副省级城市软件收入10643亿元,占全国比重为80%。在中西部地,成都、西安、重庆三个城市占西部地域90%,武汉、长沙二个城市占中部地域30%以上。软件产业面临形势从国际上看,全球软件产业格局充分洗牌,为后发国家实现追赶和跨越带来更大机遇,软件技术和产业格局正在孕育新一轮重大调整,首先跨国企业原有技术垄断受到了挑战,对后发国家技术锁定效应大大降低,所谓技术锁定就是垄断,技术封锁效应。另首先是云计算为代表模式创新对产业发展影响日益突出,在这种背景下,软件技术创新速度将显著加紧,服务新业态新模式将不停涌现。从国内看,推进两化深度融合和培育战略性新兴产业给软件产业带来巨大发展空间,我国作为后发国家,拥有大国优势,有庞大潜在消费市场。商务部统计,我国消费是每年15%速度在增加,其中有很大一部分是电子消费,满足不一样层次和年纪需要,推进两化深度融合,培育发展战略性新兴产业为我国新一轮信息技术发展提供了宽广创新和应用空间,从云计算、物联网新兴业态发展情况来看,我国和美国有一段距离,不过国际上物联网是这两年刚才有新概念,我们以为和日本韩国相比处于同一个起跑线上。软件产业发展趋势分析未来软件产业发展趋势能够归纳为“五化”,分别是网络化、服务化、智能化、平台化、融合化。网络化将成为信息技术发展一个基本方向,互联网已经成为了软件开公布署和运行一个平台,推进了整个产业全方面转型,三代网、物联网和移动互联网云计算都是软件网络化趋势详细表现。服务化是网络转型本质和特点,软件开发技术和应用模式正在向以用户为中心转变,云计算是软件服务化模式,能够按照用户需要,动态来提供计算、存放、应用等各类资源,具备可动态伸缩性,使用成本比较低,可管理性好,节约能耗,安全便捷等优点,在服务化大趋势下,向用户提供软件服务体验,未来成为竞争主要原因。智能化是软件技术发展永恒主题,软件能够从复杂多样海量数据当中,自动高效提取所需要知识、信息进行加工处理,软件开发语言愈加高级化,开发工具也愈加集成化。平台化是软件技术和产品发展新引擎,操作系统、数据库、中间件和应用软件相互渗透,向一体化软件平台进行演变,平台化趋势下,软件竞争从单一产品竞争发展为平台间竞争,未来软件产业将围绕主流软件平台结构整个软件产业链。融合化是软件技术和产业发展新空间,软硬结合,软件与网络结合,产品与业务融合,软件产业与其余产业之间相互渗透、相互融合不停深化,融合化趋势创造了巨大市场需求。什么是“软件工程”?IEEE计算机学会将“软件工程”定义为:“(1)应用系统化、学科化、定量方法,来开发、运行和维护软件,即,将工程应用到软件。(2)对(1)中各种方法研究”。(参见:IEEEStandardGlossaryofSoftwareEngineeringTerminology。IEEE,Piscataway,NJstd610.12-1990,1990)软件工程知识域软件需求SoftwareRequirements软件设计 SoftwareDesign软件结构SoftwareConstruction软件测试SoftwareTesting软件维护SoftwareMaintenance软件配置管理 SoftwareConfigurationManagement软件工程管理 SoftwareEngineeringManagement软件工程过程 SoftwareEngineeringProcess软件工程工具和方法 SoftwareEngineeringToolsandMethods软件质量 SoftwareQuality软件工程职业乐趣首先是一个创建事物纯粹愉快;其次,愉快来自于开发对其余人有用东西;第三是整个过程表现出魔术般力量——将相互啮合零部件组装在一起,看到它们精妙地运行,得到预先所希望结果;第四是学习乐趣,来自于这项工作非重复特征;最终,乐趣还来自于工作在如此易于驾驭介质上软件工程职业苦恼首先,必须追求完美;其次,是由他人来设定目标,供给资源,提供信息;概念性设计是有趣,但寻找琐碎bug却只是一项重复性活动;最终一个苦恼,有时也是一个无奈——当投入了大量辛劳劳动,产品在即将完成或者终于完成时候,却已显得陈旧过时;软件工程职业发展路线从程序员到软件设计师软件技术发展到今天,分工越来越细。程序员作为一个通用称谓已经无法确切定义各种工作性质和特点。因为软件开发中各种职责区分不清,不论是刚才写代码新手还是具备多年经验老手,一概被扣上程序员通用名称,这也使得很多进入这个领域软件开发人员无法制订自己未来职业发展之路。实际上,软件企业也认识到了对程序员分类主要性开始将各种职位定义得愈加准确。对于从事软件开发程序员来说,更需要尽快明确自己发展方向,并在此方向上将专业知识积累得更深厚,这才能尽快摆脱对未来发展方向迷茫。从程序员技术方向发展来看,软件设计师无疑是职业生涯顶峰。拿破仑说过“不想当元帅士兵不是好士兵”,借用这句话,不想当软件设计师程序员也不是好程序员。不过首先要了解什么是软件设计师,怎样才能成为软件设计师。明了这些,才有可能向软件设计师发展,创造更辉煌程序人生。软件设计师定义软件设计师包含软件系统设计师(SystemDesigner)和软件架构设计师(Architect)。系统设计师应对“系统结构”所使用软件技术非常了解,本身具备良好编程技巧,才能成为优异系统设计师。系统设计师职责是把结构模型对应到实现模型上,从概念到实现期间规划和组合模型优劣是决定软件系统设计师好坏标准。软件架构设计师是程序员技术方向最终究属,也是成长链中最神圣一环,架构设计师贡献最大。架构设计师彻底摆脱了语言束缚,知道软件发展趋势。他们会开发新一代产品或者制订新一代产品方案。软件架构设计是面向未来。全球大规模软件企业并不多,很主要一个原因是软件产品发展都滞后于市场需求,即有需求后再研发产品,而不是预见需求,预先设计,所以往往软件设计局部是合理,但从整体角度看却不合理。要处理这些问题就要看能力了。软件设计三个层次软件设计能够分三个层次。第一层属于标准层,像J2EE、.NET框架设计;第二种属于系统层设计,比如Delphi这么开发工具就是工具系统级设计;而应用最广泛是第三层:应用软件设计。基于中国软件产业发展现实状况,大部分设计都是这个层次上基于应用架构设计,本文非特殊标明,提到软件设计师泛指应用软件系统设计师,当然有些也是架构设计师能力所在。//*从软件开发历史看,软件设计经历了很多阶段。最早是结构化设计,只是把复杂问题逐层分解,经过流程图形式将任务标明,提到软件设计师泛指应用软件系统设逐层细化;日后出现面向对象设计,从底层进行对象封装、继承、多态,这时更多是考虑代码重用,面向主要是类和对象。接下来出现组件设计,这主要是面向应用方面。这三种都是面向功效设计。从EJB、COBRA技术出现之后,人们开始基于框架进行设计,也就是架构设计。继续发展,就是基于规则设计了,比如基于模块和工作流设计,这时主要将客户化做更详细以及考虑开放性、可扩展性、可靠性、效率方面问题。*//软件设计师工作伴随大型软件开发越来越多,整体把握软件架构变越来越主要。尤其当用户需求并不明确情况下,就要开始做软件,怎样预防交付软件产品与用户要求距离很远,这就需要软件系统设计师进行恰当设计。在应用软件开发中,软件设计师担当承上启下角色也就是把用户需求,基于应用问题变成计算机系统中能够处理问题。设计能够分为功效上设计和技术体系上设计,但在实际工作中,这二者极难区分清楚。软件设计师要求做为应用软件开发中最顶层角色,软件设计师需要各方面能力更强,除了具备更强编程技巧能力外,还需要了解系统结构、主流软件技术和软件趋势,同时要具备相当专业知识。多年编程经验:既包含在专业领域经验,也包含在软件工程领域经验。对于一个构架团体,这些素质要求可由各团体组员分别负担,但其中最少要有一名构架设计师能够把握项目标全局。和任何行业一样,经验是最主要。软件设计不是纸上谈兵,一个软件设计师首先要是非常好程序员。软件设计师在编程时候,用工具和普通程序员没有任何差异,但使用深度是绝对不一样。抽象能力:一个程序员刚写程序时候,无非就是为了处理某个功效而进行代码编写。伴随程序编写越来越多,他对自己所做应用方面了解也越来越多。不一样企业有不一样需求,但把这些企业放在一起来看,就会发觉他们一些共性。将这些共性提炼出来,这就是抽象过程。抽象出来共性形成模型能够把这些企业需求都包含进去,这是做通用软件必须要走一步。面向对象思想:面向对象是软件开发出现以来最伟大创新之一,这是每个程序员都追求,不过否真正掌握了面向对象思想,这是需要探讨,面向对象并不受开发工具和语言限制。很多程序员在用C++写面向对象代码时,实际上还是在写C代码。甚至使用C#这种完全方面向对象语言写出来还是流程化程序。面向对象能够应用领域非常广泛。不但在写代码过程中要考虑到面向对象,在设计和分析阶段也要用到面向对象方法。舍得抛弃:软件设计是一个渐进过程,是经过不停碰壁,不停调整提升。要想取得突破,就需要舍得抛弃。很多人舍不得扔掉自己代码,往往是不停修改,最终进入一个恶性循环。当然,这种抛弃也是有继承抛弃,不一样时期产品架构之间也有连续性,不是一个架构就会完全取代前面架构,好东西还是能够继承,像微软.NET架构就是从DNA架构上发展来。领悟和突破:程序员技术成长能够经过学习技巧而成长,也能够经过思想领悟而得到成长,后者更为主要。假如不能领悟开发思想,仅仅掌握了技巧,一旦改换了平台和语言,又要从头学起,所以很多人在转型过程中失败了。而掌握了编程思想,自动就移过去了。即便是很小软件,也能够锻炼突破性编程思维。一个基本设计标准和思绪就是程序设计千万不要回溯,不然就会瓦解,这是多少人脑袋碰墙多少次之后才明白。非软件知识:提起软件设计师,人们很喜欢拿建筑师做比较,确实这两个行业有很多相同之处。古罗马建筑师维特鲁威说“理想建筑师应该既是文学家又是数学家,他还应通晓历史,热衷于哲学研究,精通音乐,知道医药知识,具备法学造诣,深谙天文学及天文计算。”软件设计一样如此。从程序员到测试工程师软件测试是一门非常主要学科,现在研究内容还很不深入。软件测试需要什么样专业基础还没有定论,而且现在还没有一个很好标准来衡量测试人员。但无可置疑,软件测试越来越受到软件企业重视,软件测试工程师作用也逐步被人们所认可。这已经在像微软这么国外大型软件企业中所证实,微软一个开发人员会对应一至两个测试人员。4月份,微软企业董事长兼首席软件设计师比尔·盖茨让微软研发部门将全部手头正在进行工作暂停,彻底检验了每一个微软软件,将全部存在漏洞全部修好,全部开发人员全部成为了测试人员,为是“可信赖计算”。国内软件企业对软件测试态度令人担忧。软件测试不足,开发测试人员百分比不合理。据调查,最好企业中测试人员和开发人员百分比是1:8,有是1:20大部分企业甚至没有专职测试工程师。重视测试首先需要有开放性软件文化,而在很多企业中,测试工程师只是绝对服从听命角色,没有发挥他们主动性和创造性。一些管理人员对软件开发流程管理经验不足,依然用传统企业方法进行管理,再加上对软件质量控制了解不对,认为让程序员编完程序后经过简单功效测试就能够公布了,而没有认识到软件测试是控制质量最好方法。不过,国内还是有一些大型企业和专业企业已经在软件测试方面走上正规IBM软件测试项目,已经成为企业主体软件外包业务之一。一提到软件测试工程师,很多人会想到那些重复使用软件,试图在频繁操作中寻找到错误发生低层次人员或者软件用户。其实这是一个错误概念,软件测试早已超越了用户使用来发觉Bug基本测试阶段。现在软件测试工程师普遍分为三种:测试执行者(BasicSoftwareTester)、测试工具软件开发工程师(SoftwareDevelopmentEngineerinTest)和高级软件测试工程师(Ad_hocTester)。测试执行者负责了解产品功效要求,然后依照测试规范和测试案例对其进行测试,检验软件有没有错误,决定软件是否具备稳定性,属于最低级执行角色。测试工具软件开发工程师负责写测试工具代码,并利用测试工具对软件进行测试;或者开发测试工具为软件测试工程师服务。产品开发后性能测试、提交测试等过程,都有可能要用到开发测试工具。对技术要求最强是这些人因为他们要具备写程序技术。“不一样产品特征不一样,对测试工具要求也是不一样,就像Windows测试工具不能用于office,office测试工具也不能用于SQLserver现在很多测试工程师就是负责专门为某个产品写测试程序。”软件测试工程师素质:因为软件测试依然处于发展阶段,还没有上升到理论层次。对人员评测,包含微软在内,都还没有一个统一标准,所以评定软件测试工程师只能依照工作实践进行自然淘汰了。软件测试对逻辑思维、学习能力、反应要求很高,是否有严密思维和逆向思维也非常主要。做测试还要考虑到全部犯错可能性,做一些不按常规、非常奇怪事。除了漏洞检测,测试还应该考虑性能问题,也就是要确保软件运行得很好,没有内存泄漏,不会出现运行越来越慢情况;在不一样使用环境下,考虑软件兼容性一样主要。软件测试同产品规模也有很大关系,因为软件bug往往出在大型软件连接处。做软件测试工程师需要对软件抱有怀疑态度。这是因为开发人员喜欢想当然,总是找一些有利于自己程序执行数据,有些开发人员甚至认为不利于程序执行数据是对代码玷污和亵渎。而软件测试却要策略性准备各种数据,从每个细节上设计不一样应用场景,不去想当然假定任何一个数据是可行。在职业素质和交际方面方面,并不是测试工程师爱挑他人毛病才好,反而这个工作要求很强沟通能力。要经常和开发人员进行沟通,说话办事要很得当,不能指责他人,不然会事倍功半。软件测试工程师在工作中,对人和对事是完全不一样两个问题。测试设计中需要考虑22种测试类型:黑盒测试:不基于内部设计和代码任何知识,而是基于需求和功效性。2.白盒测试:基于一个应用代码内部逻辑知识,测试是基于覆盖全部代码、分支、路径、条件。3.单元测试:最微小规模测试;以测试某个功效或代码块经典地由程序员而非测试员来做,因为它需要知道内部程序设计和编码细节知识。4.累积综合测试:当一个新功效增加后,对应用系统所做连续测试。它要求应用系统不一样形态功效能够足够独立方便在全部系统完成前能分别工作,这种测试可由程序员或测试员来做。5.集成测试:一个应用系统各个部件联合测试,以决定他们能否在一起共同工作。部件能够是代码块、独立应用、网络上客户端或服务器端程序。这种类型测试主要与客户服务器和分布式系统关于。6.功效测试:用于测试应用系统功效需求黑盒测试方法。7.系统测试:基于系统整体需求说明书黑盒类测试;应覆盖系统全部联合部件。8.端到端测试:类似于系统测试;测试级“宏大”端点;包括整个应用系统环境在一个现实世界使用时模拟情形全部测试。比如与数据库对话,用网络通讯,或与外部硬件、应用系统或适当系统对话。9.健全测试:经典是指一个初始化测试工作,以决定一个新软件版本测试是否足以执行下一步测试。10.衰竭测试:软件或环境修复或更正后“再测试”。可能极难确定需要多少遍再次测试。尤其在靠近开发周期结束时。自动测试工具对这类测试尤其有用。11.接收测试:基于客户或最终用户规格书最终测试,或基于用户一段时间使用后,看软件是否满足客户要求。12.负载测试:测试一个应用在重负荷下表现,比如测试一个Web站点在大量负荷下,何时系统响应会退化或失败。13.强迫测试:在交替进行负荷和性能测试时惯用术语。也用于描述象在异乎寻常重载下系统功效测试之类测试,如某个动作或输入大量重复,大量数据输入,对一个数据库系统大量复杂查询等。14.性能测试:在交替进行负荷和强迫测试时惯用术语。“性能测试”(和其余类型测试)应在需求文档或质量确保、测试计划中定义。15.可用性测试:对“用户友好性”测试。显然这是主观,且将取决于目标最终用户或客户。用户面谈、调查用户对话录象和其余一些技术都可使用。程序员和测试员通常都不宜作可用性测试员。16.安装/卸载测试:对软件全部、部分或升级安装/卸载处理过程测试。17.恢复测试:测试一个系统从以下灾难中能否很好地恢复如碰到系统瓦解、硬件损坏或其余灾难性问题。18.安全测试:测试系统在预防非授权内部或外部用户访问或有意破坏等情况时怎么样。这可能需要复杂测试技术。19.兼容测试:测试软件在一个特定硬件/软件/操作系统/网络等环境下性能怎样。20.比较测试:与竞争搭档产品比较测试,如软件弱点、优点或实力。21.Alpha测试:在系统开发靠近完成时对应用系统测试测试后,依然会有少许设计变更。这种测试通常由最终用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论