摘 要:針對學生思維能力和解決實際問題能力弱的問題,分析了軟件工程課程的基本知識點和計算思維能力點之間的關聯(lián),探討了軟件工程教學過程中,有意識、有計劃地進行計算思維能力培養(yǎng)的策略和方法。
關鍵詞:軟件工程;計算思維;能力培養(yǎng)
中圖分類號:TP311.5 文獻標識碼:A
Abstract:For the student's inability of thinking and solving practical problems,the paper analyzes the relevance between the basic knowledge in the software engineering course and computational thinking ability,and discusses the methods and strategies of training computational thinking ability during the software engineering teaching process.
Keywords:software engineering;computational thinking;ability training
1 引言(Introduction)
在當前軟件產(chǎn)業(yè)迅猛發(fā)展的形勢下,社會和企業(yè)對軟件人才的要求越來越高,不僅要求畢業(yè)生有扎實的專業(yè)基礎知識,還要有解決實際問題的思維能力和創(chuàng)新能力。但是,大多數(shù)畢業(yè)生走向工作崗位后存在理論與實踐結(jié)合能力較弱和綜合應用知識能力欠缺問題[1],對實際問題的求解沒有清晰的思路,不能在短時間內(nèi)勝任企業(yè)的工作。因此,我們應重視和加強培養(yǎng)學生解決現(xiàn)實問題的思維能力和綜合應用知識的創(chuàng)新能力。
《高等學校計算機科學與技術(shù)專業(yè)人才專業(yè)能力構(gòu)成與培養(yǎng)》中指出,計算機專業(yè)人才的專業(yè)基本能力主要包括計算思維能力、算法設計與分析能力、程序設計與實現(xiàn)能力、系統(tǒng)能力[2]。其中計算思維能力是至關重要的,良好的思維能力是取得成功求解問題的關鍵。本文結(jié)合軟件工程課程的特點,重點探討培養(yǎng)學生計算思維能力的問題,分析軟件工程課程知識點與計算思維能力點之間的對應關系,研究如何在軟件工程課程的教學過程中滲透計算思維方法,通過理論教學和實踐教學培養(yǎng)學生的計算思維能力,進而提高學生解決實際問題的能力。
2 計算思維、計算思維能力(Computational thinking,computational thinking ability)
計算思維是運用計算機科學的基礎概念去求解問題、設計系統(tǒng)和理解人類的行為,它包括了涵蓋計算機科學之廣度的一系列思維活動[3]。計算思維是利用計算機解決實際問題的思維方法,它的本質(zhì)是抽象(Abstract)和自動化(Automation)。典型的計算思維包括一系列廣泛的計算機科學的思維方法:遞歸、抽象、分解、關注點分離、約簡、迭代、預置和緩存、保護、冗余、容錯、回溯、糾錯和恢復等等。
計算思維能力是指人們運用計算思維方法思考的能力。對于計算機專業(yè)人才的培養(yǎng),計算思維能力主要包括問題及問題求解過程的符號表示、邏輯思維與抽象思維、形式化證明、建立模型、實現(xiàn)類計算和模型計算、利用計算機技術(shù)等[2]。這些能力的培養(yǎng)需要以課程知識為載體,在教師有意識、有計劃的引導下,在不斷的實踐過程中實施[4]。
3 軟件工程課程知識點與計算思維能力點的關聯(lián) (The relationship between knowledge points of software engineering courses and the ability of computational thinking)
軟件工程是研究軟件開發(fā)和軟件管理的一門工程學科,它主要包括技術(shù)和管理兩方面的內(nèi)容。在新建本科院校的計算機類專業(yè),軟件工程課程重點講授軟件技術(shù)方面的知識,包括軟件工程基本概念、基本原理和基本方法,強調(diào)應用計算機技術(shù)解決實際問題的方法和步驟,使學生掌握軟件開發(fā)各個階段規(guī)范的方法、工具和過程[5]。軟件工程知識體系主要有結(jié)構(gòu)化方法和面向?qū)ο蠓椒▋纱蟛糠郑旅嬷攸c分析兩種軟件開發(fā)方法涉及的主要知識點與計算思維方法、計算思維能力點的關聯(lián)。
3.1 結(jié)構(gòu)化軟件開發(fā)方法
結(jié)構(gòu)化軟件開發(fā)方法的主要過程是:結(jié)構(gòu)化需求分析(SA)、結(jié)構(gòu)化設計(SD)、結(jié)構(gòu)化編碼測試(SP),其主要特點是按功能分解系統(tǒng),自頂向下逐步分解,將一個復雜系統(tǒng)分解為簡單子系統(tǒng),每個階段都要遵循規(guī)范的方法和步驟,通過嚴格的評審后才能開始下個階段的工作。各個階段的主要知識點為與計算思維能力點的對應如表1所示。
在結(jié)構(gòu)化方法開發(fā)軟件過程中,涉及大量的計算思維方法:在需求分析階段,對實際問題進行簡化、抽取問題的本質(zhì),用到約簡、抽象方法;在概要設計階段,將復雜問題分解為若干個簡單問題,用到關注點分離方法;數(shù)據(jù)庫設計用到抽象和分解的方法;在調(diào)試程序的過程中,從發(fā)現(xiàn)錯誤的地方,沿程序的控制流往回追蹤分析程序代碼,直到找到錯誤,用到回溯方法等等。在開發(fā)軟件的實踐過程中,能夠有效訓練學生的計算思維能力。例如:需求分析階段的數(shù)據(jù)流圖、實體關系圖、狀態(tài)轉(zhuǎn)換圖,設計階段的層次結(jié)構(gòu)圖、算法流程圖,編碼階段的程序代碼都是分析問題和求解問題的符號表示,分析和設計的過程就是邏輯思維與抽象思維的過程,需求分析過程就是建立模型的過程等等。由此可見,軟件工程的知識點與計算思維的能力點是密切關聯(lián)的。
3.2 面向?qū)ο筌浖_發(fā)方法
面向?qū)ο筌浖_發(fā)方法的主要過程是:面向?qū)ο笮枨蠓治觯∣OA)、面向?qū)ο笙到y(tǒng)設計(OOD)、面向?qū)ο缶幋a測試(OOP)。與結(jié)構(gòu)化方法相比,面向?qū)ο蠓椒ǖ奶攸c是按對象和類分解系統(tǒng),更符合人類認識問題和解決問題的方法和過程。其主要知識點與計算思維能力點的關聯(lián)如表2所示:
面向?qū)ο蟮男枨蠓治鲞^程是建立對象模型、用例模型和動態(tài)模型的過程,對象分析過程是一個典型的抽象過程;功能分析將系統(tǒng)抽象和分解為若干個用例,是抽象和分解、關注點分離方法的典型應用;面向?qū)ο蟮脑O計和實現(xiàn)是在需求分析的基礎上多次反復迭代的演化過程,對各個子系統(tǒng)的設計也用到抽象和分解、關注點分離方法。這些計算思維方法的應用對應著問題求解過程的符號表示、邏輯思維與抽象思維、建立模型、實現(xiàn)類計算和模型計算、利用計算機技術(shù)等計算思維能力點。在面向?qū)ο蠓椒ㄩ_發(fā)軟件過程中,應用到大量的計算思維方法,有效的教學過程能夠讓學生理解、應用計算思維方法,達到訓練學生計算思維能力的目的。
4 培養(yǎng)計算思維能力的策略和方法(The strategies and methods of developing computational thinking ability)
以軟件工程課程知識點為載體,將計算思維訓練融合在教學的各個環(huán)節(jié)當中,重點從意識、理解、實踐三個層次入手,循序漸進的提高學生應用計算思維方法解決實際問題的能力。
4.1 有意識的教學方法讓學生認識到計算思維的重要性
從我們有關計算思維調(diào)研結(jié)果來看,大部分學生不了解計算思維的概念,在分析問題和解決實際問題的過程中,不會應用計算思維方法,即使用到一些計算思維方法也是無意識的。因此,在課堂教學和實踐教學過程中,要充分發(fā)揮教師的主導作用,教師要將課程知識與實際問題緊密結(jié)合,激發(fā)學生學習興趣,通過實際案例有意識地、系統(tǒng)地講解計算思維的方法,讓學生認識到計算思維方法在求解實際問題中的重要地位。
4.2 案例教學讓學生理解計算思維方法的應用
在教學過程中,選擇一個學生比較熟悉的應用系統(tǒng),如學生成績管理系統(tǒng)、圖書管理系統(tǒng)等,以這個系統(tǒng)的開發(fā)過程貫穿教學始終,有計劃、有意識地講解計算思維方法在系統(tǒng)開發(fā)各個階段的應用,讓學生領悟計算思維方法,理解計算思維方法在實際問題中的應用,通過需求分析訓練學生的抽象思維和建立模型能力,通過系統(tǒng)設計、算法設計訓練學生的邏輯思維能力,通過編寫程序訓練學生用符號表示問題及問題求解過程的能力,通過對實際項目的分析,讓學生理解利用計算機求解問題的典型方法和過程。
4.3 實踐教學讓學生在實踐中應用計算思維方法
軟件工程課程是一門實踐性很強的課程,課程本身實踐環(huán)節(jié)可分為課程實驗和課程設計兩部分。課堂上的案例教學讓學生建立計算思維的意識,理解計算思維在實際問題中的應用,課程實驗就要讓學生以小組的形式模擬案例開發(fā)一個簡單的系統(tǒng),小組成員分工合作,應用計算思維方法完成需求分析、系統(tǒng)設計、編碼測試過程,實現(xiàn)系統(tǒng)的主要功能。課程設計是在課程結(jié)束后進行的綜合性的實踐環(huán)節(jié),訓練學生綜合應用知識的能力、應用計算思維解決實際問題的能力和團隊合作能力等。
此外,通過實習實訓、畢業(yè)設計等綜合性的實踐環(huán)節(jié),通過大學生創(chuàng)新創(chuàng)業(yè)項目、程序設計大賽等活動,進一步強化、提升學生的計算思維能力。
5 結(jié)論(Conclusion)
計算思維能力的培養(yǎng)不可能通過一門課程完成,需要通過系列課程有意識、有計劃、持續(xù)地訓練,需要在不斷的學習實踐中領悟和提升。本文對如何在軟件工程的教學過程中滲透計算思維方法,培養(yǎng)學生計算思維能力做了一些初步的探討,實踐表明,將計算思維方法融入軟件工程課程的教學過程中,提高了學生解決實際問題的能力和計算思維能力,對應用型人才的培養(yǎng)大有裨益。
參考文獻(References)
[1] 陳澎,熊耀華,周慧.基于CDIO模式的軟件工程實踐教學課程建設的研究[J].軟件工程,2016,19(1):1-3.
[2] 教育部高等學校計算機科學與技術(shù)教學指導委員會.高等學校計算機科學與技術(shù)專業(yè)人才專業(yè)能力構(gòu)成與培養(yǎng)[M].北京:機械工業(yè)出版社,2010.
[3] 周以真.計算思維[J].中國計算機學會通訊,2007(11):77-79.
[4] 蔣宗禮.計算思維之我見[J].中國大學教學,2013(9):5-10.
[5] 劉強等.“軟件工程”課程教學實施方案[J].中國大學教學,2011(2):41-44.
作者簡介:
郭詠梅(1963-),女,碩士,副教授.研究領域:軟件工程.