软件工程与学习工程吴明晖1,2,杨珂21浙江大学城市学院计算机系,浙江杭州,3100152浙江大学计算机学院,浙江杭州,310027摘要本文比较论证了软件工程与学习工程在系统背景、生命周期、思路方法三方面的相似性,为两种工程相互借鉴发展提供了新思路。通过考察软件工程和学习工程的诞生背景,从历时态角度比较了两者的相似性。通过平行列举软件周期和学习周期各对应阶段,介绍了两个系统同时态的相似性。通过列举学习中各种思路方法所对应的软件开发方法,得出软件方法可以向学习方法持续借鉴的结论。关键词软件工程、学习工程、方法论、类比SoftwareEngineeringandStudyEngineeringMinghuiWu1,2,KeYang21Dept.ComputerSci.&Tech.,CityCollege,ZhejiangUniv.,3100152CollegeofComputerSci.&Tech.,ZhejiangUniv.,310027AbstractThispaperprovidesananalogybetweensoftwareengineeringandstudyengineeringinthreesystematicalaspects:background,lifecycleandtechniques.Historicalbackgroundsofthetwosystemsareanalogizedandrelated.Eachphaseofthetwolifecyclesisexaminedinapairtoshowtheirsimilarities.Severalmethodologiesandstrategiesineachsystemareanalogizedtoshowthepossibilityoffurtheringsoftwareengineeringbyreferencingstudymethods.Keywordssoftwareengineering,studyengineering,methodology,analogy引言学习知识的过程作为一个工程,可被称为学习工程。本文以大学学习为学习工程的例子对比了软件工程与学习工程的历史背景、生命周期和思路方法,论证了通过类比两个相似系统来发现新方法的有效性。第一节考察软件工程和学习工程两系统的历史背景和基本原则,论证两系统的历时态相似性。第二节平行描述软件开发周期和学习周期,论证了两周期各对应阶段的同时态相似性第三节描述学习中的多种思路方法,列举软件工程的对应策略,为两系统相互借鉴得到新方法提供了思路。1.历时态比较1.1诞生背景1960年代后期,由于个人程序员的生产力不再能适应大型软件的生产关系,软件系统的复杂性与软件作者个人认知系统的有限性之间的矛盾激化,军用和商用的软件露出危机的端倪。教训总结为[2]:1,项目没有被很好地理解;2,计划不周,最终导致进度拖延;3,没有充分的文档,影响开发,并使交流、维护困难;4,软件可靠性缺少度量的标准,质量无法保证;5,软件难以维护,不易升级;知识的学习过程中,以大学生为例,封闭式个人学习不再能适应知识爆炸时代的要求,造成知识领域的复杂性与学习者认知系统的有限性之间的矛盾激化,诞生学习危机。问题在于:1,关于“大学的任务”没有很好地理解;2,学习计划不周,最终导致进度拖延;3,听课没有记好笔记,影响理解,并使复习困难;4,课后作业未能按时独立完成,学习效果的可靠性缺少度量的标准,无法测试对知识的实用能力,不了解知识缺失在哪里;5,难以将书本知识用到工作中去。1.2基本原理“软件工程[1]”这一术语于1968年在联邦德国正式使用,同时提出运用工程学的基本原理和方法来组织和实施软件生产。B.W.Boehm[2]在1983年提出确保软件质量和效率的7条最小原理集合:分阶段管理;阶段评审;基线配置;先进的程序设计技术;结果应能清楚地审查;开发人员少而精;承认不断改进软件工程实践的必要性。以一门大学课程的学习为例来类比这些原则,Boehm的7条原理的含义是:分阶段安排学习;要有单元测验或自测;要持之以恒;要用最先进的学习工具(如电脑和网络);学习效果应能清楚地让老师和自己审查;学习小组应小而精(如导师不能招收过多研究生);承认不断改进学习方法的必要性。1.3联系与区别软件科学家们经过不断实践得出的结论是:按工程化的原则和方法组织软件开发工作是有效的,也是摆脱软件危机的一个主要出路。在知识学习方面,国家也采取了工程化的方式,将科学家个人创新限制在团队科研的空间里。工程是物理世界与人类内心体验的桥梁,是自然科学和人文科学的中介,是客观与主观的翻译者。软件工程起于认知活动,终于比特流,它本质是工程,却与传统工程有很大不同它不是纯粹精神活动,却接近精神活动。一方面,与造船、...