みんなアセンブラを必修科目にすればよいのに……しくみを理解していれば古きも新しきも同じことを言っていると気づくのに
みんなアセンブラを必修科目にすればよいのに……しくみを理解していれば古きも新しきも同じことを言っていると気づくのに
以下のような流言がいつまで経っても消えない。
DOA (Data Oriented Approach) で新たに開発すれば生産性/保守性が高まる
オブジェクト指向言語で新たに開発すれば生産性/保守性が高まる
現行システムの維持に費用がかかるのは上記を採用していないからだ
いかにも、当該のユーザー企業の外側にいる(当然現行システムの中身など知らないし興味もない)コンサルタント業の人が言いそうなことではある。
そして、未だに大企業や官公庁といった大規模ユーザーで決裁権を持っている「偉い人達」は、そもそもITには疎い者ばかりで、システム開発のことなんて「ド素人」である。
日本企業には、こうした「偉い人達」の側近には「イエスマン」しかいない。
上記のようなことを鵜呑みにして、様々な思惑も絡んで、難易度の高い大規模システム開発がくりかえされ、その多くが何らかの失敗をしでかして、欠陥の多いシステムが作られていく。
- DOA (Data Oriented Approach) で新たに開発すれば生産性/保守性が高まる?
現行システムが開発されて四半世紀。すでにOracleなどのRDBを中心に使用して回っている。
RDBを使用するだけでも、ある意味強制的に、部分的にはDOAを実現している。
逆にRDBの機能に頼り切ったシステムでは、保守性という面で問題が生じることは、もうみんなが知っている。
- オブジェクト指向言語で新たに開発すれば生産性/保守性が高まる?
こんなことを言うと一部から反論されそうではあるが、敢えて正直に言うと、オブジェクト指向と生産性や保守性は、直接的には関係性は無いと思っている。
要は、生産性や保守性を意識したシステム設計を、ちゃんとするか、しないか、それだけである。
そこに、「オブジェクト指向か否か」はあまり問題にはならない。
オブジェクト指向言語が実装としてやっていることを、ちゃんとコンピュータのしくみのうえで説明できる人が、そのプロジェクトに何人いるだろうか。
例えば「継承」がやっていることが、実メモリ空間の中でどう処理されているのか。
そういったことを理解していない人たちが設計してしまうと、結局、生産性や保守性が低いシステムができあがってしまう。
- 現行システムの維持に費用がかかるのは上記を採用していないからだ?
以前にも下記の記事で少し紹介したように、特に基幹系システムというものは、その企業の競争力を生み出す業務そのものと一体化した、「プラント型IT」と呼べるものである。
確かに実際のプラントと同様に、全体のアーキテクチャーが古いままであると、時代の流れに追従できないという問題も出てくるだろう。
しかし、それは、上述のような開発手法などの問題とは、また次元が異なる問題である。
上でも言ったが、どのように設計を行うか、という、設計スキルに帰着してしまうのである。
しくみを理解している人は簡単にJavaが良いとかCOBOLが悪いとか言わない
しくみを理解している人は簡単にJavaが良いとかCOBOLが悪いとか言わない。
問題の本質はそういう部分ではないことを知っているから。
近年、ようやく、Java言語の世界において、共通化がされてこなかった「バッチ処理」について、共通的なフレームワークの必要性が叫ばれるようになった。
少なくとも、日本の基幹系システムの心臓部は、すべてバッチ処理の部分に存在している。
これだって、中身を見ると、なんの真新しいことはない。ごくごく当たり前のことを標準化しただけである。