- 讲师:刘萍萍 / 谢楠
- 课时:160h
- 价格 4580 元
特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关
配套通关班送国网在线题库一套
摘 要:基于一般系统论和工程系统论以及软件工程的特点提出了建立软件工程系统论的设想,并就软件工程系统论的研究意义、学科性质与体系、研究内容、研究方法等问题进行了初步探讨。工程系统论以各种各样的工程系统为其研究目标,其方法论体系适用于软件工程。创立软件工程系统论的科学体系及理论框架有助于切实贯彻系统科学和工程系统的基本思想,提升软件工程的研究起点,促进软件工程应用基础研究的系统化、严谨化和科学化。按照工程系统论提出的分类研究方法,可将软件工程系统初步分解为软件工程对象系统、软件工程过程系统、软件工程技术系统、软件工程支持系统、软件工程组织系统、软件工程管理系统等6大子系统。
关键词:一般系统论;工程系统论;软件工程系统论;软件工程引言
以克服"软件危机"为契机而提出的软件工程自20世纪六七十年代创立以来,经过30多年的发展,已经形成为一门独立的学科。软件工程的发展面临两大问题:一是现有的理论研究成果与实践相脱节;二是软件工程的发展趋势要求在集成和发展现有的理论和方法的基础上继续深入研究其支撑理论体系,并建立新的理论基础,从新的角度研究软件工程的开发过程和方法。如果能把一般系统论和工程系统论的原理和方法应用到软件工程学的研究中来,建立软件工程系统论的科学体系、理论框架和方法论,无疑能促进上述两大难题的解决。
1 工程系统论简介20世纪90年代,我国科学家在一般系统论的约束和指导下创立了一门工程元科学-工程系统论。工程系统论是关于工程系统共同规律的理论,是一般系统论与工程实践相结合的产物,它适用于所有领域的所有工程。严格意义上的"工程"是指以某组设想的目标为依据,应用有关的科学知识和技术手段通过一群人的有组织活动,将某些(某个)现有实体(自然的或人造的)转化为具有预期使用价值的物质产品的过程。工程活动应包括9个基本要素,即用户、目标、资源、行动者、方法与技术、过程、时间、活动、环境。除环境要素外的8个要素不仅存在于一个工程框架或边界之内,而且还相互紧密地联系和作用着,组成一个整体或全局。这个整体或全局我们就把它称之为工程系统。
工程系统论以各种各样的工程系统为其研究目标,并力图寻找和概括在所有工程系统中存在的共同规律。在系统科学的整个学科体系中,工程系统论是一门中间层次的学科。相对一般系统论,它和生物系统论、社会系统论是一门派生科学,即它的全部概念、原理和方法论都受一般系统论的约束;相对于作为特定工程领域(如航天工程、电子工程、信息工程等等)理论基础的具体工程系统论,它则是一门工程元科学,即它是一门可以谈论所有具体工程系统论学科的综合学科。工程系统论的这种中间层次的学科性质,既使它为丰富和发展一般系统论提供着新的认识和结论,又使它为具体工程系统论的创立和发展开辟了广阔的前景。这里的具体工程系统论就应该包含软件工程系统论。工程系统论吸取了系统科学的思想,辅以自组织理论和系统辨证的思想,站在更高层次上对复杂、实用性的人工系统进行方法论指导。工程系统论有可能突破系统工程技术的局限性,从而在更加宽广的时空跨度内控制人工系统的生成、发展与进化。
由于工程系统论并没有摒弃系统工程等学科中成功有效的技术方法、途径和措施,而且增加了顶层的指导,所以这种更加普适性和更加宏观的方法论体系应用于诸如软件工程一类复杂人工系统具有勃勃生机和广阔的应用前景。开展软件工程系统论的研究势在必行软件工程是指导计算机软件开发与维护的工程学科。软件工程的开发过程体现了软件项目生命周期的系统性、阶段性和复杂性。国外学者对软件工程的研究自20世纪六、七十年代就开始了,研究的主线是软件工程的基本原理和方法学,包括过程与模型、方法和技术、工具和环境、标准和规范等,陆续提出了许多着名的软件开发方法,如结构化方法、形式化方法、面向对象方法、基于构件的方法、基于代理的方法、净室方法、敏捷方法、人工智能方法等等。尽管这些方法存在着这样那样的问题,但无疑对软件开发技术的进步和软件工程的发展起到了重要的推动作用。
现代计算机的理论基础是图灵机模型和相应的冯-诺依曼体系结构。图灵机的想法是把问题转化为一步一步按规则执行的机械求解过程,各种计算机语言也不过都是表现这种思想的某种形式语言。因此软件开发的过程实质上就是程序员们对所求解问题域的形式化过程。程序员们先分析求解问题的特征,建立求解模型和基本算法,然后用某种程序设计语言进行描述,最后进行计算获得结果。由于对冯-诺依曼计算机顺序执行的实现过程的认识和人们理解与表达过程间存在着巨大差异,加上程序员把目光都集中在如何实现、如何编程上,认识的偏颇和思维的惯性导致对软件工程系统理解和认识不足。人们往往习惯于用非系统思维的方式来指导软件工程设计和管理,造成一些非系统、非整体的设计结果。譬如,只注意软件工程各个阶段的流程和步骤,忽视了整个"工程系统"的特点;只注意局部阶段和局部过程而忽视整体;强调程序模块和过程的优化设计,忽略了系统体系结构分析和全局优化;在工程开发的各个阶段缺乏有效的协调和良好的沟通,造成需求分析与系统架构、系统设计与代码实现、软件测试与软件设计以及上游阶段与下游阶段等方面的许多矛盾;软件本身的特点使其在工程开发过程中容易形成各自为战、少有沟通的局面。尤其是大型软件工程项目分工细、层次多、时间紧,更容易人为地把一个完整的系统分割成互不相关的若干个系统,很难从总体上把握工程的系统性和整体性。
国外学者较早地注意到系统工程方法在软件工程中的应用。作为软件工程领域早期的一流人物,W in2stonW.Royce博士在20世纪80年代早期首次引入了"软件系统工程"一词[5]。他们认为,缺乏系统工程方法的项目,很可能导致软件不能在所选的硬件上运行,软件不能与硬件和其他软件系统集成,软件不适于长期使用。在产品开发中,疏忽系统方面的工作,将会加剧长期没有解决的软件危机。美国学者Mark J.Chris2tensen和Richard H.Thayer在文献[5]第8页中更是明确地提出了"软件系统工程"一说。他们指出,"软件系统工程像系统工程一样,是一个技术和管理过程"。"软件系统工程不是具体一项任务的描述-它是一个过程、一种理念,当在最高层实施软件工程时,应采用这一过程和这一理念。"在分析软件系统工程与软件工程的关系时,他们进一步指出,"在软件开发的初级阶段,软件系统工程功能负责软件需求分析和体系结构设计。软件系统工程还负责软件系统的最终测试以及系统功能的发布"。显然,他们把软件系统工程视为软件工程的一个子集和软件工程过程的一部分。
由于研究的角度和目标不一样,他们提出的"软件系统工程"与本文提出的"软件工程系统"并不是一回事,但已经在一定程度上体现了系统论的思想。国内外还有众多学者从事软件工程开发方法的研究。例如,Wooldridget等提出了面向主体分析和设计的GAIA方法;Wood等倡导用多主体系统工程方法MASE和MAS-Commonkads;高翔等人研究了应用角色模型的面向主体的软件设计方法[7];张志军等人提出了基于软系统方法的开发技术[8];冯栅等发表了基于智能体系统的软件工程方法等。
上述方法都是从具体工程方法的角度来关注和研究软件工程过程中面临的一些问题。即使是美国学者谈论的"软件系统工程"概念,并没有完全把系统论的思想和方法贯穿于软件工程的全过程(只是部分阶段),更没有涉及工程系统的概念或应用工程系统论的思想来考察和研究软件工程科学体系。从文献资料检索和互联网搜索情况看,迄今为止,未发现国内外有把工程系统论应用到软件工程的理论与方法研究的报道。
网络技术和开发工具的显着进步带来了软件开发环境的极大改变,同时也影响到人们的时空观念、软件提供方式和生命周期的概念。程序设计方法已从面向数据流、面向数据结构和面向过程的方法进化到面向对象的程序设计方法,目前正在向面向角色的程序设计方法演进。角色技术的各部分各有侧重且相互协调,强调以规范自然的方法分析描述即将开发的系统,使开发人员和领域专家能建立有效沟通以提高开发效率。这种从系统的角度分析解决问题的方式符合工程系统论的思维特性,因而适宜于大型复杂系统的开发。
现代软件工程的不断发展及其重要性要求提供理论支持;"软件危机"的继续存在也呼唤着一种有效的工程理论武器,不仅要研究新的开发工具和开发过程,最重要的是要集成新的研究领域和技术,用新的方法论来指导软件工程的发展。因此,根据一般系统论和工程系统论的原理与方法分析研究软件工程系统的基本规律和内在性状,进而创立软件工程系统论的科学体系、理论框架和基本方法势在必行,确有必要。由于这是一种全新角度的研究,不仅有助于切实贯彻系统科学和工程系统的基本思想,提升软件工程的研究起点,加强软件工程应用基础研究的系统化、严谨化和科学化,而且对其他信息工程学科的发展也有着重要的参考意义。
3 软件工程系统论的学科地位、研究内容及可行性在系统科学的庞大学科体系中,软件工程系统论居一般系统论和工程系统论之下,是一般系统论和工程系统论在软件工程领域的具体应用,即它的全部概念、原理和方法论都受二者的指导和约束。但相对于电子工程系统、航天工程系统、土建工程系统等,它们之间是平级的关系,在应用中可能有交叉。例如,在航天工程系统和电子工程系统中肯定有软件工程系统论的应用。按照工程系统论提出的分类研究方法,可将软件工程系统初步分解为软件工程对象系统、软件工程过程系统、软件工程技术系统、软件工程支持系统、软件工程组织系统、软件工程管理系统等6大子系统,而这些软件工程系统的原理与方法又蕴涵在诸如需求工程、架构工程、过程工程、可靠性工程、测试工程、领域工程、构件工程、集成工程、性能工程、再生工程、质量工程、反推工程等具体的工程项目应用之中。
软件工程系统论的学科性质与体系通过下图可反映出来。软件工程系统论的学科体系图开展软件工程系统论研究,作者认为应包括以下基本内容:
1)软件工程系统的一般结构:软件工程系统环境、结构、状态和行为间的固有关系及作用规律;系统基本组成部分及特性,这些成分在空间、时间和功能上的联结性状和规律,系统最小和最有效的配置成分;系统复杂性的根源、演变规律、基本类型、处理或控制这些复杂性的可能和有效的途径及其系统的完整性保护等问题。
2)软件工程系统的层次结构:软件工程系统中的层次划分和联系方式;系统基层次及特性;层次间的协调性与平衡性、层次的相对性与无限性问题。
3)软件工程系统的复合性与协调性:软件工程系统的复合性内涵、复合因子分析、复合分类与复合过程状态;复合状态的协调性特征、协调的协同学特征;对系统进行适应性协调的目标、特征、方法;协调器及其协调度的衡量。
4)软件工程系统的突现性:软件工程系统的突现性特征及表现;获得突现性的条件;系统相互关联部分对整体突现性的作用;突现性刻划;环境对软件工程系统的突现性有无影响。
5)软件工程系统的有序性与无序性:软件工程系统有序性和无序性的特征、表现和发生原因;无序性向有序性转化的动力、条件与衡量。
6)软件工程系统范式:软件工程系统是否存在一般范式,如果存在,这种范式的模型和适应范围;范式的标准、分类与基本构成要素。
7)软件工程系统的信息观:信息在软件工程系统中的地位与作用;软件工程系统信息的范畴、基本特征与度量问题;软件工程系统的信息分析、加工、处理和管理方法;随机性信息、模糊性信息、未确知性信息的分析与处理;信息反馈及其对系统稳定性的影响。
8)软件工程系统的全局优化:软件工程系统的全局优化与部分优化的内涵与关系;全局优化的特征、分类、方法;全局优化效果评价。
应用一般系统论和工程系统论研究软件工程系统在国内外尚属空白,这方面的研究领域很宽。把该项研究工作做好的话,既可以丰富和发展工程系统论的理论与实践,又可能在这一领域开拓出新的分支学科理论-软件工程系统论。
首先,软件工程与系统科学有着千丝万缕的联系。软件工程的理论基础主要是系统数学模型、系统设计和开发方法。软件工程的技术和方法贯穿着系统科学的基本思想。软件工程中的一些重要系统方法,如结构化方法、面向对象方法等都沿用了系统科学的思想方法。软件工程的核心思想是把软件产品看作是一个工程产品来处理。把需求计划、可行性研究、工程审核和质量监督等工程化的概念引入到软件生产当中,以期达到工程项目的三个基本要素:进度、经费和质量目标。因此,在软件工程研究中引入工程系统论的原理和方法完全可行。
其次,软件工程是一种大型的复杂人工系统,其开发过程具有酝酿、设计、研制周期长,牵涉相关学科和业务知识面宽,要求指标体系庞杂,设计和组织管理任务繁重,受经济投入、运作机制、人员素质、运行环境等诸多因素影响等特征,客观上迫切要求应用工程系统论的科学思想对其进行分析综合、设计管理及评价,给出一些普遍性的分析问题、解决问题的原则、思路和方法,把握事物内在的客观规律,以提高系统开发的设计和运行水平。
再次,经过二、三十年的推广应用,系统论的学说和思想在软件工程领域得到了较好的体现和应用,软件工程的原理和方法也逐渐为人们所熟知,国内从事软件工程研究和开发的队伍日益壮大,他们大多具备扎实的理论基础知识和丰富的科研实践背景,尤为宝贵的是软件工程业界蕴藏着非常丰富的工程实践材料能为理论研究提供许多有益的工程案例(包括成功的和失败的)。因此,软件工程系统论的研究和建立基本上不存在理论障碍和技术瓶颈。
4 结语综上所述,采用工程系统论来研究软件工程及其开发过程中遇到的理论和实践问题,具有重要的学术理论意义和实际意义。但是,欲建立软件工程系统论,任务非常艰巨,面临的困难不少。和土木、水利等工程大为不同的是,软件工程源自计算机科学,所研究的系统主要是离散系统而不是连续系统。一旦系统出现轻微改变时,离散系统可能会出现非常大的反差,这是软件工程系统比起其他工程系统的稳定性通常要差的重要原因。另外,软件工程是高知识、高智力型的工程,实现高度系统化和规范化管理的难度非常大。对软件工程的管理不仅需要对计算机软件技术的精通,还需要高超的协调能力和管理人才资源的艺术。所以软件工程的系统化、规范化、产业化比其他任何工程都有更长的路要走。
参考文献:
[1] 王连成.工程系统论[M].北京:中国宇航出版社, 2002,100.
[2] 王连成.工程、工程系统、工程系统论与工程科学体系[J].中国工程科学, 2001, 3(6): 15-18.
[3] 王连成.工程系统论[M].北京:中国宇航出版社, 2002,103.
[4] 罗森林.工程系统论的一些探讨[J].系统工程与电子技术, 2000, 22(6): 1-5.
[5] Mark J.Christensen,RichardH.Thayer. The ProjectManag2er′sGuide to SoftwareEngineering′sBestPractices [M].王立福等译,北京:电子工业出版社, 2004, 8.
[6] Mark J.Christensen,RichardH.Thayer. The ProjectManag2er′sGuide to SoftwareEngineering′sBestPractices [M].王立福等译,北京:电子工业出版社, 2004, 11.
[7] 高翔,王辉,赵志昆,等.基于角色模型软件工程方法的MOPSS分析与设计[ J].微型机与应用, 2002, 11, 46-48.
[8] 张志军.基于软系统方法论(SSM)的MIS开发方法[J].
微机发展, 1996, 3, 41-45.
[9] 冯栅,唐超,闵恩.创建智能体系统的软件工程方法研究[J].系统工程与电子技术, 2002, 24(12): 96-99.
责编:古斯琪
课程专业名称 |
讲师 |
课时 |
查看课程 |
---|
课程专业名称 |
讲师 |
课时 |
查看课程 |
---|
点击加载更多评论>>