Comments
Description
Transcript
実行可能知識としての ソフトウェア構築プロセス
日本デザイン学会 デザイン学研究 実行可能知識としての ソフトウェア構築プロセス 2012年6月23日 大槻 繁 株式会社一(いち) 2 前世紀まで、重厚長大伝統的大企業で ソフトウェアエンジニアリングの研究・開発 今世紀は、軽量俊敏な小さいコンサルティングファーム を経営しながら、新しいソフトウェア作りを探求 創造的なソフトウェアを設計する方法? ↑ デザイン(design) ソフトウェア エンジニアリング + 人工物(ar)fact)の デザイン手法 3 起 承 転 結 ソフトウェアエンジニアリングの呪縛 新ソフトウェア宣言 ΛVモデル アーティファクトとしてのソフトウェア 4 起 ソフトウェアエンジニアリングの呪縛 5 ソフトウェアエンジニアリングのあゆみ:第1〜3の波 1970 NATO会合 1980 1990 ライフサイクル論争 2000 2010 アジャイルソフトウェア 開発マニフェスト 農耕的 工業的 知働的 SEの SEの SEの 第1の波 第2の波 第3の波 システム主体 大量生産/大量消費 分業/手順化/標準化 ドメイン主体 知識社会 多様化/価値指向 プログラム主体 構造化 機能中心 アルビン・トフラーの『第三の波』で 提示されたパラダイムを、ソフトウェアの 世界にあてはめてみました。 時代は「第3の波」なのに、 「第2の波」に呪縛されている 6 アジャイルソフトウェア開発マニフェストは、 それなりにインパクトがありました・・・ プロセス ツール 個人能力 相互作用 Individuals and interactions over processes and tools 動くソフト 文書 Working software over comprehensive documentation 顧客協調 契約・交渉 Customer collaboration over contract negotiation 変化対応 計画遂行 Responding to change アジャイルな気持ち over following a plan 伝統的取組みの傾向 (Manifesto for Agile Software Development, 2001年2月) ソフトウェア作りで大切なこと を改めて確認 7 狭義から広義のアジャイルへ 狭義のアジャイルプロセス 開発者側中心の視点 顧客側とのコミュニケーションや確認を重 視してはいるものの、あくまでも受動的 アジャイルプロセスの取り組みは、 最近ではビジネス連動が中心課題 開発プロセス 協調/同期 広義のアジャイルプロセス 顧客側と開発側との同期 全体での価値創出、ビジネス プロセスを能動的に考慮 開発プロセス ビジネスプロセス 8 人働説から知働説へ 人月の神話 天動説 人働説 「作る」と「使う」は本質的に同じ 価値 価値 技術 地動説 技術 u ソフトウェアとは 《実行可能な知識》である Executable Knowledge u ソフトウェアとは 実行可能な知識を紡いだ 《様相》である Texture u 中心は《機能》から《様相》へ 知働説 知働化研究会は、アジャイルプロセス協議会のWGとして、2009年6月に設立されました。 コンセプトリーダ:山田正樹氏(メタボリクス社) 運営リーダ:大槻繁、現在メンバ数24、研究室数6 hEp://www.exekt-‐lab.org/ 9 知働化研究会では、時々、研究誌をまとめることにしています。 創刊第1号が2010年11月3日(文化の日)に公開されました。 hEp://www.exekt-‐lab.org/Home/exerev 知働化研究会誌Volume 1は、知働化研究会サイトから無料でダウ ンロードできます。面白い作品が満載です。お楽しみください。 現在、Volume 2の発行に向けて、執筆や準備を進めています。 10 承 新ソフトウェア宣言 11 『新ソフトウェア宣言』は、通称『呪縛宣言』とも 呼ばれています。 2010年6月9日〜11日に横浜開港記念館で開 催されたソフトウェアシンポジウム2010の中の ワーキンググループ「ソフトウェアエンジニアリ ングの呪縛WG」に集まった賢人たちが、これか らのソフトウェア、および、ソフトウェアエンジニ アリングの方向性について議論したものが元に なっています。 最終的には、「呪縛WG」の二人のコーディネー タである大槻繁と濱勝巳氏によって、WG終了 後議論が重ねられ、今の7項目からなる形に集 約されました。 hEp://www.exekt-‐lab.org/Home/newsoOdecl iPad用のデザインも提供 飾っておくとじわじわっと効いてくる 12 新ソフトウェア宣言 従来のソフトウェアに関わる諸活動の呪縛から解放され、新たな世界を築いていくためには、新た な呪縛に捕われ、新たな中心を設定していかなくてはなりません。我々は、以下の関心の候補が 有望であると確信しています。 1.ソフトウェアは、数学的理論探求の上に成り立つ 2.ソフトウェアは、部分に還元することが不可能な全体である 3.ソフトウェアは、実行可能な知識である 4.ソフトウェアは、学びの副産物に過ぎない 5.ソフトウェアは、制約条件下で創造される美しい人工物である 6.ソフトウェアは、富を生む経済活動の資源である 7.ソフトウェアは、言語ゲームである 上記、基盤化、全体論、知働化、進化論、意匠論、経営論、遊戯論などの広範で、かつ、相互補完 的アプローチが、新しい物語を生み出し、新たなる地平を切り開いていくことでしょう。 大槻繁,芝元俊久,高野明彦,竹内雅則,時本永吉,夏目和幸,萩原正義, 羽生田栄一,濱勝巳,本橋正成,山田正樹,綿引琢磨 2010年6月11日 横浜にて June 11, 2010 at Yokohama 1600 1596 デカルト 1637 1700 1900 2000 13 1650 方法序説 1642 ニュートン 1800 1687 1727 自然哲学の数学的諸原理 1724 カント 1781 1804 純粋理性批判 1788 ショーペンハウアー リヒテンベルク 1742 1819 1860 意志と表象としての世界 1799 (覚え書き) フレーゲ 1848 1879 ラッセル 1903 概念記法 1875 1925 基本法則 1913 1970 数学原理(プリンキピア・マテマティカ) 1903 192519261930 ラムゼイ フロイト 数学の基礎付け数理論理学 1899 19231939 1856 夢判断 言語ゲーム的転回 自我とエス 1889 ヴィトゲンシュタイン ヒルベルト 1862 カルナップ 1922 19491951 論考 探求 1900 1891 1943 23の問題 ヴィトゲンシュタインの 1924 『論考』(論理的-‐哲学的論考)への集約と ファイヤアーベント 『探求』(哲学的探求)≒言語ゲームのもたらすインパクト 1922 19561970 意味と必然 1975 クーン オースチン 「意味」「価値」「主観」「暗黙知」などを探求していく際に、 「言語ゲーム」の考え方は、ものすごく強力です。 1996 科学革命の構造 19601962 1911 サール 方法への挑戦 1962 1994 1930 言語と行為 1979 表現と意味 クリッペンドルフ 1932 2001 行為と合理性 2006 意味論的転回 13 14 転 ΛVモデル 15 R Requirements T Test 要求 統合・運用テスト 要件定義 システム設計 システムテスト モジュール設計 モジュールテスト プログラミング ユニットテスト I 開発プロセスの諸概念は、 V字モデルによって語るこ とができます。 R Implementa)on インタフェース V プログラム 計算機 時間 I T ソフトウェアのデザイン デザイナがユーザのインタフェースについて持つ理解 デザイン論の大御所であるクリッペンドルフは著 作『意味論的転回』の中で、左図のような意味、 行為、感覚の関係を提唱しています。 これは、ソフトウェアをデザインの対象とした時に も成立します。 ユーザの理解についてのデザイナーの理解 ユーザの理解 そこに 展開される 意味 換喩的に 喚起する 問題にする 混乱 行為 欠如する 引き起こす 予期する 感覚 分類名称 外部的なもの 結果 人工物 内部の力動性 R 現実の インタフェース 発生の原因 となる S Semantics(意味) Λ Test(テスト) Requirements(要求) 予期する 16 インタフェース 説明 T 典型的対象分野 抽象的 高設計自由度 全般 不確実 確率・非決定的 予測、フィルタ 曖昧 未認識・未定義対応 全般 相対的 言語ゲーム的 社会、対話 進化的 メタ・状況適応 パターン認識 計算限界 近似解 レイアウト、検索 未解明項 調整・フィードバック 制御、ログ解析 17 V字モデルとデザイン論の枠組みを接合することによって、 『ΛVモデル』ができあがります。これは、ソフトウェア(シ ステム)、対象領域(実世界)、要求との関係も明確に位 置づけて、全体を俯瞰することができます。 要求 実世界(問題領域) 現象 装置 ドメイン 人 もの Seman)cs(意味) S Λ字モデル Λ Requirements(要求) インタフェース 情報 接続 ラムダ R Test(テスト) T V V字モデル コンピュータ (ソフト、ハード、ネット、・・・) コンピュータ世界 I Implementa)on(実現) アジャイルプロセスのタイムボックス方式(ソフトウェアセル生産方式) をΛVモデルで分析することができます。要求の発生プロセス(受注生 産であればクライアント側)を明確にしていく必要があります。 18 St 時間 S1 S2 S3 S4 S5 S6 要求の 発生プロセス 注文(バックログ) R 1 R2 T1R3 T2 R4 T3 R5 T4 R6 I2 I3 I4 I5 T5 T6 セル(チーム) I1 2週間 I6 It 時間 19 結 アーティファクトとしてのソフトウェア 20 いわゆるウォータフォール的な プロセスのイメージ 仕様化 実現 テスト 時間 21 逐次(順次)プロセス 仕様化 ; 実現 ; テスト 「;」は、逐次オペレータ 22 仕様化 実現 テスト 時間 23 並行プロセス 仕様化 | 実現 | テスト 「|」は、並行オペレータ 24 仕様化 実現 テスト 時間 25 プロセス = 仕様化 + 実現 + テスト × プロダクト 時間 26 ビジネスプロセスと 開発プロセスの連動 ビジネス プロセス 狭義のアジャイルプロセスは、仕様化、実現、テストを並行 化したもの。 広義のアジャイルプロセスは、上記の他に、ビジネスプロ セス、保守プロセスなど、あらゆる事項が並行化されます。 | 仕様化 | 実現 | 保守 プロセス | ・・・ | テスト 27 知の織物 =ソフトウェア 実務指向 構造化指向 Fortran 1954 太古 関数指向 Algol60 1960 《計算》 Basic 1964 Algol68 1968 萌芽 《構造化》 CLU 1974 Fortran77 1977 Pascal 1970 飛躍 B 1969 Fortran95 1995 新世 SNOBOL 1965 Scheme 1970 C 1972 Forth 1970 Prolog 1972 ML 1974 SQL 1976 Euclid 1977 Ada 1983 《オブジェクト指向》C++ 1983 Occam 1983 Eiffel 1985 Miranda 1985 Perl 1987 成熟 28 LISP 1958 APL 1964 Modula 1976 《モジュール化》 Ansi Cobol 1983 プログラミング言語も、開発プ ロセスも、トレンドは「並行化」 Simula 1967 Smalltalk 1972 成長 専門指向 プログラミング言語の系譜 Cobol 1959 PL/I 1965 実践指向 Erlang 1987 Visual Basic 1991 Python 1990 《インターネット+アジャイル》 Java 1994 Ruby 1995 Ada95 1995 Delphi 1995 PHP 1995 《並行プロセス》 C# 2000 Groovy 2004 Scala 2003 Haskell 1987 OCaml 1996 Clojure 2008 ソフトウェアが生み出す価値と それを生み出す方法(解)との関係 解の方向 価値の局面 (定式化) 《数学》 ビジョン、戦略 組織 (マネジメント) 不確実性 (変化への対応) 進化・適応 (学習と成長) 29 抽象化 知識主導 ドメイン抽象、実装抽象 オプションとリスク 自動化 (実行) 《オートマタ》 実行可能知識 モジュール化 (構造化) 《社会学》 産業モジュール セル生産 機械化、ツール化、リターン アセット、コンポーネント化 アジャイル(スピード,俊敏) 軽量化 予見,保険,プロダクトライン 並行化,イテレーション,計測 進化型ソフト 価値と解のマトリクス 手順化 確率 進化論、パラダイム論 29 パラダイムシフト,適応 ライフサイクル ビジネス駆動、技術駆動 ベースラインとしての組織(マネジメント)に始まり、 アジャイルプロセスでは不確実性・変化への対応、 そして、次に、進化・適応の方法に向かっています。 保守,自律化,TOC コミュニケーション/確認 協調 インタフェース,調整,交渉 再(脱)構築 改革 クロスファンクション,再構成 30 個人能力や相互作用 > プロセスやツール 動くソフト > 文書 顧客協調 > 契約・交渉 変化対応 > 計画遂行 アジャイルソフトウェア開発マニフェストの中の、 より価値を置く事項を、もう少々掘り下げてみる と、『アジャイルプロセスの未来』が見えてきます。 個人能力とは? 相互作用の本当の意味? 動くソフトとは? ソフトウェアとは何か? 真の顧客協調とは? 変化はなぜ起こるのか? ・・・ 31 新アジャイルプロセス宣言 New Manifesto for Agile S/W Development 個人能力 相互作用 知識主導 言語ゲーム Knowledge central and language game over individuals and interactions 実行可能知識 動くソフト Executable Knowledge over working software 実世界 顧客協調 Real world domain over customer collaboration 進化 変化対応 Evolution over responding to change アジャイルな気持ち 新アジャイルな気持ち 今後の計画 開発・保守・利用の統合プロセス、実行可能知識の進化、 次世代のアーキテクチャ、分析手法、・・・