Internet软件项目研讨

时间:2022-07-19 10:36:03

Internet软件项目研讨

1前言

Internet的高速发展给现代生活带来巨大的变化,信息革命不仅影响着生活的方方面面,也给各个社会行业带来很多新变化。软件工程是是一门年轻的学科,并且已经在软件发展的过程中承担了重要作用,如何立足于现有条件,面对新机遇,新挑战成长壮大不仅对于软件行业有重要意义,对于整个信息产业也有十分重要的意义。本文将站在软件开发者和研究者的立场,分析Internet下的软件工程,文中的观点是Internet不仅给软件工程的发展带来很多新的机遇,新的便利,同时也给软件工程的发展带来了新的挑战,下文将从这两方面进行分析。

2Internet对于软件工程发展的推动

Internet的迅速发展给对软件工程有很多积极的影响,大致可以归结为如下几个方面。

2.1技术交流软件开发的流程大致可以分为产品需求、开发和测试3个环节,其中各个环节是由不同的人来负责的。软件项目人员用于相互之间的通信交流通常要大量时间,准确和及时的技术经验交流对于维护项目组之间的进度同步以及允许对于精通核心技术的个人在需要时充分发挥其作用都是十分必要的。比如开放软件社区一个潜移默化的规则是技术交流应该以帖子的形式在论坛相关板块中进行,另外,开放软件项目通常要在技术的精确细节和项目管理决策方面得到支持。很多软件项目的失败是由于经验不足或者技术积累不够,并且很多相似项目重蹈覆辙,Internet给技术人员提供了方便的交流手段,可以快速地传播新技术及相关问题的解决方案,并且同时相关技术陷阱可能发生的地方,避免相同的错误重复出现。

2.2跨地域软件开发项目中的版本控制通常很多软件项目是大型的,需要几个几十个甚至成百上千人的参与,这些开发人员在地域上很有可能是分散的,甚至可能相隔千里,这些人员之间的协调合作就变的十分重。比如项目中的一个文件也许几个模块都需要关联,并且各个模块的开发人员都可能会对这个文件进行开发,如何保证各个模块中的对这个文件引用的一致性就需要用到软件项目的版本控制。常用的版本控制软件有SVN,CVS等软件,拿SVN来说,会有一个专门的SVN服务器,每个人在开发的时候都需要从SVN服务器上把最新的代码checkout出来,并且用branch进行开发,这时候他的开发不会影响到其他人的代码,开发完成后需要合并到trunk上,合并的过程需要处理冲突,通过这样的版本控制器和Internet的结合,开发人员可以分散在不同的地区,只要有Internet连接,就可以实现完美的版本控制。由图1可以看出,client1到clientn对应的是现实中的一个个的开发人员,他们可以不在一起,甚至可以不认识,但是却可以通力合作,每一个人都和SVN服务相连,每个人把自己的最新代码提交上去,别人开发的时候下载一份最新的代码,在其基础之上进行开发。

2.3构件复用软件工程的发展方向是构件化,提供构件的复用率可以显著提升软件的开发速度和质量,Internet的发展给了构件复用极大的支持,可以通过在相关的技术社区或搜索引擎查找到需要的构件,避免重复造成的悲剧。在软件开发过程中,遇到一个新功能和新需求,首先不要想着自己去开发,而是去查找是不是已有相关的构件或类似的软件库,一般来说,第三方提供的构件或库都是经过实践检验的,功能和性能都比较有保证,多多使用现有构件,不仅可以加快项目进度,通常还可以降低开发成本,比如在互联网软件开发过程中经常用到的jquery库,提供了一些很方便的js函数和浏览器兼容性的解决方案。

2.4进度管理任何软件项目都需要有需求、执行、控制、运营几个步骤。一般来说小型项目的团队成员比较少,可能在空间上会都在一起,但对于大型项目,通常需要进行一些外部合作,需要几个公司协同开发,有时甚至同一个公司的团队成员在地理上都相距很远,这时候的进度管理就需要Internet的支持,常见的基于Internet的进度管理是依靠管理平台或邮件,通过两种途径对于每个项目成员分配TO-DO列表,并且实时追踪TO-DO列表的完成情况并且更新,另外需要设置里程碑列表来标记项目的关键时期和关键点。

2.5质量保证Internet的发展催生了开源软件项目的发展,开源软件项目自出现到现在取得了十分辉煌的成就,主要体现在起软件质量上,这也是开源软件项目相比于传统封闭的软件开发最大的优势。开源软件的质量保证主要基于3点,一是开发人员可以在Internet上根据自己的兴趣和知识寻找相关的项目;二是很多开发人员自己同时也是需求人员和测试人员;第三点是所有项目过程中的技术交流和程序逻辑都是公开的,把代码呈现在更多人的视野中,可以接受更为严格的检验。此外,由于Internet上的用户来自社会的各个领域和阶层,不同的背景和知识早就了更高的质量。

3Internet环境下软件工程所表现出的问题

在Internet给软件工程带来极大便利的同时,附带而来的很多问题同样需要引起足够的重视,正确对待和处理这些问题有重要意义。这些问题主要表现在如下几个方面。

3.1安全问题自从互联网诞生之日起,安全问题就一直伴随左右,各种各样的病毒及其变种,各种各样的攻击手段都令人防不胜防,凡是与Internet相关的东西都不得不重视安全问题,软件工程也不例外,如何防止流传于网上的相关项目信息被恶意人员窃取,以及如何建立防护措施,是软件工程在Internet环境中需要引起高度重视的一个问题。Internet环境下的软件工程由于其相对开放性,安全问题更为严重,新的安全问题主要有两个来源,一是开发人员在自己写的代码中留后门;二是由于开发人员技术原因导致。有关统计显示,互联网上有超过70%的攻击是由于人为原因造成的,在当前,由于很多软件项目的组成人员不仅仅通过Internet联系,在开发项目过程中,由于金钱利益、个人情感、自律性等问题一些开发人员可能会在自己的代码中留下某种后门,当软件投入使用后,通过这些后门可以对软件或服务器进行各种各样的攻击,带来严重后果,与传统软件不同的是,由于开发人员的分散性和虚拟性,导致管理很困难,这个问题比较难避免。另外,现实中很难保证开发人员的技术水平都达标,有些新手提交的代码可能是存在明显漏洞的,当软件投入使用之后,存在的漏洞很有可能被攻击者利用。所以,在新的形势下,软件工程不仅要面对传统的安全问题,还要面对新的安全问题。

3.2需求和开发之间的矛盾这个问题常见的有两种情况,一种是新技术和新理念的发展和现有标准之间的矛盾,另一种是新的标准和现有技术之间的矛盾,造成这种局面的原因之一是Internet的迅猛发展总会提出一些新的需求或者发现一些新的缺陷,如何制定出能够普遍适用、合理的持久的标准或者如何在新技术出现的时候既能满足新需求又能兼容既有标准是我们需要努力的。目前Internet的高速发展使得互联网的入口浏览器的竞争愈发激烈,很多的软件项目都是Web项目,需要浏览器的支持,就目前来说,兼容浏览器也是一项十分繁杂的工作。在开发过程中,经常可以见到这样的情况,产品最初提出的需求开发还在进行中,由于Internet上出现了新的产品或者新的特性需求,导致产品不断修改需求,但这时开发人员还在按照之前的需求版本进行工作,如果这时抛弃之前的版本,将导致人力和物力的损失,并且对开发人员的情绪都是较大的伤害,如果不改变,还按原来的版本开发,则开发出来的产品很有可能是过时的或者不符合市场需求的产品,所以说需求和开发之间存在着永恒的矛盾,如今Internet下这个矛盾又被加剧了。解决这个矛盾的理想情况是开发人员把各个功能模块化,构件化,由需求方按照自己的需求“组装”软件,但此种情况需要需求方有较强的软件方面的知识,现实中往往比较难以实现。

3.3逆向工程和再工程问题逆向工程和再工程对于一个具体的软件项目来说是一个比较长期的问题,逆向工程是根据效果倒推程序的一个过程,而再工程则是由于原项目不能满足现有需求而进行必要的重构,软件行业是一个人员流动性很高的行业,一个软件项目开发完成后团队可能就会解散了,这还是传统方式的工作模式,如果是类似于开源软件之类的软件项目,项目的很多关键信息比较计划、排期、文档管理都是依赖于Internet的话,那么软件后期的逆向工程和再工程难度会成倍增加,因为目前的很多项目由于进度限定等因素,导致很多开发人员只是完成了相关功能就必须进行下一步的开发,没有多余的时间写项目文档甚至代码注释,在这种情况下产生的代码让除开发者之外的人看起来是相当痛苦的,所以当原开发人员不能提供支持的时候,整个项目的重构将变得十分困难,有时甚至导致逆向工程,造成极大的资源消耗。

3.4体系结构体系结构对于软件来说就相当于地基对于高楼大厦,地基的质量决定了楼可以盖多高,而体系结构的好坏则直接决定了软件项目的性能和扩展性,目前很多基于Internet的软件项目其实内容本身也是与Internet相关的,比如处于整个互联网产业链顶端的搜索引擎,搜索引擎的项目直接与Internet相关,再互联网初期的时候整个互联网上的网页数量也就是千万量级,短短几年就达到亿的量级,而现在更是达到惊人的千亿量级,信息的爆炸性增长使得很多软件项目的性能急剧下降,瓶颈很多情况下都在体系结构,如果体系结构在项目初始便设计的具有前瞻性,后续的性能改进会相对容易,否则,则会不断改进甚至推翻整个软件构件重新设计,如果是后种情况,那么带来的后果将是灾难性的。

4结语

在新的形势下,客观正确地面对Internet和软件工程的发展及新的特征,扬长避短,积极探索,使得软件工程在Internet的发展中承担起应有的责任。