ソフトウェア開発201の鉄則: 原理21:一般:異なるフェーズには異なる言語を

要旨

* ソフトウェアが持つ本質的に複雑な世界に対して、「単一の」開発法でのアプローチを試みようとする開発者が多い
* しかし、電気工学など、他の工学分野では、内容やフェーズにに応じて使う表記法や手法があり、それぞれ異なるのが通常である
* ソフトウェアの世界も、他の工学分野と同様、フェーズ、プロセスに応じた手法や表記法があるので、それぞれの適したものを使え

解説

これは、そういう時代があったのか、としか言いようがない。

どんな複雑な問題に対しても、どのような場面でも通用するような、単一の表記法や技法があると信じて、その実現を目標としていた、そういう時代が。

原理19 では、「そのような夢のような道具は、ない」と言っている。現代では、もうそれは自明だろう。

ソフトウェア開発のプロセスは、概ね以下のように分けられるだろう。

1. 要求分析
2. 設計
3. 実装(コーディング)
4. 評価・テスト
5. 品質保証
6. 保守・運用

そして、これら全体に関わる、管理。

今の時代の規模になったら、もう、これらは、完全に「別物」と思って、それぞれの世界で最適なツールや手法がある、と考えるべきだ。

もっと言うと、実際のソフトウェア開発では、役割はもっと細分化されている。

ちょっと話はそれるが、最近"Escalation Engineer" という役割を知った。QA やテスト部隊が挙げる不具合を解析し、不具合の原因となっていそうなモジュールを担当するエンジニアに修正を「振る」役割、とのこと。

QAや評価部隊から挙がったバグは、自分で原因をつきとめて自分で修正する、というプロセスでしかやったことない自分には、ここまで細分化されているのか、という驚きしか、なかった。

高い技術、知識、経験が必要で、と~~ってても大事な役割なのは確かなんだけど、一年くらいしたら飽きそうww

この記事が気に入ったらサポートをしてみませんか?