程序设计的软件架构探索

时间:2022-09-30 04:28:09

程序设计的软件架构探索

作者:王海舜 蒋巍巍 刘师少 单位:浙江中医药大学信息技术学院

1依据课程内在联系

构建软件设计系列课程群构成学生程序设计能力的计算思维、算法设计、程序设计与实现和系统分析能力四个基本要素,关键是提高计算思维、抽象思维、逻辑思维的能力,一两门孤立的语言或算法课程无法完成,这需要从系统工程的角度进行整体设计,组合相关的系列课程构成相应的教学和实践系统,并有一个循序渐进的深入过程,这一过程一般需要经过知识的积累、程序设计课程学习、软件开发实践等不同的环节,也就是要经历启蒙入门,发展提高和开发应用三个阶段[2]。通过贯穿大学四年的程序设计类课程的学习,学生在程序设计启蒙入门、发展提高和开发应用的不同阶段都能够很好地达到各个阶段的教学要求,形成良好的学习习惯,循序渐进、潜移默化地养成程序设计能力。因此,依据程序设计能力不同培养阶段的教学规律,我们应选择对学生程序设计能力培养有着关键作用的课程组成软件设计类课程群,课程群的主要课程可由以下课程组成。1)启蒙入门阶段:计算机导论、程序设计基础、面向对象程序设计等。2)发展提高阶段:数据结构、面向对象程序设计、计算方法、数据库基础、软件工程、Java程序设计等。3)开发应用阶段:网络程序设计、数据库开发实践、医学信息学、信息系统设计、医学图象处理等。建设课程群的目的是把原本相对独立的课程在教学过程中有机融合,前后课程互相呼应,逐步深化,把学生引入门。在课程群内涵建设中,按“点—线—面—体”的思路构建课程群框架,即以每门课程的主要知识点为基础,把程序设计类主干课程串成前后有机衔接的教学“线”,在课程群的“面”上构建课内外相关的任务驱动学习激励机制,最终形成软件设计课程群的体系结构和系统化的程序设计类课程教学框架[4]。在具体实践中,从分析课程群每门课程的知识点入手,从知识点内涵、教学要求、教学策略以及与前驱知识点和后续知识点关系等多个维度建立课程群中课程的知识架构的点、线关系,进而形成相关课程知识点前驱、后续知识点互相融合汇聚的知识面和课程体系。在此基础上通过完善相关课程教学大纲,达到目标明确、层次分明、定位正确、强化基础、拓宽专业知识面的应用型人才培养的要求。

2建立基于混合式学习的程序设计课程群教学模式

混合式学习(BlendingLearning)将传统的课堂学习方式和数字化学习方式有机整合,根据程序设计能力培养的启蒙入门、发展提高和开发应用不同阶段教学特点,围绕程序设计能力的“算法设计与分析能力、程序设计与实现能力和系统分析、开发能力”的递进培养目标,从混合式学习课程导入机制、多元化的程序设计课程活动组织策略、课内外学习支持以及教学评价等四个教学环节,从启蒙入门、发展提高、开发应用不同阶段组织开展混合式学习[5-7]。2.1启蒙入门阶段从程序设计能力入门训练入手,其重点在算法设计与分析能力的培养。针对大一、大二学生程序设计启蒙课程主要有计算机导论、程序设计基础等;教学围绕基本知识点训练编程思路、算法设计与分析方法,引导学生入门;教学活动组织中侧重于以班集体为单位的理论和实验教学,同时结合程序设计竞赛、课程设计、大作业等开展课外编程学习;建立BB平台、开发上线ZCMUOJ(ZhejiangChineseMedicalUniversityOnlinejudge:浙江中医药大学在线编译)系统,使之成为程序设计阶段课外学习平台,把师生面对面及借助网络和BB平台的辅导相结合,通过检查平时程序设计作业完成情况和程序代码数量和质量,以及期末的现场程序设计实验考试,进行学习成绩综合评价。2.2发展提高阶段发展提高阶段重点在程序设计与实现能力培养,从软件工程的角度,研究从程序设计到软件设计能力培养。本阶段主要是针对大二、大三学生,主要课程有数据结构、面向对象程序设计、计算方法、数据库基础、软件工程等;该阶段的教学侧重在程序设计的综合性、整体性素养培养,综合相关课程设计任务,以设计性、综合性实验为主,重点围绕软件开发的完整流程开展实践,强调团队分工与协作;以小组协作方式为主,根据各课程知识间的依赖特性从课程群的角度组织开展课程设计与假期实践;同时,强化软件集成开发环境(如VisualStudioTeamSystem、Eclipse等),版本控制工具(如CVS等)等协同开发环境的应用;教师的角色也随之从“教”师变为“导”师,提供实践思路与方法的指导,引导小组成员协作学习、角色扮演、讨论交流;教学评价侧重于程序开发、文档撰写、软件评测、团队协作等多个角度,通过小组自评、组间互评与教师评价等方式综合考量。2.3开发应用阶段开发应用阶段重点在系统分析、开发能力培养,软件团队合作开发训练,基于常用团队协作软件开发平台的软件开发训练。针对大三、大四学生结合计算机应用领域,特别是我校医学领域信息开发的优势,从医学信息学的角度,开展跨学科的医疗卫生信息化项目开发实践。该阶段课程群主要课程有医学信息学、信息系统设计、Java程序设计、网络程序设计、数据库开发实践、医学数字图象处理等;该阶段以项目实训、企业实践为主,重点围绕医学信息工程软件开发、网络管理软件、数据库管理软件开发等以及软件测试等多种角色开展教学;以团队分工协作的方式开展课程设计、项目实训和科研项目开发,并与相关卫生信息化企业合作开展企业实践,组织学生参与医院信息化项目研发;由相关教师组成导师组,以客户经理、项目经理等角色给予项目团队方向、思路、策略的指导,教师参与并鼓励学生借助网络等相关资源共同研究解决完善相关问题;通过项目答辩的形式检查实训成果。

3以任务驱动的课内外程序设计推进机制

程序设计能力的培养,仅靠课内的教学是远远不够的,需要建立完善的课外程序设计学习机制,激发学生学习积极性和学习潜力,为此,我们主要采取程序设计类课程布置的课外大作业、课程设计任务以及参与教师实际科研项目开发等多种途径来驱动学生的课外参与程序设计能力训练,同时建立多种形式的验收讲评和评价激励机制,任务驱动与激励机制的结合是引导学生课外开展程序设计一种有效措施[8]。3.1启蒙入门阶段以程序设计竞赛为抓手在低年级学生的程序设计能力启蒙入门阶段,以实施课外程序设计竞赛为抓手,从程序设计能力培养与训练入手,根据程序设计能力的教学规律,建立不同难度、不同层次的课外程序设计训练和竞赛为主的学习激励机制;设计开发适合我校学生特点的ZCMUOJ系统,使之成为学生参与程序设计的主要学习支持平台。为了吸引同学参与课外程序设计,我们建立了周赛、月赛、学期比赛以及单挑赛等多种形式的程序设计竞赛机制,刺激学生的参与兴趣。平均每周组织一次程序设计周赛,每月组织一次个人单挑赛和团体月赛,每学年分别组织学院比赛和学校比赛,参与人员覆盖了计算机专业一二年级70%学生。以程序设计竞赛为主要抓手的程序设计能力培养使学生程序设计能力明显提高,低年级学生完成课程设计的编程难度和代码数量明显提高,学习程序设计的兴趣明显上升,特别是在ACM比赛中,我校2011年浙江省ACM程序设计竞赛中获铜奖三项;2011年4月,我校在ACM-ICPC亚洲赛区晋级赛福州站比赛中获铜奖1项,学校排名25位;在2011年9月第36届ACM-ICPC国际大学生程序设计竞赛亚洲区预赛大连站比赛中获铜奖1项。3.2发展提高阶段以课程设计为抓手大二和大三学生已初步掌握程序设计基础,需要提高发展程序设计能力,突出软件工程角度的软件工程化开发能力的培养。软件团队合作开发训练采用企业通用的集成开发环境和软件版本控制工具进行软件开发训练。此阶段主要采取相关课程的课程设计和二年级小学期的集中课程设计等多种形式实现程序设计。例如在“数据库开发”课程中,采用案例教学,启发学生开展课程设计,通过剖析数据库开发案例,详细展开需求分析、模型设计、程序设计、程序测试以及系统等各个环节的实现方法,引导学生从单一程序设计到较为复杂的软件系统开发的过渡,培养学生软件工程素养和软件开发能力。3.3开发应用阶段以项目开发为抓手大三和大四学生已经掌握了软件开发的基础,但需要更多的实际项目开发实践,以便迅速提高软件开发能力。对此,我们采取课程教学中的模拟项目开发和实际软件项目开发相结合的激励机制。针对全体学生,在后续的医学信息学、信息系统设计等课程中开展模拟软件工程开发全过程的程序设计。例如在医学信息学课程教学中,把完成一个医院信息系统子模块设计开发作为贯穿于整个教学过程的任务,要求人人都参与项目开发,并且要用软件工程的方法来实现项目开发。以班级为单位,开发医院信息系统的一个子系统,模拟实际项目开发,分层管理,班级设立项目经理和技术总监,负责项目实施管理和技术管理,3至4人为一组,设立项目组长,负责项目模块的开发,要求每组完成需求、概要设计、详细设计和软件测试四个文档,并且结合医院信息系统参观调研,完善需求分析和设计。通过课程设计,尝试对软件设计全过程,特别是软件开发团队的合作,这对提高同学们软件设计能力有很大的帮助。同时,在课程设计成果考核评价中,我们让项目团队中每个人上台宣讲自己所做的工作、演示系统,学生代表评分与教师评分相结合。自2005年级至2008年级,共五届490名计算机专业的学生参加医学信息学课程设计,共完成22个门诊或住院子系统,100个子模块。同时,通过公开招募考试等形式,召集一些软件开发能力较强或学习能力较好的学生参加寒暑假教师的实际科研项目开发,并使之形成班级软件开发的骨干力量,进一步带动整个班级的软件开发氛围。

4结语

在实践中,我们认识到程序设计能力培养是一个从启蒙入门、发展提高到形成综合软件开发能力的循序渐进过程,在程序设计能力培养实践中,我们根据程序设计能力培养的教学规律,依据课程内在联系构建软件设计类课程群架构,针对各个不同阶段,制定培养对策,采取网络混合式学习、任务驱动、竞赛激励等多种形式的教学策略,特别是注重营造学习程序设计的氛围,激发学生主动学习的激情,在教学实践中取得了较好的效果。

上一篇:地位系统软件设计阐述 下一篇:工程安全专项施工计划中的计算机应用