A. 软件工程的现状
论文摘要:软件是一种特殊的产品,随着其规模和复杂性的提高、使用范围的扩大,需要从技术和管理两方面对软件的开发过程进行控制。从软件工程这门学科和技术出现的背景出发,回顾了软件工程在近40年来理论、方法和实践中的成果。最后结合Internet技术和平台的挑战,初步讨论了软件工程需要面对的新挑战。
论文关键词:软件危机;构件;体系结构;软件项目管理;中间件
1软件工程的出现
1.1软件危机
20世纪中期,计算机刚被从军用领域转向民用领域使用,那时编写程序的工作被视同为艺术家的创作。当时的计算机硬件非常昂贵,编程人员追求的是如何在有限的处理器能力和存储器空间约束下,编写出执行速度快、体积小的程序。程序中充满了各种各样让人迷惑的技巧。这时的软件生产非常依赖于开发人员的聪明才智。
到了20世纪60年代,计算机的应用范围得到较大扩展,对软件系统的需求和软件自身的复杂度急剧上升,传统的开发方法无法适应用户在质量、效率等方面对软件的需求。这就是所谓的“软件危机”。
为解决这个问题,1968年NATO会议上首次提出“软件工程”(SotfwraeEngineeirng)的概念,提出把软件开发从“艺术”和“个体行为”向“工程”和“群体协同工作”转化。其基本思想是应用计算机科学理论和技术以及工程管理原则和方法,按照预算和进度,实现满用户要求的软件产品的定义、开发、发布和维护的工程。从此也诞生了一门新的学科——软件工程。
迄今为之,为了达到最初设定的目标,软件工程界已经提出了一系列的理论、方法、语言和工具,解决了软件开发过程中的若干问题。但是,由于软件固有的复杂性、易变性和不可见性,软件开发周期长、代价高和质量低的问题依然存在。IEEE在2002年发表的报告指出,即使是IT产业最发达的美国,在2001年美国本土公司开发的软件产品中平均每1000行代码中有0.37个错误,对于美国之外的其他国家,这个比例更高。
1.2软件与其他产品的差异
软件是一种特殊的产品,人们通常看到的是它的载体,而真正具有意义的是载体上的计算机或信息。
软件既不同于通常的精神产品,也不同于常见的物质产品。作家的作品是一种精神产品,它没有使用价值却可以供人阅读欣赏。若把软件也看成是一种作品,却发现其价值在于供人们使用,无人喜欢读它的源代码。
软件也与传统的工业产品不同。工业产品在设计好之后,主要的成本是原材料成本、生产过程的开销等,但生产任何软件的主要成本是设计、实现软件时的成本,以及软件投入使用后的维护成本,在生产线上制造软件的成本非常低。用户购买某种商品后,就拥有了该商品的所有权和使用权。可是用户买来的软件却只拥有它的有限“使用权”。工业产品会随着使用而磨损、报废,但软件在使用过程不会有任何磨损,在相同的硬件条件下用户1年前使用的软件和5年后使用该软件无任何差别。传统的工业产品在车间里生产,生产过程可见、可触摸,也容易衡量生产过程中的消耗和进展。可是软件的开发过程在人的大脑里,很难度量其进度。
所谓的“软件工程”就是要这种过程“可视化”、“定量化”,把看不见的思维活动变成看得见的“文档”或者其他看得见的东西。
2软件工程方法和技术
30多年来,软件工程的研究和实践取得了长足的进展,尽管目前离彻底解决“软件危机”还有相当的差距(对是否能彻底解决目前也存在争议),但软件工程的方法对软件产业的发展还是起到了很大的推动作用。从20世纪60年代以来,陆续出现了结构化程序设计技术、计算机辅助软件工程(CASE)、面向对象语言和方法、软件过程及软件过程改善研究等一系列成果,并应用到实践中。目前软件工程中主要使用的方法和技术可以分成技术和管理两类。
2.1技术的角度
主要包括:软件开发范型、软件设计方法。软件开发范型关注软件工程的方向,即如何才是正确的编写满足需求的软件;软件设计方法关注软件工程的“途径”,即研究怎样完成从高层概念模型到低层概念模型的映射。
软件工程理论在实践中应用时重点放在软件复用上。参考目前成熟的工业产品的开发模式,软件复用可以在软件开发中避免重复劳动,它以已有的成果为基础,充分利用过去开发应用系统中积累的知识和经验,将开发的重点集中于新应用的特有构成成分上。通过使用软件复用技术,开发应用系统时可以充分利用已有的开发成果,消除软件生命周期中的许多重复劳动,提高软件开发的效率。同时,复用高质量的已有成果,可以避免重新开发时引入的错误,从而提高软件质量。
实现软件复用的关键技术包括软件构件技术(softwarecomponenttechnology)、领域工程(domainen—gineering)、软件体系结构(softwarearchitecture)等。
软件构件是指应用系统中可以明确辨识的构成成分,可复用构件是指具有相对独立功能和可复用价值的构件。目前,构件的概念即包括源代码,也包括需求、需求规约、系统和软件的体系结构、文档、测试计划、测试用例和数据以及其他对开发活动有用的信息,这些信息都可以称为可复用软件构件。软件构件技术是支持软件复用的核心技术,其主要研究内容包括:如何有目的的进行构件生产和从已有系统中挖掘提取构件;构件的本质特征及构件间的关系是什么样的;如何描述构件;如何对构件进行分类、组织及检索等。
研究实践表明,由于某个特定领域需要的软件具有相似的需求,因此软件复用在特定领域内更容易获得成功,由此出现了领域工程。领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的过程,它涵盖了建立可复用软件构件的所有活动。包括美国卡内基•梅隆大学软件工程研究所(CMU/SEI)在内的许多研究机构已经提出了一些领域分析方法。
如果软件复用仅停留在代码阶段,开发人员得到的好处是有限的。软件体系结构技术使软件复用从代码复用发展到设计复用和过程复用。在建筑工程领域人们用体系结构表达建筑的整体结构,软件工程研究中引人体系结构这个术语,其核心内容是软件系统的结构,它包括如下一些实体:构件、构件之间的交互关系、限制、构件和连接件构成的拓扑结构、设计原则与指导方针。
2.2工程管理的角度
参考其他成熟工程领域中的做法,软件工程也研究管理学理论在软件工程中的应用。软件项目管理方法抛弃了以前个人的作坊式开发方式,根据管理科学的理论,结合软件产品开发的实际,保证工程化系统开发方法的顺利实施。为了使软件项目能够按照预定的成本、进度、质量顺利完成,软件管理方法对成本、人员、进度、质量、风险、文档等进行分析管理和控制。进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,其开发风险也越小。软件项目管理已经是公认的软件开发企业的核心竞争力之一。
根据在前面提到的软件与其他产品的区别,软件项目管理具有一些与其他项目管理不同的特性软件项目管理中遵循着一些原则,例如:软件项目中需要平衡需求、资源、工期、质量这四个要素之间的关系;大规模的项目要拆分成几个小项目,从而减小项目的管理风险,并且使目标具体明确;依靠一套规范的过程来实时控制项目进度,并确保项目经理能够及时发现问题、解决问题,保证项目具有很高的可见度;针对不同项目的特点,制订不同的项目管理的方针政策;合理控制项目组的规模控制原则;有效的积累知识,做到人员的专业化培养。
目前在软件项目管理方面有国际标准化组织专门为软件行业定制的ISO9003标准,它给出了衡量软件质量的准则;美国卡内基•梅隆大学软件工程研究所提出的CMM(CapabilityMaturityModel,能力成熟度模型)则提供了一整套较为完善的软件研发项目管理的方法。
3软件工程的新发展
20世纪末开始流行的Internet给人们提供了一种全球范围的信息基础设施,形成了一个资源丰富的计算平台,未来如何在Internet平台上进一步整合资源,形成巨型的、高效的、可信的虚拟环境,使所有资源能够高效、可信地为所有用户服务,成为软件技术的研究热点。
Internet平台具有一些传统软件平台不具备的特征:分布性、节点的高度自治性、开放性、异构性、不可预测性、连接环境的多样性等。这对软件工程的发展提出了新的问题。软件工程需要新的理论、方法和技术和平台来应对这个问题。目前投入很大精力研究的中间件技术就是这方面的典型代表。
综上所述,Internet及其上应用的快速发展与普及,使计算机软件所面临的环境开始从静态封闭逐步走向开放、动态和多变。软件系统为了适应这样一种发展趋势,将会逐步呈现出柔性、多目标、连续反应式的网构软件系统的形态。面对这种新型的软件形态,传统的软件理论、方法、技术和平台面临了一系列挑战。从宏观上看,这种挑战为我们研究软件理论、方法和技术提供了难得的机遇,使我们有可能建立一套适合于Internet开放、动态和多变环境的新型软件理论、方法和技术体系。从微观的角度来看,Internet的发展将使系统软件和支撑平台的研究重点开始从操作系统等转向新型中间件平台,而网构软件的理论、方法和技术的突破必将导致在建立新型中间件平台创新技术方面的突破。
B. 软件开发编程的现状和前景怎样
发展现状:
从中国国情发展需要来看,计算机软件行业的发展对于优化我国产业结构,实现对传统产业的信息化改造,提高经济效益和国际市场竞争力,具有极其重要的作用,是国家重点支持和鼓励的行业。同时,作为信息化时代的信息传递基础,软件行业还是一个能多方面使用的行业,它与其它各行各业的结合非常多,例如普通的手机应用程序的设计、超市收银系统的设计,此外,常见的红绿灯监控、二代身份证的使用等等都离不开它。
发展前景:
1、市场需求大
根据知名校园招聘网站“梧桐果”《我国人才缺口最大行业排行榜TOP10》数据统计,与软件开发相关的互联网/电子商务行业、电子技术/集成电路行业、计算机软件行业的人才缺口分别排在第1、第4和第8位。目前国内IT软件研发人才缺口超过百万,其中软件应用类研发人才缺口至少60万,
2、就业范围广
现在各行各业,略有规模的大中型企业,基本都会有自己的IT部门或者各类应用管理软件,其中消费电子和通信设备行业,对于软件开发人才的需求尤为旺盛。
3、薪资收入高
软件在IT产业里是利润最高的部分,而最大的成本就是工资成本,所以软件开发人才的薪资也相对较高,同比高出其他行业50%左右。据前程无忧的调查数据显示,2016年IT软件技术研发类岗位的平均调薪幅度为11.1%,薪资上涨幅度也远远超过其他行业。
4、职位晋升快
软件开发人才需要的是技术和实际操作,一个熟练的软件开发工程师,特别受用人单位的欢迎,升职加薪非常快。
5、岗位性质重要
软件是电子载体的灵魂,软件开发人才的关键性不言而喻。
C. 软件工程发展趋势
软件工程发展方向主要有四个方向,软件项目管理,软件框架设计,软件品质管理,软件运行维护。软件项目管理指管理整个软件开发过程,包括需求分析,人员配置,软硬件设施,与客户沟通等等,贯穿这个开发流程,当软件开发结束后才终止。软件框架设计指开发一套成熟的软件设计方法或架构,能够指导程序开发人员进行软件设计,且节约开发时间,且做出的系统安全稳定。软件品质质量管理指开发出的软件符合用户设想的目标,满足时间操作的功能,符合需求,且能在实际中运行。软件运行维护指软件后期管理维护升级,由于软件开发过程中难免会留有bug,在系统运行阶段才暴露出来,这就需求软件升级、更新,确保软件质量。
D. 软件开发工具的现状和发展
软件开发工具是用于辅助软件生命周期过程的基于计算机的工具。通常可以设计并实现工具来支持特定的软件工程方法,减少手工方式管理的负担。软件开发工具根据在不同软件开发生命周期中起到的作用可以分为:
软件建模工具,用于描述系统的需求,辅助设计。
软件实施工具,用于程序设计,编码和编译,包括程序语言开发环境和集成开发环境。前者主要提供程序语言的预编译,编译,链接的工具,后者包括代码编辑器在内的编辑器,代码生成器,运行环境和调试器。
模拟运行平台,用于模拟系统的实际运行环境。
软件测试工具,用于对系统,子系统,模块或单元进行测试的工具。
软件开发支撑工具,主要是软件配置管理工具。
对于免费软件开发工具而言,有以下七种盈利模式:
1. 多种产品线 2. 技术服务型 3. 应用服务托管(ASP)4. 软硬件一体化 5. 附属品 6. 品牌战略,服务至上 7.市场策略
软件开发工具包括免费和付费两种模式,该报告统计的产品均为付费软件开发工具。
全球软件开发工具主要企业有Microsoft、Jetbrains、Perforce、Atlassian、Adobe等,全球前五大企业占有大约45%的市场份额。
目前,北美地区是最主要的市场,占有市场份额超过50%,其次是欧洲地区,该地区占有的市场份额超过20%.
本文研究全球及中国市场软件开发工具现状及未来发展趋势,侧重分析全球及中国市场的主要企业,同时对比北美、欧洲、日本、中国、东南亚、印度等地区的现状及未来发展趋势。
2020年全球软件开发工具市场规模达到了249亿元,预计2027年将达到646亿元,年复合增长率(CAGR)为14.5%。
《2021-2027全球与中国软件开发工具市场现状及未来发展趋势》本文重点分析在全球及中国有重要角色的企业,分析这些企业软件开发工具产品的市场规模、市场份额、市场定位、产品类型以及发展规划等。
E. 软件工程师现状及发展前景如何
作为“朝阳行业”,软件行业的发展虽然也受到了全球金融危机的影响,但就目前的发展形势来看,软件工程专业在未来多年内仍然将是就业形势比较好的专业。2009年就业调查报告显示,软件工程就业率及就业工资水平均居高校各专业前列。这主要源自于软件行业的快速发展和政府经济结构调整而对软件人才的迫切需求,据估计,我国目前存在着80万的软件人才缺口,而对软件人才的需求也以每年20%的速度递增。
未来几年,国内外的高层次软件人才仍旧处于供不应求的状态。目前软件工程专业毕业生主要在各大软件公司、企事业单位、高等院校、各大研究所、国防等重要部门从事软件设计、开发、应用与研究工作。有数据表明,我国软件出口规模达到215亿元,软件从业人员达到72万人,在中国十大IT职场人气职位中,软件工程师位列第一位,软件工程人才的就业前景十分乐观。
F. 软件工程专业就业前景咋样啊最近几年行吗
单纯的问软件工程是否有前景,个人认为是有的。但是并不建议你以这件事情作为你职业选择的考量。你看08年左右的时候机械石油何其风光,现在呢?这不过短短八九年的光景。你读个研究生就已经七年了。我刚上大学那会儿软件学院因为地方比较偏,学费又贵,一班有一半儿多的学生都是调剂来的。很多人大一努力读书的目标就是拿到好成绩然后转专业。等到我研究生毕业的时候,学校里几乎是最强专业的学生也有人不顾位置与费用的劣势转专业到软院。但是,再过八九年呢?17年的软件会不会是07年的石油?这谁也说不好。如果前景这个东西这么容易被压中,我上大一的时候软院就应该人满为患了。
软件有前景吗?有。毕竟未来几乎所有的东西一定都会需要相对应的软件来驱动,绝大多数的行业都会引入自动化与网络。目前软件互联网与传统行业的结合远未到恰当的程度。老百姓的消费品有他淘宝,工业原材料就能弄个找钢网。发展的空间一定是有的。但是如果你所说的前景指的是工资,那就不一定了。现在互联网行业的工资虽然高,但是这背后除了互联网自身的技术红利以外还有资本与供需关系作为支撑。随着这一行的人越来越多,技术发展带来的开发门槛的降低。高工资还能持续多久并不好说。至少低端开发应该不会持续多久。
此外呢,软件和软件还是不一样的。至少简单的来划分互联网、传统软件、游戏就很不一样。传统软件的薪资与互联网之间差距还是比较大的。游戏行业么,应该算开宝箱?但大家都在写代码。这中间区别还是蛮大的,就像羽毛球、网球和乒乓球大家都是小球,但是并不一样。
至于你所担心的,所谓「竞争很激烈」、「知识更新快」,估计还有什么「青春饭」、「四十退休」、「没对象」、「工作强度大」之类的。咱一条条说吧。