软件开发方法是软件工程理论的重要内容之一,在软件开发方法中,对于开发软件时“做什么”和“如何做”给出了明确的、详细的回答。人们在不同时期为了解决各种不同的软件开发问题,推出了多种不同的软件开发方法,并且每种软件开发方法还有灵活多样的表现形式。回顾软件开发历史,我们看到,软件开发方法在不断地创新发展,将来还会有新的软件开发方法出现。软件开发方法的创新发展过程有什么规律性?值得我们进行研究。找到了这个规律性,可以帮助人们深刻认识现有的各种软件开发方法,更重要的是可以指导人们去创建新的软件开发方法。
1两个典型软件开发方法的创新发展过程
1.1结构化软件开发方法的创新发展的过程
结构化软件开发方法包括结构化分析方法、结构化设计方法和结构化实现方法,其核心是结构化程序设计方法。结构化软件开发方法是在结构化程序设计方法基础上逐渐形成和完善的。
在结构化程序设计方法出现之前,软件开发活动个体化特征非常严重,编写程序时个人随心所欲,过分追求程序编写技巧,没有一个行之有效的、大家共同遵循的开发准则,造成程序的可读性、清晰性、可理解性比较差,给软件维护工作带来极大的困难。
在结构化软件开发方法出现之前,由于当时的软件比较小,开发过程比较简单当时错误地认为开发软件只是编写程序,所以那时的软件开发方法只是考虑编写程序,软件开发方法内容极不完善,对编写程序之外的其它软件开发阶段没有给予重视。
随着软件规模的增大和复杂性的提高,这种个体化随心所欲编写程序的现象和只重视编写程序而忽视软件开发其它环节的软件开发方法导致许多问题出现。例如,由于过分追求程序编写技巧,一些程序很难阅读和理解,因此当软件出现问题时无法维护;例如,由于不重视需求分析工作,对用户需求了解的不全面、不细致,开发出的软件往往与用户要求有很大差距。这些问题成为软件危机的根源之一。
在结构化程序设计方法出现之前的相当长的时间里,人们对软件开发活动和软件开发方法的认识停留在上述层面上,形成了一种传统的思维观念,似乎开发软件就应该那样做,使软件危机日益严重。
为了消除软件危机,人们开始深入思考软件开发活动和软件开发方法。1968年Dijksm在写给ACM杂志编辑部的信中再次建议从一切高级语言中取消oo语句,围绕是否应该取消ot)语句,人们展开了一场激烈的争论。在这之前,1965年Dikstm首次建议取消吾句,1966年Bohn与JaooPiH正明了任何单入口单出口的没有“死循环”的程序都能由三种基本结构构造出来,这三种基本结构是顺序结构、选择结构和循环结构141。经过争论,最终人们认识到,不是简单的是否取消吾句的问题,而是应该改变传统思维观念,创建新的思维观念,在此基础上创建新的程序设计方法。
围绕gt语句争论的结果使人们形成了新的思维观念:编写程序时,在正确地实现了软件功能的前提下,必须将可读性、清晰性和可理解性放在首位,必须考虑到程序的可维护性,而不能个人随心所欲地去过分追求程序编写技巧。由于使用三种基本结构顺序、选择、循环)组成的程序具有良好的可读性、清晰性和可理解性,容易维护,所以应该使用顺序、选择和循环三种基本结构来实现程序,每个程序模块只有一个入口和出口,复杂结构由基本结构通过组合与嵌套来实现,采用自顶向下逐步细化技术进行设计。按照这样的新思维观念,形成了一个新的程序设计方法一结构化程序设计方法。1971年,IM公司在设计纽约时报信息库管理系统时使用结构化程序设计方法,成功完成了83000行程序的编写,成为结构化程序设计方法成功运用的一个范例。随后,结构化程序设计方法又在美国宇航局空间实验室飞行模拟系统的设计等许多项目中得到成功运用。
1973年,Nass和Shneidemarni出著名的盒图(N-S图)1974年ChaPir对盒图进行了扩展,这一创新为结构化程序设计提供了一个强有力的工具,改变了使用传统流程图容易产生随意性的弊病,使结构化程序设计方法得到完善。随后,日立公司的二村良彦等人提出了问题分析图(PAD图)问题分析图是结构化程序设计的又一个有效的工具,从而进一步丰富了结构化程序设计方法151。1971年Weh首先开发出Psa语言,1972年贝尔实验室的RCi设计出C语言,1983年美国正式公布AN—StPasra和AMSPC标准,以Pasca语言和Q吾言为代表的结构化程序设计语言的出现和完善,使结构化程序设计方法得到了更加广泛的应用。
在结构化程序设计方法基础上,人们开始从整体范围思考软件开发方法。软件生命周期理论的提出,是人们正确认识软件开发整体性的结果。一个软件从开始计划,到废弃不用,有一个完整的生命周分析、软件设计、编写程序、测试、维护。根据软件生命周期理论,开发软件不仅仅是编写程序,必须还要完成其它阶段的工作,编写程序只是软件开发的整体过程中的一项活动,因此开发软件时不能只重视编写程序而忽视其它软件开发活动。一个完整的软件开发方法,应该对软件生命周期中的每个阶段的任务和目标都能给出清晰的描述。1970年Rtce首先提出瀑布模型,瀑布模型将软件生命周期概念非常清晰地表达出来1<6,它的出现,标志着人们开始从软件开发的整体性出发来构建软件开发方法。在结构化程序设计取得巨大成功的推动下,以结构化程序设计方法为中心,开始形成结构化软件开发方法。1974年,SeversMYeis和Constantine发表文章“SwcuiKdAnalysis,提出了结构化分析和结构化设计的概念,随后许多专家为结构化分析和结构化设计方法的形成和完善做了大量工作,如1977年R°s^Schmng表文章“Srucmied八na—ysisfrRequiranentsDefinition,,如1978年MYe^出版著作《CcmposieStiucmiedDesg》如1978年Youijon和Constanfne出版著作《StucuredDe如1979年DMarco出版著作《Sttucutd八nalysjsandSystemSPeciifaton〉11],等等,在YoudanConsiantineDMar°oStevensMYera等人的积极工作和倡导下,结构化的思想被应用到软件开发的整体过程,逐渐形成了现在大家熟知的、包括结构化分析、结构化设计和结构化实现在内的完整的结构化软件开发方法。
结构化分析方法使用数据流图和数据字典以及ER图、层次方框图、Wamiel•图、PO图等工具来描述软件需求。结构化设计方法使用模块化和自顶向下逐步细化技术根据数据流图等结构化分析的结果来设计软件系统总体结构,使用盒图或PAD图等工具来设计每个模块的算法和数据结构。结构化软件开发方法成为20世纪70年代和80年代占主导地位的软件开发方法,直到现在仍在发挥作用。它的广泛运用,有效地遏制了软件危机的蔓延。
1.2面向对象软件开发方法的创新发展的过程
面向对象软件开发方法包括面向对象分析方法、面向对象设计方法和面向对象实现方法,其核心是面向对象程序设计方法。面向对象程序设计语言的创新发展推动面向对象程序设计方法逐渐形成和完善,从而推动面向对象软件开发方法形成并发展。
面向对象软件开发方法的研究,1967年KistrnNgad和01已JohanDah开发了Simula语言,提出许多面向对象的概念。1972年,八laiKay引用smUa吾言中关于类和对象的概念,开发出3nalltalk语言。1980年,Xerox公司推出比较完善的Snaltk语言。1986年,DiSitalk公司推出了运行在IM—PC机的DOS环境下的Sialtk版本——3nallta]k/ySnallak语言是第一种真正的面向对象语言。面向对象语言的核心概念是类和对象,类和对象的概念的提出是软件开发历史上的一次重要的思维观念创新,正是这一思维观念创新推动了程序设计方法乃至软件开发方法的创新发展。结构化程序设计方法所代表的思维观念创新被称为程序设计方法的第一次飞跃,面向对象程序设计方法这一思维观念创新被称为程序设计方法的又一次飞跃。
在传统的程序设计方法中,数据和施加在数据上的操作被分离成两个独立的部分,而程序被看作是工作在数据上的一系列过程或函数的集合。实际上这样分离不利于使用计算机解决问题。原因在于:如果我们将客观世界中描述的实体称为问题空间中的对象,将计算机中的实体称为解空间的对象。因为客观世界的实体既有静态的属性(即数据)又有动态的行为(即对数据的操作)因此这两方面内容密切相关。由于传统的程序设计方法将这两方面内容分离,无形中加深了问题空间与解空间之间的裂痕,无法实现从问题空间到解空间的自然过渡,增加了软件开发的难度。从软件重复使用和软件维护的角度看,由于数据和施加在数据上的操作被分离成两个独立的部分,尽管传统方法也提倡软件重复使用,但局限于少数函数或过程的重复使用,重复使用的粒度比较小,不利于大型软件的开发;由于数据和施加在数据上的操作被分离成两个独立的部分,使模块的信息隐藏和独立性受到影响,因此传统方法开发的软件的可维护性较差。
在面向对象程序设计方法中,数据和施加在数据上的操作被封装在一起,形成类和对象的概念,用对象分解取代了传统方法的功能分解解所有对象被划分成各种对象类,按照子类与父类的关系组成对象类的层次结构,子类自动继承父类的所有特性,对象彼此间仅通过传递消息实现联系。这一思维观念创新使得问题空间与解空间的结构基本一致,使得从问题空间到解空间的过渡非常自然;使得软件重块的信息隐藏和独立性增强,有利于提高软件的可维护性;为开发者提供了随着对某个被开发系统的认识逐步深入和具体化的过程,与人们通常采用的认识客观世界、解决复杂问题的渐进式思维方式相一致。
Snalalk语言的发布引起了人们的广泛关注,随后产生了数十种面向对象语言。例如C++语言它是目前影响最广泛的面向对象语言之一。C++语言是贝尔实验室的BjameSwusrup在1980年开始开发,它是在C吾言的基础上进行的开发,当时称新开发出的语言为“含类的C,到1983年时取名为C++。例如Jaa吾言它是目前应用最广泛的面向对象语言之一。JaM吾言是Sun公司的JamesGoSjngPatrickNaughtoriChiWarihMikeSheridanBillJoy等人在1991年开始开发,最初该语言名叫“Oak嫁树)1992年秋Oak问世,后来Sun公司发现Qak吾言所具有的跨平台、面向对象和安全性高等特性非常符合互联网的需要,于是在1995年对该语言进行设计改进,然后在1995年5月正式以Java语言为名公开发布。
在面向对象程序设计方法基础上,从20世纪80年代中期到90年代初,人们开始从整体范围思考面向对象软件开发方法,面向对象的研究开始向软件生命周期的前期阶段发展,许多面向对象分析和设计((DA/CDD)方法被提出,比较著名的如1990年提出的Wtfs~Brock方法、1991年提出的Coa和Youdm方法、1991年提出的Ranbaugh方法(对象建模技术一CMI)、1992年提出的Jocobsm方法画向对象软件工程一OOE)1994年修改后的Boch方法。这些面向对象分析和设计方法各有各的特点,如何吸收它们各自的优点,将它们综合起来,形成统一的面向对象分析和设计方法,人们开始进行研究。BmC和Rambaugh首先合作,并于1995年10月发布了统一方法(UfedMehodlM.8版本然后Joobo也加盟到这一工作中来,这三人共同努力,将UM方法重新命名为IML(统一建模语言一UnifiedModelingLanguage)在1996年6月和10月分别发布了UML!9和UM091两个版本1997年1月正式公布UMU0版本。LML的开发得到了广泛的好评,1997年11月17日CMG賴际对象管理组织^ObjectManagementCtouP)接纳UMU.1版本为基于面向对象技术的标准建模语
法开始得到广泛的应用,成为二十世纪九十年代、直到目前占主导地位的软件开发方法。
2.对两个典型的软件开发方法的创新发展过程的分析
2.1结构化软件开发方法的创新发展过程的四个环节
我们根据前面叙述的结构化软件开发方法的创新发展的过程,可以看出整个过程由以下四个环节组成。环节1找出软件开发活动中存在着的问题。
问题是:在结构化软件开发方法提出之前,软件开发活动中的个体化特征非常严重,编写程序时个人随心所欲,过分追求程序编写技巧,没有一个行之有效的、大家共同遵循的开发准则;错误地认为开发软件只是编写程序,对编写程序之外的其它软件开发环节没有给予重视。
环节2为了解决问题而进行思维观念创新。
新的思维观念是:编写程序时不能个人随心所欲地过分追求程序编写技巧,必须将可读性、清晰性和可理解性放在首位,必须考虑程序的可维护性,要使用三种基本结构(顺序、选择、循环)来实现程序,采用自顶向下逐步细化技术进行设计。编写程序只是软件开发的整体过程中的一项活动,还要完成系统分析和系统设计等其它阶段的工作,因此开发软件时不能只重视编写程序而忽视其它阶段的活动。
环节3按照新的思维观念来构建结构化软件开发方法的核心部分。
核心部分是结构化程序设计方法,通过Pascal语言和C语言为代表的结构化程序设计语言的推出和完善,通过盒图(N—S图)和问题分析图(PAD图)为代表的结构化程序设计工具的推出和完善,结构化程序设计方法逐渐形成并完善。
环节4按照新的思维观念来完善结构化软件开发方法。
完善的内容主要是将新的思维观念应用于系统分析和系统设计过程,在结构化程序设计方法基础上,逐渐形成结构化分析和结构化设计方法(SA/3)方法)使结构化软件开发方法得以完善。
2.2面向对象软件开发方法的创新发展过程的四个环节创新发展过程,可以看出整个过程也是由四个环节组成。
环节1找出软件开发活动中存在着的问题。
问题是:传统软件开发方法将数据和施加在数据上的操作分离成两个独立的部分,导致问题空间和解空间的结构不一致,从系统分析到系统设计和实现的过渡不自然,软件重复使用的粒度小,不利于大型软件的开发,模块的信息隐藏和独立性不好,软件可维护性较差。
环节2为了解决问题而进行思维观念创新。
新的思维观念是:将数据和施加在数据上的操作封装在一起,形成类和对象的概念,用对象分解取代传统方法的功能分解解所有对象被划分成各种对象类,按照子类与父类的关系组成对象类的层次结构,子类自动继承父类的所有特性,对象彼此间仅通过传递消息实现联系。
环节3按照新的思维观念来构建面向对象软件开发方法的核心部分。
核心部分是面向对象程序设计方法,通过Snaltak吾言的推出和完善,通过C++和Java等许多面向对象语言的推出和完善,面向对象程序设计方法逐渐形成并完善。
环节4按照新的思维观念来完善面向对象软件开发方法。
完善的内容主要是将新的思维观念应用于系统分析和系统设计过程,在面向对象程序设计方法基础上,各种面向对象分析和设计(OOA/OOD)方法(Wifs_Brock方法、Coad和Youdon方法、Ranxbag方法、Jooobson方法)的提出,LMU统一建模语言-UnifiedMadefngLanguage)的出现和完善,使面向对象分析和面向对象设计方法逐渐形成并完善,从而使面向对象软件开发方法得以完善。
2.3小结
从上面分析我们看到,不论是结构化软件开发方法的创新发展过程,还是面向对象软件开发方法的创新发展过程,都由四个环节组成。这决不是巧合,这说明软件开发方法的创新发展过程具有其内在的规律性,结构化和面向对象软件开发方法作为两个成熟的软件开发方法,它们的创新发展过程都遵循这个规律。这个规律可以简单归纳为四个环节,环节L找到现存的某些问题,环节2:为了解决问题而进行思维观念创新,环节3按照新的思维观的思维观念来完善软件开发方法。
3其它软件开发方法的创新发展过程
以上由两种典型的软件开发方法创新发展的过程所总结出来的规律性,具有普遍意义。我们来看其它软件开发方法创新发展的过程,例如敏捷(A&ile)软件开发方法和面向八gm軟件开发方法,这两种软件开发方法正在发展中。
31敏捷软件开发方法
敏捷(ASle)软件开发方法包括XPSCRIMDSMFDDA3)等一类软件开发方法,这类方法在20世纪90年代后期逐渐发展起来,2001年
2月,敏捷软件开发方法的一些创始人在美国犹他州成立敏捷联盟(ASlAlliance),发布了敏捷软件开发宣言,公布了他们开发软件的新的思维观念,从而引起人们的广泛关注。
敏捷软件开发方法的出现,是人们针对传统的软件开发过程复杂繁琐、产生并且维护大量文档、缺乏对开发过程中各种变化的有效和及时的反应等问题,为了适应变化、充分发挥人的主观能动性、简化开发过程、提高开发效率,而研究并提出的。敏捷软件开发方法强调适应变化,强调以人为中心,强调简单化和快速反馈,提倡刚好够用,追求快节奏的软件开发,对软件生产率高度重视。
敏捷联盟宣布了敏捷软件开发方法的4条价值观和12条实践原则,这4条价值观和12条实践原则挑战传统观念,倡导新的思维。4条价值观是:(1重视个人的创造力和相互沟通甚于软件过程和软件工具;(2)重视当前软件甚于理解文档;(3重视用户合作甚于仅仅依赖合同;(4)重视对变动的响应甚于一味遵循计划。12个实践原则是:(1)优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意;(2)即使到了开发的后期,也欢迎改变需求;(3)经常性地交付可以工作的软件,交付的时间间隔越短越好;(4)业务人员和开发人员天天在一起工作;(5)围绕被激励起来的个人来构建项目,给他们提供所需要的环境和支持,并且信任他们能够完成工作;(6撮有效果并且富有效率的传递信息的方法,就是面对面的交流;(7)工作的软件是首要的进度度量标准;(8)提倡可持续的开发速度;(9)不断地关注优秀的技能和好的设计会增强敏捷设计出自于自组织的团队;(12)每隔一定时间,团队会在如何更有效地工作方面进行反省,然后对自己的行为进行调整。
敏捷软件开发宣言发布后,敏捷联盟的成员们纷纷著书立说,完善和发展敏捷软件开发方法的理论。例如敏捷联盟的发起人Mat在2002年出版了著名的《AgleSofWareDevelopnentPrjncp)]e,sPalesandPraefce》〉(《敏捷软件开发:原则、模式与实践》)一书,该书由邓辉译成中文,由清华大学出版社2003年9月出版;例如敏捷联盟的重要成员Highsnih在2002年出版了《AgeSOfwareDevelop—mentEoosystemS)(《敏捷软件开发生态系统》)一书,该书由姚旺生和杨鹏等译成中文,由机械工业出版社2004年1月出版;例如敏捷联盟的重要成员Cockbuin在2001年出版了《AgileSofwaieDevelop—men》(《敏捷软件开发》)一书,该书由俞涓译成中文,由人民邮电出版社2003年11月出版。目前敏捷软件开发方法还没有像面向对象软件开发方法那样成熟还处于发展之中。敏捷软件开发方法没有统一的开发模式,敏捷软件开发方法没有专用的编程语言,也没有专用的分析和设计的工具,因为敏捷软件开发方法的思维观念创新之处与结构化和面向对象软件开发方法不同,它可以充分利用现有的语言和工具。虽然敏捷软件开发方法不如结构化和面向对象软件开发方法那样成熟以及应用广泛,但在需求模糊或快速变化下的一些小型的软件项目的开发上还是非常适用的。
分析敏捷软件开发方法的创新发展过程,对照结构化和面向对象软件开发方法创新发展过程的四个环节,可以看出,敏捷软件开发方法的创新发展经历了环节1和环节2目前处于环节3环节1找出的问题主要是“传统软件开发方法的开发过程复杂繁琐、产生并且维护大量文档、缺乏对开发过程中各种变化的有效和及时的反应。”;环节2提出的新的思维观念通过敏捷宣言中的4条价值观和12条实践原则体现出;环节3是按照新的思维观念来构建软件开发方法的核心部分,以Main的名著《ASlSoftvareDevel°PmentPrjncJ^lesPatternsandPac#«》为代表的一批著述的发表,说明敏捷软件开发方法的核心部分正在逐渐形成之中,但是目前还没有形成一个统一的、能为大家所接受和认可的标准化方法。由于敏捷软件开发方法的思维观念创新之捷软件开发方法发展的环节4也一定具有自己的特点,不会照搬结构化和向对象软件开发方法的模式。我们期待着敏捷软件开发方法的进一步发展和完善。
3.2面向Agen软件开发方法
由于ntene的广泛应用,使得计算机软件的规模越来越大、复杂性越来越高,人们对计算机的要求也越来越高。人们期望将来计算机不仅仅被动地充当人类的“佣人”角色,还能够充当人类的“管家”和“代理”角色,能主动地、自发地为人类做更复杂的工作。人们希望通过使用Agern理论和技术开发出具有更高智能特征、更高灵活性并能更友好地与人类进行交互的计算机系统11411151。但是传统的软件开发方法难以担负这种具有智能特征的复杂软件的开发任务于是自20世纪90年代中后期以来人们陆续提出了一些面向Agen软件开发方法,比较有影响的包括MaS方法、MASCommonKADS方法、Gaia方法、AgentUML方法、Tropos方法等I16-181Agen概念来自于分布式人工智能研究领域,目前关于Agen概念的定义还有许多争论。一般认为Agen是一个具有自主性、交互性、反应性、社会性等特征、能在某一环境下持续发挥作用以实现设计目标的行为实体。Agen与对象是两个完全不同的概念,对象只是封装了属性和方法并且通过传递消息与其它对象进行交互的实体而Agen由于具有自主性等特征,所以它的抽象程度比对象更高,更贴近现实世界中的行为实体。
面向Agn软件开发方法基于Agen概念,它给软件开发带来新的思维观念,新的思维观念认为:任何一个系统,无论是应用系统还是软件系统,是由一个或者多个Agen购成的,每个Agen嘟是自主的行为实体Agen伺存在着复杂的结构关系,并通过高层的交互(如合作、协商和竞争等)来进行Agent间的相互作用,从而实现系统的整体设计目标。
目前将面向Agen軟件开发方法分为三类:基于知识工程的方法、基于对象技术的方法和基于角色、组织模型的方法1191120。基于对象技术的方法借助于面向对象软件开发方法,将Agen视为一种特殊的对象,通过对现有面向对象软件开发方法以及建模语言(尤其是UML)的扩充来支持对基于A-gn係统进行建模、分析和设计,MaSE方法和Agent法借助于知识工程(如人工智能、认知科学等)领域的概念、思想和技术对基于Agent系统进行建模、分析和设计。一种常用的方法是将Agent视为由各种认知部件所组成的意向系统,如信念、目标、意图、规划等等,MAS-ConnonKADS方法和TPos方法是这类方法的代表。基于角色、组织模型的方法借助于组织学和社会学的思想,将基于Agent系统视为是一个组织或者社会,利用社会学和组织学中的抽象概念(如角色、组织、组织规则、职责、权利)和思想来对基于Agen系统进行描述、分析和建模,Gaia方法是这类方法的代表。
上述各种面向Agent軟件开发方法都不成熟距离大规模的实际应用还有很大的差距,无法像面向对象软件开发方法那样为人们所接受。总体上看,面向aen軟件工程方法的研究与应用仍然处于探索阶段,目前还没有形成一个吸取了各种方法优点的、能为大家所接受的、统一的面向Agen软件开发方法。
分析面向Agen欺件开发方法的创新发展过程,对照结构化和面向对象软件开发方法创新发展过程的四个环节,可以看出,面向Agen軟件开发方法的创新发展经历了环节1和环节2目前处于环节3环节1所找出的问题主要是“开发具有更高智能特征、更高灵活性并能更友好地与人类进行交互的计算机系统。”;环节2所提出新的思维观念是“将任何一个系统都看成是由若干个具有自主性、交互性、反应性、社会性等特征的Agen构成的,它们能在某一环境下持续发挥作用以实现设计目标。”,环节3是按照新的思维观念来构建软件开发方法的核心部分,虽然目前各种面向Agen软件开发方法百花齐放,但没有形成统一的方法,并且没有一种成熟的面向Agen程序设计语言,所以面向Agen軟件开发方法的核心部分的形成还有很长的路要走。
4结束语
软件开发方法创新发展过程的四个环节体现出了软件开发方法创新发展过程的规律,可以帮助我们加深对软件开发方法的本质的认识,对新的软件开发方法的产生和完善有重要的指导意义。在这四个环节中,最重要的是在于思维观念创地进行思维观念创新,提出新的思维观念,才能为解决问题找到一条道路。按照新的思维观念,研究和解决问题的过程,就是探索和构建新方法的过程,新方法随着解决问题的过程逐渐形成和完善起来。
创新发展的过程是逐步深入、逐渐展开的一个长期过程。新的思维观念的提出、形成和完善要经过很长时间,被人们接受也需要一个较长的过程;按照新的思维观念,探索和构建新方法的过程,是一个渐进的过程,一般是先解决核心问题,然后再全面地展开和完善,所以这个过程所用时间比较长。
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。 返回电子论文列表