刘芳
(太原科技大学,山西 晋城 048011)
“新工科”与传统工科的主要区别在于,“新工科”专业人才不仅需要学业优秀,而且还要具备创新、竞争、实践能力,能够运用新技术解决问题,符合现在新兴产业的发展需求[1,2]。依据上海交通大学余天佐教授对115名软件工程专业的毕业生和14名雇主进行的问卷调查和分析显示,企业对设计中考虑经济的原则位列企业需求的第二位[3]。因此,除了在技术上优秀以外,还要懂得经济方面的知识,成为“新工科”形势下人才培养的要求。
目前国内高校普遍将软件工程经济学融入到软件工程或项目中进行授课或通过开设MOOC的方式进行教学[4,5],虽然将经济学知识与软件工程课程进行了融合,但缺失具体实验课程的理论教学和在线教学难以使学生对枯燥的经济学知识有深刻的认识,也难以应用到实际的项目中。有研究者提出通过案例教学、加强课程知识的专业背景、进行启发式交流和运用辅助工具等方式降低经济学相关知识难度和提升学生兴趣[6,7],虽然可以起到一定效果,但无具体实施方案和标准要求。
随着经济社会和软件工程技术的发展,企业对软件开发中的经济效益需求将变得愈发明显,按照现有大纲和课程设计进行教学,难以满足企业和员工对彼此的预期[8,9]。因此,依据“新工科”对人才培养的理念,将理论教学与实践相结合可有效解决现有软件工程经济学在教学过程中遇到的问题[10,11]。现依据多年从事实验教学工作积累和经验,对软件工程经济学课程进行教学改革和探讨,提出了具体的实验教学方案和实施措施。
软件工程经济学是一门新的学科。它的研究最早起始于美、英国家,并由Boehm 于1981 年出版了专著《软件工程经济学》,我国于1990 年和1991 年相继出版了Boehm 的著作,对软件工程经济学的概念、方法起了宣传作用,在国内的刊物上了陆续发表了一些有关软件成本和定价等策略,但是它的理论与方法尚未为国内软件工程界所熟悉,没有形成系统的理论体系,参考教材以及资料较少,没有成熟的教学案例,资源的匮乏迫切需要形成完善的教学体系,改进纯理论教学方法,提高教学质量。
交叉学科,理论枯燥。该课程和其他学科紧密联系,每个学科都有自己的理论体系,相互独立,不仅需要教师具备各方面的专业素质,还需要学生了解所涉及学科的基础知识,例如资金的时间价值、模糊数学综合评价模型等,知识点比较零散不易掌握,难以形成系统的理论体系,学生逐渐产生厌学情绪。
理论与实践环节教学比例失衡。目前该课程主要是理论教学,缺少实验教学环节,学生通过课堂掌握了知识点,但在实际的应用中,无法将理论与实践相结合,更不能解决软件项目在开发过程中所涉及的经济问题,故引入了实验教学环节,通过动手实践理解理论,从而提高课程的教学质量。
对于软件工程专业的学生来说,缺少经济学相关基础,很难去理解抽象的理论知识。为了弥补传统教学只讲授知识原理的缺点,以及提高学生将课本中枯燥知识转化为应用的能力,本文引入了实验教学,以赵玮编著的教材《软件工程经济学》为基础,设计了对应的实验教学框架表,该框架包含5个实验项目,即软件规模与复杂度度量,资金的时间价值分析,软件成本与工期测算,软件项目方案评价,进度计划中关键路线的分析与求解。通过相关实验的练习,学生会从本质上明白方法的具体实现原理,从而进一步了解软件工程项目所涉及的经济学相关问题,提高使用合理的经济方法对软件项目进行定量分析的能力。具体的实现相关目框架组成如表1所示。
表1 软件工程经济学实验教学框架表
(1)理解软件产品的两大主要属性——规模与复杂性,综合运行软件工程界中影响较大的估算方法,对小型软件项目的规模与复杂性进行度量。
(2)理解资金的时间价值、现金流的贴现与预计,资金只有赋予时间的概念才具有真正的完整价值,根据本地区的产业生产率,分析企业对软件的融资以及还贷方式,以及解决不同投资方案实施效果的比较。
(3)理解软件产品的投入与产出要素之间的联系,特别是软件产品的成本、工期、定价以及技术进步等的估算与关联,具备产品各要素的分析能力。
(4)理解软件项目投资方案评价的分析,从项目的经济效果来剖析项目的可投资性,以及面对多种方案的技术投资方案,选择先进的技术还是保守算法,采用选中的方案能获得多大的经济效果,学生需要具备上述一系列问题的解决能力。
(5)理解软件项目开发进程的管理与控制,通过工作(任务)分解结构(Work Breakdown Structure,WBS),安排每个活动的开始时间和结束时间,分析是否具有一定的机动余地,或者已知工期如何来安排活动起始结束时间,哪些活动的更改会影响工期,学生需具备重点管理与控制关键活动的能力。
实验1:软件规模与复杂性度量实验。根据实验指导书中提供的小型软件源代码、基本信息加权系数以及环境复杂因子性,运用源代码行和功能点法对软件的规模进行度量;运用符号序列来求解程序的符号长度,进而衡量软件的复杂性问题;撰写实验报告,并按时提交给实验指导教师。
实验2:资金的时间价值分析实验。依据实验指导书中提供的相关经济学参数利率、通货膨胀率,按照软件项目的需求,分析在不同偿还方案下进行资金的等值计算(包括现值、终值以及总的金额等),推荐一个软件项目融资的最优方案;撰写实验报告,并按时提交给实验指导教师。
实验3:软件的成本与工期测算、定价实验。按照实验指导书中提供的小型软件项目需求,以及相关的各项类别成本参数,运用功能分解法等至少两种以上的测算方法对该小型软件的成本与工作量进行估算,并对系统成本进行分析,了解成本的分布特点,进而对成本进行控制或降低;结合本地区本行业的工程经济参数,运用完全成本加成定价法确定该软件产品的定价;撰写实验报告,并按时提交给实验指导教师。
实验4:软件项目方案评价实验。根据实验指导书中软件项目的规划与概要设计,运用净现值法、内部收益率法和投资回收期法对软件项目是否投资进行可行性分析;如果该项目值得投资,需要对该项目的工程技术方案运用多方案项目排序算法进行比较与选优;撰写该软件项目投资的具体分析过程和最终选择的技术方案,并按时提交给实验指导教师。
实验5:进度计划中关键线路的分析与求解实验。依据实验指导书中小型软件项目的需求,对该系统进行WBS 分解后对各个项目活动的延续时间或活动时长进行估算,得到活动明细表,将活动明细表转化成计划网络图,然后使用标号算法求解该项目的关键路线CP与活动,只要CP上的各关键活动实施完毕,则其他非关键活动必然应在关键活动结束之前完成,进而更好地管理软件项目的进度;撰写实验报告,并按时提交给实验指导教师。
软件工程经济学是一门理论和实践相结合的课程,成绩是对学生学习状况的量化评定,考核是教学的一个重要环节,仅仅依靠试卷的答案不足以准确地考核学生掌握知识和实践能力的程度。教学改革之前,软件工程经济学课程的学生成绩评定由期末考试成绩和学生的平时成绩共同构成,其中:平时成绩(30%)+期末考试(70%)=该课成绩。根据新工科建设要求,加入实验环节之后,设计采用“课堂表现+实验+期末考试成绩”相结合的考核方式评定学生在这门课程的学习情况。其中,课堂表现占总成绩20%,课堂表现不仅仅是考勤,还包括小组讨论、问答,以及课后的交流等;实验占总成绩的30%,着重体现学生具备进行软件工程技术经济分析的基本能力;期末考试占总成绩的50%,考试也由原来的重视理论知识转变为考察对知识的理解和运用能力。课内实验是课程必须完成的考核项目,每位学生均需按时提交全部的实验报告。软件工程经济学引入实验教学,更好地体现了新工科对软件工程专业学生培养全方位人才的要求,有助于提高学生技术以及经济的实践能力。
软件工程经济学课程首先对教师具有很大的挑战,不仅需要掌握软件工程技术知识,还需要具备很强的经济学功底;其次为了提升软件工程专业本科生的经济以及工程实践能力,根据新工科专业建设需求,本文对软件工程经济学课程引入实验教学框架,探索了理论和实践相结合的教学模式,并从实验要求、实验目的等方面进行了详细的阐述。以工程教育为理念,确定实验教学框架,从低门槛起步、逐步增量提升,培养本科生从经济学角度分析软件项目的能力。课后收集的学生反馈信息表明,软件专业学生对理论和实践相结合的教学方式反应良好,实验教学是提升课程教学质量的一种有效实践方式。
在高校推进新工科建设进程中,本科生工程实践、管理学、经济学能力的培养还需要产业界、社会界与学校的密切合作,共同推进课程的改革。