Software Engineering

オープンソース開発におけるソフトウェアの工学的側面


Paul Vixie
ポール・ヴィクシー
Translation by Akira Kurahone



 「プログラムを書く」ことだけがソフトウェア開発ではない。にもかかわらず、オープンソースプロジェクトでは多くの場合、プログラムは単に書かれ、単に配布されている。とはいえ、ソフトウェア工学的に作成されなければ、幅広いユーザに受け入れてもらえないわけでもない。これが事実であることを示す例はいままでにもたくさんある。そこで、本章では、通常のソフトウェア開発で実践される工学的工程をまず検討し、そのうえで、それらの工程がオープンソースのコミュニティでどのように実践されているかについて考察してみたい。そして最後に、そこに現われた違いの意味について考えてみることにする。


ソフトウェア開発の工程
 ソフトウェアの開発には、次に示す七つの工程が含まれるのが普通である。



 この一連の流れでは、ある工程の作業が実質的に完了しない限り、次の工程に進むことはできない。また、ある工程で変更が加えられた場合、それに依存したり、それを利用したりする部分は、その変更が適切に反映されるように再検討されなければならない。システムがモジュール化されている場合は、依存される側のモジュールの設計開発を、依存する側の設計を待たずに先行させることもできる−こうした手順での開発は、アドバンストデベロップメント(advanced development)と呼ばれている。
 ソフトウェア開発を工学的に進めていくうえで欠かせない要素のひとつは、レビューである(レビューとは、客観的な知識を集めて、設計品質およびそれを実現するための工程からソースコードのレベルに至るまでを評価し、改善点を提案し、次の工程に進みうる状態にあることを確認する組織的な活動の総称である)。レビューには、同僚などによるもの、上司や先輩などによる経営的な判断を含むもの、そして外部の専門家や他の部門の技術者の意見を聞くためのものなどがある。
 ソフトウェア開発においては、ソースコードにもドキュメントにもバージョン番号をつけ、それがどの時点で作成されたものであるかがわかるようにしておかなければならない。変更に関するドキュメントも必ずレビューされなければならない。レビューの範囲がどれくらいになるかは、施された変更の程度による。