著者:
(1)ジョセフ・ラテッサ、ウェイン州立大学コンピュータサイエンス学部、デトロイトミシガン州、米国((email protected))
(2)アディ・フリア、セイラム高等学校3年生、ミシガン州カントン、米国((email protected))
(3)ディーパック・ラジュ、セイラム高校3年生、ミシガン州カントン、米国((email protected))。
リンク一覧
概要と序論
関連作業
プロジェクトの前提条件
プロジェクトの実施
洞察と考察
結論、謝辞および参考文献
抽象的な
バージョン管理、継続的インテグレーション、単体テストなどのソフトウェア エンジニアリングの概念は、多くの場合、プログラミング コースを数学期修了した後の 3 年目の学習まで、大学のコンピュータ サイエンスのカリキュラムでは紹介されません。2023 年の夏の間、2 人の高校生が、私が大学院研究助手およびコンピュータ サイエンスの博士課程の学生として在籍しているウェイン州立大学の研究室でボランティアをしました。学生たちは AP コンピュータ サイエンスを履修していましたが、ソフトウェア エンジニアリングやソフトウェア テストの経験はありませんでした。この論文では、研究室に関連して開発されたオープンソースの科学計算プロジェクトに有意義に貢献する自動テストを実装するために必要なソフトウェア エンジニアリング スキルを教えるグループ プロジェクトを考案した経験について説明します。教育と作業の展開に共通の重点を置きながら、ソフトウェア エンジニアリングのこの初期の入門で取り上げた概念、使用したツール、および記述したソフトウェア テストについて説明します。
キーワード
自動テスト、継続的インテグレーション、GitHub Actions、高校夏季研究、ソフトウェア エンジニアリング、バージョン管理、Web サイトのデバッグ
1 はじめに
2023 年の夏、2 人の高校生がウェイン州立大学のコンピューター サイエンス研究室の 1 つでボランティアとして支援を行いました。この研究室では、科学アプリケーション向けの高性能コンピューティングとソフトウェア エンジニアリングに重点的に取り組んでいます。学生たちは、2024 年に学部課程を開始する際に、コンピューター サイエンスを専攻したいと考えています。私たちの研究室でボランティア活動を行う前、彼らは AP コンピューター サイエンスのコースを修了しており、そこで Java と Python を学習していましたが、バージョン管理、継続的インテグレーション、単体テストなどのソフトウェア エンジニアリングの概念についての経験はありませんでした。私たちの目標は、学生たちの現在の経験と教育に適した夏季プロジェクトを開発し、研究室環境での支援に関連する新しいスキルを習得する学習機会を提供し、私たちの研究室に関連して開発された科学コンピューティング アプリケーションに有意義に貢献する作品を生み出す機会を提供することでした。
私たちの研究室と連携して開発された 2 つの科学計算アプリケーションには、JETSCAPE (1) と GOMC (2) があります。JETSCAPE は、超相対論的重イオン衝突をシミュレートするためのイベント ジェネレーターを開発する複数の機関による共同プロジェクトです。GOMC は、メトロポリス モンテ カルロ アルゴリズム (3) を使用して分子システムをシミュレートするアプリケーションです。どちらのプロジェクトもオープンソースであり、GitHub でそれぞれのリポジトリを管理しています。また、GitHub Pages を使用してプロジェクト Web サイトを管理および展開しています。
プロジェクトの目標を達成するために、私たちは自動化されたソフトウェア テストに重点を置くことにしました。JETSCAPE (1) と GOMC (2) は以前にいくつかのテストを開発して展開しましたが、協力者の間では既存のテストをさらに拡張することに関心がありました。学生ボランティアはまだソフトウェア エンジニアリングを勉強しておらず、継続的インテグレーションやユニット テストなどの概念にまだ慣れていなかったため、このプロジェクトに取り組みながらこれらのスキルを習得することは、独自の教育的価値をもたらすでしょう。学生はすでに AP コンピューター サイエンスを修了しており、Java および Python 言語に慣れていたため、学生はすでに学んだプログラミング スキルをこれらの自動化されたテストの開発に応用することができました。
学生たちは Java と Python を勉強していましたが、Linux の経験やコマンドラインでの作業経験はありませんでした。また、Git やバージョン管理プラットフォームの使用経験もありませんでした。そのため、このプロジェクトは Linux シェル環境とバージョン管理の予備的な紹介から始める必要がありました。継続的インテグレーションも新しい概念であるため、GitHub Actions のデモと YAML ファイルの記述で予備的な紹介を終了します。
このプロジェクトの主な実質的なタスクは、3 つの自動テストの実装です。最初の 2 つのテスト、HTML 検証ツールとリンク チェッカーは、JETSCAPE (1) と GOMC (2) の Web サイトに導入されます。3 番目のテストの実装では、ユニット テストの概念について議論し、一連のユニット テストを導入して、JETSCAPE の XML 形式の入力の正確性を確認する必要があります。
プロジェクト全体で使用されるツールには、Visual Studio Code、WSL にインストールされ Windows ターミナルからアクセスされる Ubuntu ディストリビューション、Git と GitHub によるバージョン管理、GitHub Actions による自動化、GitHub Pages による静的ホスティング、GitHub Marketplace Actions の機能をカスタマイズおよび強化するための Python スクリプト、および Python の UNITTEST フレームワークが含まれます。
次のセクションでは、プロジェクトと、そのプロジェクトで取り上げた概念について詳しく説明します。次に、私たちが直面した成功と課題を振り返り、この経験を報告します。これにより、コンピュータ サイエンス教育で同様のレベルの他の学生が、通常よりも早くこれらのソフトウェア エンジニアリングの概念を学ぶ機会を見つけ、高校の従来のコンピュータ サイエンスのカリキュラムを補足する実践的なラボ体験も得ることができます。