教育的フレームワーク

教育的フレームワーク


XP (エクストリーム プログラミング) は,ソフトウェア開発プロセスとして多分大変有効なものであろうが,それ以外の面でも非常に有効な部分が多々有ると思う.

感じるのは,コミュニケーションを促進したり,無駄を省いたり,リスクを取り除いたりするのに,とても有効で実践的である,という点である.

そして,特に感じるのは,とても教育的である,という点である.


XP を実践していくだけで,ソフトウェア開発に必要な様々な能力,設計やコーディングやテスト,コミュニケーションの取り方等の能力の向上が期待できるようである.

これは XP だけに言えることでなく,多分他の優れた開発プロセスアジャイル モデリングのような手法でも言えることで,或る優れた方法の枠組みに入って,その約束事に従って開発を進めていくことで,知らず知らず優れた開発方法が身に付いてくるのではないだろうか.

優れた方法に身をまかせていること自体に,強い教育効果がある.


同様のことが,UML にも言えるのではないかと思う. UML はコミュニケーション ツールとしての効果は勿論,UML 自身が持つ教育効果が大変大きいのではないかと思う.


最初から C++ や Java 等のプログラミング言語で書いていくよりも,UML で記述していく方が良いモデリングの練習となると思う.

UML では,モデリング以外の余計な概念が省かれている.つまりモデリング言語としては,当然の事ながら C++ や Java よりも UML の方が純粋で無駄がない.勿論日本語のような自然言語と比較しても同様である.

UML という言語を使うことで,他の言語を使うのと比較して,開発者はモデリングという概念自体に慣れて行くことが出来る.


そして,UML 自体がモデリングの良い手本になっている.

UML を使い込んで行くと,段々と UML 自身がどのように設計されているかという点が見えて来る.つまり,UML メタモデルが見えて来る.今回,UML 2.0 では更に洗練されたメタモデルになったと聞いたが,そのような研ぎ澄まされた設計が知らず知らずに身に付いて来る.


モデリングに習熟するには良いモデルを見るのが一番だとは良く言われていることである.UML に限らず,良い設計の言語やツール,良い設計のフレームワークやライブラリを使い続けることは,その使い易さによるメリットもさることながら,良いモデラーを育てるというメリットがあると思う.

例えば,Java や C#/.NET を使うことで,その完成度の高いフレームワークの構造を学び,真似ることが出来るであろう.そこには自然と良い設計を身に付ける効果がある.(どのライブラリとは云わないが) 逆に設計の悪いものは逆効果であろう.


例えば,Smalltalk のようなオブジェクト指向言語,そして Java や C# のようなハイブリッドなオブジェクト指向言語,更には C++ のようなよりハイブリッドな言語を比べてみた時,オブジェクト指向の習熟効果に自ずから差が有るのは明白だと思う.昔の FORTRAN や COBOL,BASIC のような言語では尚更である.


これは,それらの言語やライブラリの範囲内の概念を利用して繰り返し開発を行うことにより,それらの言語やライブラリが,或る種の枠組みとして,不要で有害な概念を含まない良い部分に,思考を限定して行くためではないかと思う.


優れた開発プロセスUML も含め,開発者のためのこれらの教育的な枠組みのことを,私は「教育的フレームワーク」と呼びたい.