H30 技術士(情報工学)ソフトウェア工学 III-2:OSSの利用について


(1)OSSとは
OSSとはソースコードが公開されていて条件を満たせばだれもが利用できるソフトウェアのことで、OSのLinuxやメールサーバー、Webサーバー、DNSサーバー、ファイルサーバー、データベースなどのソフトウェアがある。
OSSを利用すると全ての機能をスクラッチで開発した場合と比較し、短期間でソフトウェア開発が行えるようになる。また、不特定多数の人が様々な環境で利用し不具合の修正を行っているためソフトウェアの品質も場合によっては市販されているものより高いこともある。
また、一度でもOSSを利用経験があれば、動作させるハードウェアが異なってもその経験を生かして開発を行えるため、技術者の確保が容易になることがある。

(2)OSSを利用するメリット
私は組込みソフトウェアの開発に携わっており、OSSとしてはOSのLinuxを採用することが多くなってきている。
Linuxを利用すると短期間に高品質のOSを動作させることができる。また、Linuxは様々なTCP/IPなどの通信機能やファイルシステム、グラフィックユーザーインタフェースなどの機能をもっているため高度な機能を容易に実現できる。
組込みシステムでは専用のハードウェアとソフトウェアを同時に開発するが、ソフトウェアの動作確認はハードウェアの完成を待たないと行うことができなかった。しかし、Linuxを使うとLinuxの動作する環境であればPC上でも開発したソフトウェアの動作確認を行うことができるようになるため、品質の作り込みを早い段階で行うことができるようになり、ハードウェアとソフトウェアの設計作業を並行して行うコンカレントな開発を行うことができる。
また、Linuxではソフトウェア開発のためのツールが豊富であるためデバッグやテストを効率的にできるので、こういったツールを活用することで開発期間の短縮とコスト削減、品質のアップが期待できる。
さらに、組込みシステム開発で大きな問題なのは要員の確保がある。組込みシステム専用のOSを使うと、専用のOSを使ったことのある技術者を外部から調達することは困難なので、組織内で技術者を育成し保持する必要があるが、それはコスト増になるため製品のコスト競争力の面で問題もあるし、必要な要員が確保できないため開発期間が長くなる問題があったが、Linuxを採用することで外部からもLinux利用経験者であれば開発要員として活用できるので要員の確保することが楽になるためコスト削減や開発期間の短縮を実現できるようになる。

(3)ODD利用のデメリット
OSSは汎用的であるため、専用のソフトウェアを使うときと比べ、ハードウェアには高性能なCPUが必要であったり、大容量のメモリが必要であることが多く、製品としての価格が高くなり価格競争力が弱くなってしまう。
また、OSSを使うことのデメリットはOSSで提供される部分がブラックボックス化することである。
例えば、Linuxを利用すると通信のTCP/IPやUSBなどは技術的な知識がなくても簡単に実現可能であるが、不具合が発生すると通信の仕様が分からなかったり不具合解析のためのノウハウがないため問題解決に時間がかかったり、場合によっては組織内で問題を解決できないため外部から専門家を入れて対策を行う必要になり、時間もコストもかかってしまうことがある。
こういった、問題には利用するOSSをブラックボックス化しないために、公開されているソースコードを読み処理内容を理解するようにしたり、TCP/IPやUSBは通信プロトコルを理解することで動作が分かるようにする必要がある。


[Intermission]
OSSと使うことのメリットとデメリットについて、自分の経験または業務に当てはめて書くのですが、前年のAIよりは書きやすかったです。
メリットは工数と期間の縮小と要員確保の容易さ、デメリットはブラックボックス化とハードウェアのコストアップで描いてみました。
正直、ありきたりの内容だと思いますが、こういったオーソドックスな回答はどう評価されるのかな…。



戻る 一覧へ