システムづくりの人間学 (T1:Pt1:Ch02)
テーマT1「ライト、ついてますか(仮)」Pt1・ワインバーグ編第2弾は、『システムづくりの人間学 計算機システムの分析と設計を再考する』です。
(②回想・感想編は“余談”です)
日本語訳書名から「開発担当者限定か」と思う人もいるかも知れませんが、テストにも分析、設計という工程がありますよね。テスト技術者にとっても刺激になる本だと思います。
①紹介編
テーマは“副題”に
テーマは副題の通り「コンピュータシステムの分析と設計の再考」ですが、これは原著のタイトルそのものです("Rethinking systems analysis and design")。
「再考」とはどういうことでしょうか? 著者がまえがきで詳しく書いています。
理由として、「本から学べることもあるが、本からは学べないこともたくさんある」のに、「『本を読めば判る』と思われるのが心配」と言っています。
【begin 余談】(本書紹介の主旨からはちょっと離れます)
後続の文で興味深いことを言っています。「ほかの本からはデーターフロー図式の画きかたや、決定表の組み立てかたや、行列模型の作りかたが学べるだろうが、この本はその種のことはいっさい約束しない」
これはワインバーグの著作に共通する特徴と言ってよいと思いますが、著者は(少なくとも自著の中では)「特定の手法や技法の紹介、解説、伝授」にはまったく興味を示していません。関心は常に具体的な手法や技法の根底にある「見方考え方、ものごとを見る視点、世界と向き合う態度」にある……と筆者が感じている所以でもあります。
【end 余談】
つまり、再考とは、“分析”“設計”という行為の(本書執筆当時、ソフトウェア業界に広まっていた)通念を見直そうということです。そして、その帰結として:
(……こういうことを(正直に)書いてしまうから、ワインバーグ師は「一般受け」しないんじゃないかと(^_^;))
さらにその“理由”を「この2, 30年で情報システムが生活や社会に及ぼす影響が急拡大したのに対し、分析と設計に関する我々の理解は、ずっとゆっくりとしか増してこなかった。分析と設計という仕事自体、質的にも変容を遂げた」([1] v, 大意)。
だから、取り組むべきシステム(問題)の大きさと比べれば、われわれの知識は(相対的に)日に日に少なくなっていっている、と言います。
(これがワインバーグ師の基本的思考態度。まさに「システム思考」が炸裂している「システム思考の賜物」と言えるでしょう)
以上から本書の主題は「ソフトウェア/システムの分析・設計に関する試論、ただし方法論からはみ出す部分の取り扱い」ということになろうかと思います。
訳者は「訳者序」でこんなことを言っています。
これは今日のISTQB Foundation Levelシラバス「テストの原則 (7) 「欠陥ゼロ」の落とし穴」、あるいはソフトウェア品質特性(ISO/IEC 25000 (JIS X 25000) SQuaREシリーズ)につながる問題意識とも言えるかと見ますが、「システムを開発するってそういうことじゃないよ」というのが、本書の“第一のテーマ”でしょう。
一般システム思考の(ソフトウェア技術者向け)入門書
まえがきだけで紹介が終わってしまいそうですが(紹介ならそれで十分という気もしますが)、まえがきをもう少し読むと、本書の“第二のテーマ”が見えてきます。
(綺麗に整えられた)方法論ではすくい取れないものごとがあります。
ソフトウェアの分析~設計ということをしていると、「こういう場合はどうするんだろう?」「これはどう扱うのがいいんだろう?」「どういう形でシステムの中に落とし込めばいいんだ?」と迷うことがあったり、「やることはまあ判ったけど、どうやったらいいの? どういうことに気をつけたらいいの? どんなことに注意すればいいの?」と不安や不満を感じたりするものです。
特定の方法論とまでいかなくとも、プロセスが整備された組織で仕事をしたことがある人なら、プロセス定義やガイドラインに従えば迷いなく作業ができるわけでもないことは思い当たるのではないでしょうか。
先の引用で太字にした「明示的に、かつ完全に記述することの不可能な部分」は、著者によれば「『認識し、尊敬し、それに影響を及ぼすこと』が可能」で、「それがこの本がしようとしていること」です。何によってでしょうか。
本書の部レベルの構成にそのテーマが打ち出されています。(以下見出しは日本語訳による)
第2部で「一般システム思考」が表題になっているほか、第3部・第4部は「システムへの接し方とその技術」の話です(第4部ではいわゆるオープンクエスチョンの重要性を取り上げてもいます)。第6部も一般システム思考に直結した話題です。全体を通して、扱われるトピックは「一般システム」に関わるものが多いです。
というわけで、本書は全編にわたって、「一般システム思考とはどのような考え方なのか」「現実世界の事象にどう適用できるか」を、時にはたとえ話で、時には「(コンピュータ)システムの分析・設計」という具体的な行為になぞらえて語った本でもあります。
そしてそのことを通して、「システムの分析・設計にはどのような態度で臨むのがよいか」「どういう見方考え方を持つのが望ましいか」を論じています。
『一般システム思考入門』対本書
一般システム思考の“入門書”では、ワインバーグ自身による『一般システム思考入門』があります(刊行時期は『一般システム思考入門』が先)。
『一般システム思考入門』に出てくる話題や題材、“一般システム法則”などのうち、本書にも(あるいは姿を変えて、あるいは同じ姿で)再登場するものもけっこうあります。
とっつきやすさで言ったら、圧倒的に?本書が“上”でしょう。「(コンピュータ)システムの分析・設計」というテーマに即して概念を説明したり話が展開したりするので、ソフトウェア屋さんには入りやすいかと。
半面、「一般システム思考の全体像」を書いているわけではないので、本書を読んだ上で一般システム思考に興味があるなら『一般システム思考入門』に進む、というのがよいでしょう。
なお、一般システム思考自体の軽い紹介(になっていないかも知れませんが)は、「ワインバーグと一般システム思考(と私)」(T1:Pt1:Ch00)という別の記事で取り上げていますので、興味のある方はご一読ください。
一般システム思考になんか興味がなくても
本書はまず第一に「ソフトウェア/システムの分析・設計の在り方に関する(ただし方法論からはみ出す部分に関する)エッセイ」です。
組織のプロセス定義や開発方法論ではまず話題にならないようなトピックが続々と出てきます。そういうものに今ひとつピンと来なかった人には、本書は響くところがあるのではないでしょうか。人によっては自分のやり方ややってきたことを振り返る手がかりになるでしょう(「システム設計の三大B」や「設計の理解性」は、筆者が今読んでも刺激的ですし、過去を思い出して冷や冷やします)。
筆者の見るところ今でも通用する、設計に関する洞察をふたつ引用します。そのまま警句として掲げられそうな切れ味です。(ここでの「設計」は広義の設計、「分析および設計」と捉えてください。ソフトウェアの設計に限らず、テストの設計にも当てはまるんじゃないかと思います)
それはどういうことなのか。なぜワインバーグはそう言うのか。よかったら本書を手に取ってみてください。
文献・書誌情報
[1] G.M.ワインバーグ (木村泉・訳) 『システムづくりの人間学 計算機システムの分析と設計を再考する』 (原著1982, 日本語訳1986) 共立出版
Weinberg, Gerald M.
Rethinking systems analysis and design.
1982初版 (Little, Brown and Company (Inc.))
[2] G.M.ワインバーグ (松田武彦・監訳, 増田伸爾・訳) 『一般システム思考入門』 (原著1975, 日本語訳1979) 紀伊國屋書店
Gerald M. Weinberg
AN INTRODUCTION TO GENERAL SYSTEMS THINKING
1975初版 (John Wiley & Sons, Inc.)
(2024-01-20 R001)
(以降「②回想・感想編」は“おまけ”です。本書の紹介との関連は超薄いですが、読んでもらえたらうれしいです)
②回想・感想編
初読の時期を思い出せない
本書を最初に読んだのがいつか、憶えていません。手許にある本には2002年と書き込んであります。
ソフトウェア設計にのめり込んでいた時代に読んだのなら、当時の仕事や仕事の進め方が影響を受けていたと思うんですが、そういう記憶はありません(「本書を読んだためにシステムの分析と設計が前より判らなくなってしまい、仕事に混乱を来した」可能性はあります……(冗談です……))。
また、「白パンの自然史」、クリベッジのバグの話など、他の著書にも登場するエピソードの記憶を辿ると、他の著書から受けた印象の方が強い……どうも、他の著書よりは遅れて読んだ見込みが高いです。
「仕様通り」の苦い思ひ出
①紹介編で訳者の苦言を引用しましたが(以下に再掲):
日本語訳が出版された同時代を知っている者の感覚として、この通念は確かにありました。筆者自身、最初はそんな考えでプログラムを書いていました。
20年ほど前まででも、「なんでこんな動作になってるんだ?」に対して「自分は仕様通りに作ったんだ!」という声は聞こえてきたものです(その本音は「だから自分は悪くない」)。
21世紀も20年を過ぎた現在はどうでしょうか。
プログラミング初心者だった頃の自分の叫び(そして今でも聞こえることのある叫び)に厳しくツッコミを入れるなら、「仕様通りに作ったというが、その仕様自体に見つかる“曖昧さ”、条件などの“欠落”、書かれている通りに実装したら表面化するであろう“振舞いの不自然さ・不親切さ”に、まったく気づかないまま作ったのか? プログラムを書いていて、書きながらちょっと動かしてみたりしていて、何とも思わなかったのか?」
そのうち「あれ? そもそも仕様がおかしくないか?」と思うことが(何度か)あり、“上流”の方に関心を持つようになっていきましたが……
(この「作り手と要求元との闘い」は、筆者の見るところ、本書が書かれ訳された時代からほどなく「要件定義/要求定義」というフェーズに主戦場を移し、40年後の今も続いています)
なお、先の文に続けて、訳者は「いわれた通りに作ると『いおうと思った通りに作らなかった』といって怒られる」話を挙げています……(第4部の「丸呑みしないですます方法」かな?)。
本書と一般システム思考について、補足
「再考」の意味するところは①紹介編で触れましたが、もう一点、興味深い文を引くと:
続けて、当時(1980年代初頭)のソフトウェアの分析・設計方法論の“運動”の姿が短く紹介されています。そしてその段落の最後に、
後続の段落では「うまくやったとしてもなお残る問題起点」が「大きく、重要である」と述べ、①紹介編での「本書の“第二のテーマ”」(一般システム思考)につながります。
この、「方法論ではカバーできない、カバーしてもはみ出る部分」こそ「一般システム思考ですくい取るべき部分」というのが、ワインバーグの根底にある態度なのでした。筆者の感じるところ、それは他の著作でも同じです。
①紹介編で、「ワインバーグは「特定の手法や技法の紹介、解説、伝授」にはまったく興味を示していない」「関心は常に具体的な手法や技法の根底にある「見方考え方、ものごとを見る視点、世界と向き合う態度」にある」と記したのも、この態度を指しています。
ワインバーグの思想(基本的思考態度)が「ソフトウェア/システムの分析・設計」という具体的な領域で展開される(それだけに親しみやすく判りやすい)、刺激的な著作です。
(本稿、終わり)