スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | トラックバック(-) | コメント(-)

タダで使えるソフトウェア。 

この問題は実 は難しいので多くの人が「なんとなくタダ」というだけで終わらせてしまっ てす. (フリーのソフトウェアの作者ですら!)
フリーの問題はソフトウェアに限りません. 文書だって単なる データだってフリーにすることができます. ソフトだけでなく, 何かを作る人, 使う人, それぞれに考えて欲しい問題なのです.





オブジェクト指向技術,特にC++によってソフトウェア業界に嵐が巻き起こされました。
ソフトウェア革命の中心には存在があったように思えるのです。しょうが,私は少し違った視点から答えを示唆したいと思っています: C++が普及したのは,これによってソフトウェアの設計とプログラムを同時に行うことが容易になったからなのです。
この記事で私がやろうとしていることは,プログラミングとソフトウェア設計の関係を考えてみるということなのです。 私はこの10年というもの,ソフトウェア設計として行われている作業とソフトウェア設計の真の姿という微妙な違いをソフトウェア業界全体が見逃してきたと感じていました。 その教訓とは,プログラミングがソフトウェアの製造作業ではなく,ソフトウェアの設計作業であるということなのです。
結論は憶えていませんが,体験から,ソフトウェア業界は有益ないくつかの類似点を見逃し,ハードウェア工学からの誤った類似点を創造してしまったという考え方が触発されたのです。 突き詰めると,私たちはソフトウェア設計という真の姿に気付いていないという点で,ソフトウェア・エンジニアではないという結論に達するのです。
このため本記事では,真のソフトウェア設計がソースコードであると仮定した場合に,この仮定から導き出される帰結のいくつかを検証しています。この仮定の正当性を証明することはできないかもしれませんが,これによってC++が人気を博している理由等,ソフトウェア業界において見受けられるいくつかの事象について説明できることを願っています。
ソースコードがソフトウェア設計であると考えることによって重大な帰結が導き出されます。
この帰結はあまりにも重要かつ自明であるものの,ほとんどのソフトウェア組織において盲点となっているものです。 ソフトウェアの製造(ビルド)が安価なものであるという事実です。 ソースコードがソフトウェア設計であると考えた場合,ソフトウェアの本当の製造はコンパイラとリンカによって行われることになるわけです。ソフトウェア構築用の機器に対する莫大なものとはなりません。ビルド環境が利用可能になれば,ソフトウェアの製造にはほんの少しの時間しか必要とならないのです。
ソースコードがソフトウェア設計であると考えた場合,ソフトウェア設計は意味合いにおいて,容易に作成できるという帰結も導き出せます。
複雑さを有した設計を,ソフトウェア並みの期間で生み出せるような工学分野が他に存在するかどうか調べたいのは山々ですが,最初に行うべきことは,複雑さを測定し比較する方法を見つけ出すことでしょう。
ソフトウェア設計は比較的容易であるという点,そして製造は本質的に無料であるという点を考えた場合,ソフトウェア設計が複雑なものになりがちであるというのは当たり前のことなのです。
ソフトウェアで話です。百万行の大台にまで突入しているソフトウェア設計も数多くあります。ソフトウェア設計は進化し続けるものなのです。
事実は,複雑なハードウェア工学を適用した場合,ソフトウェアの批評家が私たちに信じさせてきたほど,常にバグのない状態が実現できていたわけではないというものです。ソフトウェアにはこういった制約が適用されません。 数百ものソフトウェア会社が存在し,数千もの非常に複雑なソフトウェア・システムが存在しているのです。真似をしても,ソフトウェア産業の問題は解決できないということなのです。
こういった複雑さは,ソフトウェア設計自身や,企業のソフトウェア組織,そして産業全体に内在しています。ソフトウェア設計は,システム設計と非常に良く似ています。このため,ソフトウェア仕様は流動的なものとなりがちとなり,目まぐるしく変化し,設計プロセスの最中に変化することもしばしばのです。すべてがソフトウェア設計を難しい,誤りを生み出しやすいプロセスにしているわけです。独創的な考え方ではありません。ソフトウェア革命が起こって経った今でも,工学分野と比較すると規律のない技芸として見られているのです。
ソフトウェア設計がハードウェア設計ほど厳格に工学として実践されていないように映っているのは明らかです。
ソースコードが設計であると考えれば,実際にはソフトウェア設計者も自らの設計に対して相応の検証と洗練を行っていることが理解できるはずです。ソフトウェア設計者はそれを工学と呼ばず,デバッギングと呼んでいるだけなのです。 こういった状況はソフトウェア業界で顕著に現れています。工学との本質的な相違点にあるのではなく,コードが設計であるという点をソフトウェア業界が拒絶しているためです。 ソフトウェア設計者は,ソフトウェアのビルド・サイクルにおける経済的理由から,設計を検証する公式の方法論を採用,あるいは運用していだけなのです。
何度ビルドを行うのかなど気にかける必要もありません。ソフトウェア設計ではこういったモデルの構築など不可能であり,かつ不必要なことでものです。ソフトウェア検査がコンパイラのように自動化されて存在していたとしても,私たちはビルド/テスト・サイクルを行うことになるはずです。 このため,検査はソフトウェア業界にとって実用的な利益を生み出さないのです。
より複雑なソフトウェア設計が,増加する人員や組織によって生み出されています。 こういったプロセスは,誤りを生み出しやすいものであり,取り立てて厳格というわけでもありません。ソフトウェア開発プロセスは,ソフトウェア設計の様々なフェーズを細分化しようとしています。
プログラマ,すなわちソフトウェア産業における建設労働者です。
ところがソフトウェアの場合,コードであってもデバッギング期間中に改訂されたり,書き直されるということが行われています。
プロセス・モデルに適合させようとするのではなく,プロセスを改訂し,より良いソフトウェアを製造する上での支援となるようにしなければならないのです。
コーディングは設計であり,テスティングと設計の一部であり,私たちが一般的にソフトウェア設計と呼んでいるものも設計の一部なのです。このため,ソフトウェアのビルドは安価であるものの,設計は驚くほど高価になるのです。ソフトウェア設計はすべての側面において完璧かつ正しいものになっていなければならず,そうなっていない場合,その設計に基づいたソフトウェアのビルドすべてが間違ったものとなってしまうのです。
ソフトウェア設計の際に,美しい形でアルゴリズムに落とし込めないような重要な側面が存在します。
構造を設計しただけでは,ソフトウェア設計とは言えません。ソフトウェア設計をより厳格な工学プロセスにできるのであれば何も問題はないのですが,現実世界のソフトウェア・システムはこのように厳格なものではありません。
ハードウェアによっては設計者の思い通りに動作しないかもしれません。ライブラリ・ルーチンにドキュメント化されていない制限があるかもしれません。変更はソフトウェア設計全体の重要な部分を切り裂くことになるのです(マーフィーの法則です)。
こういったツールや記法がソフトウェア設計ではないということは,心に留めておかなければなりません。 最終的に,私たちは真のソフトウェア設計を作り出さなければならず,それは何らかのプログラミング言語となるためです。
C++はプログラミング言語であり,より表現力の豊かなソフトウェア設計言語でものです。
CASEツール? 確かに普及しましたが,普遍的なものにはなっていません。 同様にWarner-Orrダイアグラム,Boochダイアグラム,オブジェクト・ダイアグラム等が出てくるかもしれません。長所があるものの,それぞれは本当のソフトウェア設計ではな短所を抱えているのです。 実際,広範囲に普及しているといえるソフトウェア設計記法はPDLだけであり,それが私たちの目にどのように映っているのかを考えてみる必要があるでしょう。このことは,プログラミング・テクニック,そしてとりわけ現実世界におけるプログラミング言語の改善がソフトウェア業界において重要であるという点を,ソフトウェア業界全体が本能的に理解していることを意味しています。
このことは,設計を担当したソフトウェア設計者が詳細設計時点までいるという状況を生み出しやすくするわけです。
このためソフトウェア業界にいる私たちは,エンジニアに近い位置にいるものの,いくつか認識を変更する必要があります。場合,ソフトウェア設計を検証できるような汎用手法が見つかることなどあり得ないのです。
最終的に誰かがそのソフトウェアを使用することになるのです。
ソフトウェア設計とは,問題領域におけるソフトウェアのコンセプトからモデルのコンセプトを創造するという作業が含まれています。ソフトウェア空間中に直接情報まで理解しておく必要がありますが,これによって本質的なコンセプトが何であるか,そしてどのようにモデル化するのが最適なのかということを設計者が確定できるようになるわけです。
しこのことは,プログラミング言語の代わりにグラフィカルなソフトウェア設計記法を使用するべきであるという議論「ではありません」。ツールを期待できるかもしれません。


スポンサーサイト
[ 2006/10/01 16:08 ] ビジネス・情報 | TB(0) | CM(0)

コメントの投稿














管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://info20061001.blog77.fc2.com/tb.php/78-d65348f9





上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。