

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