OCL/UML

2007年8月14日 (火)

UML.OCL->use(better, VDM++) # Stairway to Formal Method World《10》クラス定義: 型(2)map★

------------ 序 ------------

この連載では、UML/OCL に飽き足らず、ソフトウェアテストに頼ることなく、信頼性のあるシステム開発、高品質のソフトウェア開発を目指す「プロ」グラマーのために、VDM++ による形式手法への扉を開きます。"The IFAD VDM++ Language" を読み解きながら、形式手法を頼りに、Python によるオブジェクト指向プログラミングへの適用を図ります。

◆ Ruby/Python などが普及して、より本格的なオブジェクト指向の支援機能が得られるにつれ、図らずも UML/OCL の脆弱さを露呈する結果となりました。Java/C# などを対象とするだけなら、ある程度の満足は得られますが、より広範な問題解決が必要とされる場面では、不満が募ります。◆ まず、それを使って記述されたモデルの正当性を検証するため(必要十分条件を満たしているか)の、確立した方法論を持たないこと。そのため、モデルを構築 する作業をいつ止めていいのかを判断できず、XUnit に象徴されるような、ソフトウェアテストに頼らざるを得ません。◆ また、分析設計段階で作成された様々なモデル図から、実現段階へとシームレスに移行するための統合開発環境も十分に整備されているとは言えません。仮にそのモデルの正当性が検証されても、その成果はそのままコーディングに反映されずに、品質の維持には必ずしも貢献できません。手作業 によるハードコーディングを余儀なくされるとしたら、これらのモデル図は、プログラムに添えられたコメントと同じであり、それ以上でもそれ以下でもありま せん。◆ さらに…

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
【準備中】

【目次】関連記事
〔Python/VDM++ 入門〕UML.OCL->use(better) # Stairway to Formal Method World

【注意】例題は "VDM++ Lecture Notes Solutions to Exercises (C) 1999 by IFAD" をもとに、Python で実現したものです。記事の内容(引用した箇所を除く)に不備があれば、すべての責任は「タマゴ倶楽部」にあります

【査読中】

テスト仕様も、それをプログラムとして実現するなら、他のソフトウェアと同様に、形式手法を適用すべき対象となります。

------------ 本文 ------------

続きを読む "UML.OCL->use(better, VDM++) # Stairway to Formal Method World《10》クラス定義: 型(2)map★"

| | コメント (0) | トラックバック (0)

2007年8月13日 (月)

UML.OCL->use(better, VDM++) # Stairway to Formal Method World《9》クラス定義: 型(1)quote★

------------ 序 ------------

この連載では、UML/OCL に飽き足らず、ソフトウェアテストに頼ることなく、信頼性のあるシステム開発、高品質のソフトウェア開発を目指す「プロ」グラマーのために、VDM++ による形式手法への扉を開きます。"The IFAD VDM++ Language" を読み解きながら、形式手法を頼りに、Python によるオブジェクト指向プログラミングへの適用を図ります。

◆ Ruby/Python などが普及して、より本格的なオブジェクト指向の支援機能が得られるにつれ、図らずも UML/OCL の脆弱さを 露呈する結果となりました。Java/C# などを対象とするだけなら、ある程度の満足は得られますが、より広範な問題解決が必要とされる場面では、不満が募ります。◆ まず、それを使って記述されたモデルの正当性を検証するため(必要十分条件を満たしているか)の、確立した方法論を持たないこと。そのため、モデルを構築 する作業をいつ止めていいのかを判断できず、XUnit に象徴されるような、ソフトウェアテストに頼らざるを得ません。◆ また、分析設計段階で作成された様々なモデル図から、実現段階へとシームレスに移行するための統合開発環境も十分に整備されているとは言えません。仮にそ のモデルの正当性が検証されても、その成果はそのままコーディングに反映されずに、品質の維持には必ずしも貢献できません。手作業 によるハードコーディングを余儀なくされるとしたら、これらのモデル図は、プログラムに添えられたコメントと同じであり、それ以上でもそれ以下でもありま せん。◆ さらに…

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
「piyo070813.pdf」をダウンロード 

【目次】関連記事
〔Python/VDM++ 入門〕UML.OCL->use(better) # Stairway to Formal Method World

【注意】例題は "VDM++ Lecture Notes Solutions to Exercises (C) 1999 by IFAD" をもとに、Python で実現したものです。記事の内容(引用した箇所を除く)に不備があれば、すべての責任は「タマゴ倶楽部」にあります

テスト仕様も、それをプログラムとして実現するなら、他のソフトウェアと同様に、形式手法を適用すべき対象となります。

------------ 本文 ------------

続きを読む "UML.OCL->use(better, VDM++) # Stairway to Formal Method World《9》クラス定義: 型(1)quote★"

| | コメント (0) | トラックバック (0)

2007年8月 1日 (水)

♪ UML.OCL->use(better, VDM++) # Stairway to Formal Method World

------------ 序 ------------

この連載では、UML/OCL に飽き足らず、ソフトウェアテストに頼ることなく、信頼性のあるシステム開発、高品質のソフトウェア開発を目指す「プロ」グラマーのために、VDM++ による形式手法への扉を開きます。"The IFAD VDM++ Language" を読み解きながら、形式手法を頼りに、Python によるオブジェクト指向プログラミングへの適用を図ります。

◆ Ruby/Python などが普及して、より本格的なオブジェクト指向の支援機能が得られるにつれ、図らずも UML/OCL の脆弱さを 露呈する結果となりました。Java/C# などを対象とするだけなら、ある程度の満足は得られますが、より広範な問題解決が必要とされる場面では、不満が募ります。◆ まず、それを使って記述されたモデルの正当性を検証するため(必要十分条件を満たしているか)の、確立した方法論を持たないこと。そのため、モデルを構築 する作業をいつ止めていいのかを判断できず、XUnit に象徴されるような、ソフトウェアテストに頼らざるを得ません。◆ また、分析設計段階で作成された様々なモデル図から、実現段階へとシームレスに移行するための統合開発環境も十分に整備されているとは言えません。仮にそ のモデルの正当性が検証されても、その成果はそのままコーディングに反映されずに、品質の維持には必ずしも貢献できません。手作業 によるハードコーディングを余儀なくされるとしたら、これらのモデル図は、プログラムに添えられたコメントと同じであり、それ以上でもそれ以下でもありま せん。◆ さらに…

【目次】関連記事
〔Python/VDM++ 入門〕UML.OCL->use(better) # Stairway to Formal Method World

【注意】例題は "VDM++ Lecture Notes Solutions to Exercises (C) 1999 by IFAD" をもとに、Python で実現したものです。記事の内容(引用した箇所を除く)に不備があれば、すべての責任は「タマゴ倶楽部」にあります

------------ 本文 ------------

続きを読む "♪ UML.OCL->use(better, VDM++) # Stairway to Formal Method World"

| | コメント (0) | トラックバック (0)

2007年7月 6日 (金)

UML.OCL->use(better, VDM++) # Stairway to Formal Method World《8》new 式: コンストラクター★

------------ 序 ------------

この連載では、UML/OCL に飽き足らず、ソフトウェアテストに頼ることなく、信頼性のあるシステム開発、高品質のソフトウェア開発を目指す「プロ」グラマーのために、VDM++ による形式手法への扉を開きます。"The IFAD VDM++ Language" を読み解きながら、形式手法を頼りに、Python によるオブジェクト指向プログラミングへの適用を図ります。

◆ Ruby/Python などが普及して、より本格的なオブジェクト指向の支援機能が得られるにつれ、図らずも UML/OCL の脆弱さを 露呈する結果となりました。Java/C# などを対象とするだけなら、ある程度の満足は得られますが、より広範な問題解決が必要とされる場面では、不満が募ります。◆ まず、それを使って記述されたモデルの正当性を検証するため(必要十分条件を満たしているか)の、確立した方法論を持たないこと。そのため、モデルを構築 する作業をいつ止めていいのかを判断できず、XUnit に象徴されるような、ソフトウェアテストに頼らざるを得ません。◆ また、分析設計段階で作成された様々なモデル図から、実現段階へとシームレスに移行するための統合開発環境も十分に整備されているとは言えません。仮にそ のモデルの正当性が検証されても、その成果はそのままコーディングに反映されずに、品質の維持には必ずしも貢献できません。手作業 によるハードコーディングを余儀なくされるとしたら、これらのモデル図は、プログラムに添えられたコメントと同じであり、それ以上でもそれ以下でもありま せん。◆ さらに…

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
「piyo070706.pdf」をダウンロード 

【目次】関連記事
〔Python/VDM++ 入門〕UML.OCL->use(better) # Stairway to Formal Method World

【注意】例題は "VDM++ Lecture Notes Solutions to Exercises (C) 1999 by IFAD" をもとに、Python で実現したものです。記事の内容(引用した箇所を除く)に不備があれば、すべての責任は「タマゴ倶楽部」にあります

テスト仕様も、それをプログラムとして実現するなら、他のソフトウェアと同様に、形式手法を適用すべき対象となります。

------------ 本文 ------------

続きを読む "UML.OCL->use(better, VDM++) # Stairway to Formal Method World《8》new 式: コンストラクター★"

| | コメント (0) | トラックバック (0)

2007年7月 2日 (月)

UML.OCL->use(better, VDM++) # Stairway to Formal Method World《6》クラス定義: 操作(5)事前条件★

------------ 序 ------------

この連載では、UML/OCL に飽き足らず、ソフトウェアテストに頼ることなく、信頼性のあるシステム開発、高品質のソフトウェア開発を目指す「プロ」グラマーのために、VDM++ による形式手法への扉を開きます。"The IFAD VDM++ Language" を読み解きながら、形式手法を頼りに、Python によるオブジェクト指向プログラミングへの適用を図ります。

◆ Ruby/Python などが普及して、より本格的なオブジェクト指向の支援機能が得られるにつれ、図らずも UML/OCL の脆弱さを 露呈する結果となりました。Java/C# などを対象とするだけなら、ある程度の満足は得られますが、より広範な問題解決が必要とされる場面では、不満が募ります。◆ まず、それを使って記述されたモデルの正当性を検証するため(必要十分条件を満たしているか)の、確立した方法論を持たないこと。そのため、モデルを構築 する作業をいつ止めていいのかを判断できず、XUnit に象徴されるような、ソフトウェアテストに頼らざるを得ません。◆ また、分析設計段階で作成された様々なモデル図から、実現段階へとシームレスに移行するための統合開発環境も十分に整備されているとは言えません。仮にそ のモデルの正当性が検証されても、その成果はそのままコーディングに反映されずに、品質の維持には必ずしも貢献できません。手作業 によるハードコーディングを余儀なくされるとしたら、これらのモデル図は、プログラムに添えられたコメントと同じであり、それ以上でもそれ以下でもありま せん。◆ さらに…

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
「piyo070702.pdf」をダウンロード 

【目次】関連記事
〔Python/VDM++ 入門〕UML.OCL->use(better) # Stairway to Formal Method World

【注意】例題は "VDM++ Lecture Notes Solutions to Exercises (C) 1999 by IFAD" をもとに、Python で実現したものです。記事の内容(引用した箇所を除く)に不備があれば、すべての責任は「タマゴ倶楽部」にあります

要求仕様を記述する最上位の概念として、クラスを記述する方法を紹介します。

------------ 本文 ------------

続きを読む "UML.OCL->use(better, VDM++) # Stairway to Formal Method World《6》クラス定義: 操作(5)事前条件★"

| | コメント (0) | トラックバック (0)

2007年6月24日 (日)

♪ Java.use(better) # Stairway to Real Agile World

------------ 序 ------------

プログラマーにとっての「地デジ」対応は進んでいますか? この連載では、ナログ世代(Java/C#)からィジタル世代(Ruby/Python)への脱皮を目指して、「真のアジャイル対応」への準備を怠りない、プログラマーのみなさんを支援する話題を提供します。Java が抱える深刻な問題は、C# プログラマーにとって「対岸の火事」とばかりも言っていられません。Java/C# の常識は、オブジェクト指向の常識。さあ、ご一緒に「真のオブジェクト指向」の世界へと続く扉を開いてみませんか。

【目次】
〔Python/Jython 入門〕Java.use(better) # Stairway to Real Agile World

------------ 本文 ------------

続きを読む "♪ Java.use(better) # Stairway to Real Agile World"

| | コメント (0) | トラックバック (0)

♪ Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 序 ------------

この連載では、UML/OCL に飽き足らず、ソフトウェアテストに頼ることなく、信頼性のあるシステム開発、高品質のソフトウェア開発を目指す「プロ」グラマーのために、VDM++ による形式手法への扉を開きます。VDM++ に準拠するクラスライブラリーを作成する過程を通して、Python によるオブジェクト指向プログラミングへの理解を深めます。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "♪ Shall_we_Agile = Java.use(better, Python) # Swing by VDM++"

| | コメント (0) | トラックバック (0)

2007年6月 8日 (金)

UML.OCL->use(better, VDM++) # Stairway to Formal Method World《5》クラス定義: 操作(4)事前条件★

------------ 序 ------------

この連載では、UML/OCL に飽き足らず、ソフトウェアテストに頼ることなく、信頼性のあるシステム開発、高品質のソフトウェア開発を目指す「プロ」グラマーのために、VDM++ による形式手法への扉を開きます。"The IFAD VDM++ Language" を読み解きながら、形式手法を頼りに、Python によるオブジェクト指向プログラミングへの適用を図ります。

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。 
「piyo070608.pdf」をダウンロード 

【目次】関連記事
〔Python/VDM++ 入門〕UML.OCL->use(better) # Stairway to Formal Method World

【注意】例題は "VDM++ Lecture Notes Solutions to Exercises (C) 1999 by IFAD" をもとに、Python で実現したものです。記事の内容(引用した箇所を除く)に不備があれば、すべての責任は「タマゴ倶楽部」にあります

要求仕様を記述する最上位の概念として、クラスを記述する方法を紹介します。

------------ 本文 ------------

続きを読む "UML.OCL->use(better, VDM++) # Stairway to Formal Method World《5》クラス定義: 操作(4)事前条件★"

| | コメント (0) | トラックバック (0)

2007年6月 7日 (木)

UML.OCL->use(better, VDM++) # Stairway to Formal Method World《4》クラス定義: 操作(3)事前条件★

------------ 序 ------------

この連載では、UML/OCL に飽き足らず、ソフトウェアテストに頼ることなく、信頼性のあるシステム開発、高品質のソフトウェア開発を目指す「プロ」グラマーのために、VDM++ による形式手法への扉を開きます。"The IFAD VDM++ Language" を読み解きながら、形式手法を頼りに、Python によるオブジェクト指向プログラミングへの適用を図ります。

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
「piyo070607.pdf」をダウンロード

【目次】関連記事
〔Python/VDM++ 入門〕UML.OCL->use(better) # Stairway to Formal Method World

【注意】例題は "VDM++ Lecture Notes Solutions to Exercises (C) 1999 by IFAD" をもとに、Python で実現したものです。記事の内容(引用した箇所を除く)に不備があれば、すべての責任は「タマゴ倶楽部」にあります

要求仕様を記述する最上位の概念として、クラスを記述する方法を紹介します。

------------ 本文 ------------

続きを読む "UML.OCL->use(better, VDM++) # Stairway to Formal Method World《4》クラス定義: 操作(3)事前条件★"

| | コメント (0) | トラックバック (0)

2007年6月 6日 (水)

UML.OCL->use(better, VDM++) # Stairway to Formal Method World《3》クラス定義: 操作(2)代入文★

------------ 序 ------------

この連載では、UML/OCL に飽き足らず、ソフトウェアテストに頼ることなく、信頼性のあるシステム開発、高品質のソフトウェア開発を目指す「プロ」グラマーのために、VDM++ による形式手法への扉を開きます。"The IFAD VDM++ Language" を読み解きながら、形式手法を頼りに、Python によるオブジェクト指向プログラミングへの適用を図ります。

◆ Ruby/Python などが普及して、より本格的なオブジェクト指向の支援機能が得られるにつれ、図らずも UML/OCL の脆弱さを 露呈する結果となりました。Java/C# などを対象とするだけなら、ある程度の満足は得られますが、より広範な問題解決が必要とされる場面では、不満が募ります。◆ まず、それを使って記述されたモデルの正当性を検証するため(必要十分条件を満たしているか)の、確立した方法論を持たないこと。そのため、モデルを構築 する作業をいつ止めていいのかを判断できず、XUnit に象徴されるような、ソフトウェアテストに頼らざるを得ません。◆ また、分析設計段階で作成された様々なモデル図から、実現段階へとシームレスに移行するための統合開発環境も十分に整備されているとは言えません。仮にそ のモデルの正当性が検証されても、その成果はそのままコーディングに反映されずに、品質の維持には必ずしも貢献できません。手作業 によるハードコーディングを余儀なくされるとしたら、これらのモデル図は、プログラムに添えられたコメントと同じであり、それ以上でもそれ以下でもありま せん。◆ さらに…

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
「piyo070606.pdf」をダウンロード

【目次】関連記事
〔Python/VDM++ 入門〕UML.OCL->use(better) # Stairway to Formal Method World

【注意】例題は "VDM++ Lecture Notes Solutions to Exercises (C) 1999 by IFAD" をもとに、Python で実現したものです。記事の内容(引用した箇所を除く)に不備があれば、すべての責任は「タマゴ倶楽部」にあります

要求仕様を記述する最上位の概念として、クラスを記述する方法を紹介します。

------------ 本文 ------------

続きを読む "UML.OCL->use(better, VDM++) # Stairway to Formal Method World《3》クラス定義: 操作(2)代入文★"

| | コメント (0) | トラックバック (0)

2007年6月 5日 (火)

UML.OCL->use(better, VDM++) # Stairway to Formal Method World《2》クラス定義: 操作(1)陽操作定義★

------------ 序 ------------

この連載では、UML/OCL に飽き足らず、ソフトウェアテストに頼ることなく、信頼性のあるシステム開発、高品質のソフトウェア開発を目指す「プロ」グラマーのために、VDM++ による形式手法への扉を開きます。"The IFAD VDM++ Language" を読み解きながら、形式手法を頼りに、Python によるオブジェクト指向プログラミングへの適用を図ります。

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
「piyo070605.pdf」をダウンロード 

【目次】関連記事
〔Python/VDM++ 入門〕UML.OCL->use(better) # Stairway to Formal Method World

【注意】例題は "VDM++ Lecture Notes Solutions to Exercises (C) 1999 by IFAD" をもとに、Python で実現したものです。記事の内容(引用した箇所を除く)に不備があれば、すべての責任は「タマゴ倶楽部」にあります

要求仕様を記述する最上位の概念として、クラスを記述する方法を紹介します。

------------ 本文 ------------

続きを読む "UML.OCL->use(better, VDM++) # Stairway to Formal Method World《2》クラス定義: 操作(1)陽操作定義★"

| | コメント (0) | トラックバック (0)

2007年6月 4日 (月)

UML.OCL->use(better, VDM++) # Stairway to Formal Method World《1》クラス定義: インスタンス変数★

------------ 序 ------------

この連載では、UML/OCL に飽き足らず、ソフトウェアテストに頼ることなく、信頼性のあるシステム開発、高品質のソフトウェア開発を目指す「プロ」グラマーのために、VDM++ による形式手法への扉を開きます。"The IFAD VDM++ Language" を読み解きながら、形式手法を頼りに、Python によるオブジェクト指向プログラミングへの適用を図ります。

◆ Ruby/Python などが普及して、より本格的なオブジェクト指向の支援機能が得られるにつれ、図らずも UML/OCL の脆弱さを 露呈する結果となりました。Java/C# などを対象とするだけなら、ある程度の満足は得られますが、より広範な問題解決が必要とされる場面では、不満が募ります。◆ まず、それを使って記述されたモデルの正当性を検証するため(必要十分条件を満たしているか)の、確立した方法論を持たないこと。そのため、モデルを構築 する作業をいつ止めていいのかを判断できず、XUnit に象徴されるような、ソフトウェアテストに頼らざるを得ません。◆ また、分析設計段階で作成された様々なモデル図から、実現段階へとシームレスに移行するための統合開発環境も十分に整備されているとは言えません。仮にそ のモデルの正当性が検証されても、その成果はそのままコーディングに反映されずに、品質の維持には必ずしも貢献できません。手作業 によるハードコーディングを余儀なくされるとしたら、これらのモデル図は、プログラムに添えられたコメントと同じであり、それ以上でもそれ以下でもありま せん。◆ さらに…

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
「piyo070604.pdf」をダウンロード 

【目次】関連記事
〔Python/VDM++ 入門〕UML.OCL->use(better) # Stairway to Formal Method World

【注意】例題は "VDM++ Lecture Notes Solutions to Exercises (C) 1999 by IFAD" をもとに、Python で実現したものです。記事の内容(引用した箇所を除く)に不備があれば、すべての責任は「タマゴ倶楽部」にあります

要求仕様を記述するときの最上位の概念として「クラス」を記述します。

------------ 本文 ------------

続きを読む "UML.OCL->use(better, VDM++) # Stairway to Formal Method World《1》クラス定義: インスタンス変数★"

| | コメント (0) | トラックバック (0)

2007年5月25日 (金)

【準備中】連載: 気分はGroovy〜婚姻届問題《番外編》只今リハビリ中

 思い起こせば、ここに連載するはずの記事を保留にしたまま、はや十か月余りが過ぎてしまいました。当初は、Groovy で記述する予定でしたが、やはり Java の縛(釈迦の掌の内にある孫悟空?)からは逃れられそうになく、将来の明るい見通しも立ちそうにもないので、断念せざるを得ないという状況です。その間 Ruby/Python からも遠ざかっていたので、今はリハビリ(?)を兼ねて、別の連載を担当しています。今後は、Groovy/Pnuts に代えて、Ruby/Python などで記述した事例を紹介する予定です。
 この「婚姻届問題」は、自然言語で記述された要求仕様とは別に、VDM++ で記述された要求仕様に従って、Smalltalk で実現した事例がもとになっています。別解として、これと同等の(やや見劣りはしますが)JML/Java で実現したものがあります。
 この事例は、一般的なグラフ索を、限定的に扱った問題として捉えることができます。単純な木の探索と違って、両親が別々の家系図に属していることから、「三親等にある」という関係をどのようなデルで表現するかが鍵となります。さらに、応用問題として、RDB を使ったデータベーススキーマの定義を考案してみるのも面白いでしょう。
 過去に「未成年男子17歳を含む婚姻届けが受理された」という不手際がニュースにもなりました。現実的な問題として、役所の窓口では、婚姻の条件を満たしているかをここまで厳密に調べることはないでしょう。しかし、このようなシステム開発の発注があったと仮定するなら、興味深い課題になるかもしれません。みなさんも、いろいろな事例を実現してみると、その理解が深まるかもしれません。
 式手法の適用は、先進的な欧米企業の取り組みに比べて、まだ多くの日本企業(大学や研究機関は別として)は発展途上にあると言えます。しかし、先日の「NTT ひかり電話」の障害の原因が「アルファベットの大文字を誤って小文字で入力したこと」にあると聞くと、対岸の火事とばかりも言っていられません。さあみなさんも、そろそろ危機感を持って、形式手法に本腰を入れて取り組んでみませんか。

==================================
後藤いるか 著 ◆ 監修:小泉ひよ子とタマゴ倶楽部

| | コメント (0) | トラックバック (1)

2007年5月21日 (月)

Python.use(better, anti="GoF") # Let's GoForward《1》Observer(1)パターン前夜★

------------ 序 ------------

この連載では、GoF デザインパターンを反面教師として、真のオブジェクト指向の世界を目指す旅へと誘(いざな)います。GoF が何を伝え、何を伝えなかったのか。そのルーツを探ってみると、新たな知見が開けてきます。そろそろ、釈迦の掌(Java/C#)から脱して、天竺(Ruby/Python)へと旅立ちませんか。さあ、ご一緒に。Let's Go Forward ...

ここで公開している内容は「キーワード検索」を利用するための便宜的なものです。是非、オリジナル(PDF 版)でご覧ください。
「piyo070521.pdf」をダウンロード 

GoF のデザインパターンは、図らずも Java/C# の脆弱さを露呈する結果となりました。Ruby/Python などより洗練されたオブジェクト指向の支援が得られる環境下では、いくつかのパターンは単純なイディオムに過ぎず、言語によっては組み込みの機能として提 供されているものも珍しくありません。また、GoF の事例を鵜呑みにすると、迂遠なアプローチを余儀なくされるばかりか、Ruby/Python などのより洗練された特徴を活かせません。GoF を模写しても始まりません。GoF が模写したそのルーツを探ることで、パターンの本質に迫れます。

【目次】
〔Python/Jython 入門〕Python.use(better, anti="GoF") # Let's GoForward

Observer パターンは、MVC フレームワークにも導入されていますが、その違い…

------------ 本文 ------------

続きを読む "Python.use(better, anti="GoF") # Let's GoForward《1》Observer(1)パターン前夜★"

| | コメント (0) | トラックバック (0)

2006年10月27日 (金)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《20》対応表 VDM++/Python/OCL

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット)をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《20》対応表 VDM++/Python/OCL"

| | コメント (0) | トラックバック (0)

2006年10月26日 (木)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《19》Map に対する演算(4)

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット )をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む " Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《19》Map に対する演算(4)"

| | コメント (0) | トラックバック (0)

2006年10月25日 (水)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《18》Map に対する演算(3)

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット )をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む " Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《18》Map に対する演算(3)"

| | コメント (0) | トラックバック (0)

2006年10月24日 (火)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《17》Map に対する演算(2)

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット)をダウンロードしてご覧ください。 

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《17》Map に対する演算(2)"

| | コメント (0) | トラックバック (0)

2006年10月23日 (月)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《16》Map に対する演算(1)

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット)をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《16》Map に対する演算(1)"

| | コメント (0) | トラックバック (2)

2006年10月19日 (木)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《14》Seq に対する演算(4)

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット )をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《14》Seq に対する演算(4)"

| | コメント (0) | トラックバック (0)

2006年10月18日 (水)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《13》Seq に対する演算(3)

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット)をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《13》Seq に対する演算(3)"

| | コメント (0) | トラックバック (0)

2006年10月17日 (火)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《12》Seq に対する演算(2)

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット )をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《12》Seq に対する演算(2)"

| | コメント (0) | トラックバック (0)

2006年10月16日 (月)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《11》Seq に対する演算(1)

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット )をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む " Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《11》Seq に対する演算(1)"

| | コメント (0) | トラックバック (0)

2006年10月12日 (木)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《9》Set に対する演算(7)

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット )をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《9》Set に対する演算(7)"

| | コメント (0) | トラックバック (1)

2006年10月11日 (水)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《8》Set に対する演算(6)

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット )をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《8》Set に対する演算(6)"

| | コメント (0) | トラックバック (0)

2006年10月10日 (火)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《7》Set に対する演算(5)

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット )をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《7》Set に対する演算(5)"

| | コメント (0) | トラックバック (0)

2006年10月 9日 (月)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《6》Set に対する演算(4)

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット )をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《6》Set に対する演算(4)"

| | コメント (0) | トラックバック (0)

2006年10月 6日 (金)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《5》Set に対する演算(3)

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット )をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《5》Set に対する演算(3)"

| | コメント (0) | トラックバック (0)

2006年10月 5日 (木)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《4》Set に対する演算(2)

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット )をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《4》Set に対する演算(2)"

| | コメント (0) | トラックバック (0)

2006年10月 4日 (水)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《3》Set に対する演算(1)

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット )をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《3》Set に対する演算(1)"

| | コメント (0) | トラックバック (0)

2006年10月 3日 (火)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《2》Set 集合型

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット )をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《2》Set 集合型"

| | コメント (0) | トラックバック (1)

2006年10月 2日 (月)

Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《1》事例:2006 FIFA ワールドカップ

------------ 序 ------------

こで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(リッチテキストフォーマット )をダウンロードしてご覧ください。

Macintosh (Mac OS X 10.4 以降の) ユーザーのみなさんは
Web アーカイブ

Java によるシステム開発を加速するだけでなく、厳密な要求仕様を精確に反映させる術を導入すべく、VDM++ に準拠するクラスを実現します。VDM++ で記述された要求仕様を理解するとともに、Python/Jython によるプログラミングの習得を目指します。

【目次】
〔Python/VDM++ 入門〕Shall_we_Agile = Java.use(better, Python) # Swing by VDM++

------------ 本文 ------------

続きを読む "Shall_we_Agile = Java.use(better, Python) # Swing by VDM++《1》事例:2006 FIFA ワールドカップ"

| | コメント (0) | トラックバック (0)

2006年6月11日 (日)

【予告編】連載: Java.use(better) NITRIS 問題《Season II》

------------ 序 ------------

だれかを槍玉にして、
あいつが悪人だから、
あいつをやっつければ世界が平和になる
っていう映画はね、それだけは創りたくない

宮崎 駿

◆ Swing コンポーネントを利用して、ゲーム画面を作成します。また、ゲームの規則(要求仕様)を記述するのに、新たに VDM++ を導入します。OCL には、Map に関する規定が不十分なので、これを補うために、VDM++ を選択しました。

◆ 今秋、公開予定。Java.use(better) NITRIS 問題《Season II》を、お楽しみにお待ちください。

キーワード ◆ Java・Jython・Python・OCL・VDM++

------------ 本文 ------------

続きを読む "【予告編】連載: Java.use(better) NITRIS 問題《Season II》"

| | コメント (0) | トラックバック (0)

2006年5月10日 (水)

連載: Smalltalk use: better《3》3つの基本要素:リテラル★

キーワード ◆ Alan Kay・Character・Float・LargePositiveInteger・SmallInteger・String・センダー・メッセージ式・リテラル・レシーバー・変数

※ PDF でご覧になるなら ⇒ 「piyo60510.pdf」をダウンロード

------------ 序 ------------

先代と同じ味を作り上げても、誰も認めてはくれない、
先代と違う味を出してはじめて「先代と似てきた」そう言われる。

料理人 徳岡

◆ Alan Kay さんが描いた夢は、四半世紀の時空を越えて、Squeak という形で転生しました。Smalltalk とはひとを違う Squeak の今後の展開が楽しみです。わくわく。

------------ 本文 ------------

続きを読む "連載: Smalltalk use: better《3》3つの基本要素:リテラル★"

| | コメント (0) | トラックバック (0)

2006年4月28日 (金)

連載: Java.use(better) NITRIS 問題《20》ぜ〜んぶまとめてポイ

------------ 序 ------------

◆ 全20回に渡る連載も、今回で終わりです。当初の予定では、第1〜19回を伊藤が、第20回を私(小泉)が執筆する予定でした。しかし、途中で伊藤が体調を崩すなどの事情もあって、第17〜18回の掲載分については、伊藤が用意した部分原稿をもとに、私が代筆しました。◆ この最終回では、この連載を通して、みなさんに何を学んで欲しかったのか、私たちが何を伝えたかったのか、そのすべてを明らかにします。

◆ 続編では、今回の例題が、新たな展開を示します。6月に掲載する予定ですが、現段階では、確かな約束をできません。当てにせず(?)お待ちください。◆ また、寄せていただいたコメントは、原則として非公開とします。また、公開に値する内容(FAQ など)については、投稿者の許可を得て、執筆担当者を含む「タマゴ倶楽部」のスタッフが回答を掲載します。◆ 5月は、新たな話題を提供すべく、別の担当者が記事を執筆します。そちらもお楽しみに…。

60400※ PDF でご覧になるなら ⇒ 「piyo60428.pdf」をダウンロード
.
.
.

------------ 本文 ----------- 

続きを読む "連載: Java.use(better) NITRIS 問題《20》ぜ〜んぶまとめてポイ"

| | コメント (0) | トラックバック (4)

2006年4月27日 (木)

連載: Java.use(better) NITRIS 問題《19》気を取り直して青信号★

キーワード ◆ context・indexOf 演算・post・pre・result・self・Sequence 型・オブジェクト指向・ソフトウェア危機・契約に基づく設計・事後条件・事前条件
サンプルプログラム ◆ Nitris.py

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
「piyo60427.pdf」をダウンロード

------------ 序 ------------

◆ 昨日に続いて、双子にまつわる話題を…。◆「ふたりっ子」のマナカナ姉妹は、二卵性だそうです。あの息もッタリの間合いには、一卵性と見紛うほどの不思議と驚きを覚えます。驚きと言えば、瞬間移動という定番のマジックがあります。著名なマジシャンの中には、双子というケースが珍しくありません。人目を憚ってしか会うことが叶わず、それは悲しくもありプロの定めとも言えます。とは言え、マジックを披露されたら、驚きの表情を見せてあげるのも、観客のプロとしてのみのひとつです。ところで、マナカナ姉妹には、こんなエピソードがあります。待ち合わせ場所で、先に来ているはずの相手の姿を見つけて思わず手を振ったら、実は鏡に映った自分の姿だった…。これも、双子ならではの感性ですね。

◆ 今回は、プログラマーの嗜みとして「契約に基づく設計」を紹介します。利用者の価値観が多様化するにつれ「少品種大量生産から、多品種少量生産へ」と、ピジネスモデルの基盤も変化してきました。絶えず変化する顧客の要求に、素早く対処できる手法(開発環境およびプログラミング言語)が必要でした。1970 年代の初頭「オブジェクト指向」の概念をソフトウェア開発に導入しようとする試みに着手したのには、当時のこのような背景もあったのです。「ソフトウェア危機」が叫ばれる中で、Smalltalk-72 は産声を上げます。◆ 今回から、続編の布石として、Sequence 型を登場させます。どのような開発手法を導入しようとも「顧客と開発者との息もッタリだね」と言われることを、私たち「タマゴ倶楽部」のみとしています。《ひよ子》

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《19》気を取り直して青信号★"

| | コメント (0) | トラックバック (0)

2006年4月26日 (水)

連載: Java.use(better) NITRIS 問題《18》分ったつもりが黄信号★★★

キーワード ◆ excludes 演算・includes 演算・reject 演算・select 演算・フレームワーク・リファクタリング・因数分解
サンプルプログラム
◆ Nitris.py

※ PDF でご覧になるなら ⇒ 「piyo60426.pdf」をダウンロード

------------ 序 ------------

◆ 昨日は何の日。まだ記憶に新しい事故の話題に終始したので、今日はこちらの話題を…。◆ 1953年4月25日『ネイチャー』誌に DNA に関する論文が掲載されます。今でこそ、犯罪ドラマのネタになるほど広く認知されました。では、古典的な指紋による証拠に取って代わるのでしょうか。クローン人間は、SF の世界だけのような印象を与えますが、天然(?)には双子が存在します。同じ遺伝子を持つことから、DNA 鑑定だけでは個人を特定できません。しかし、双子でも、その指紋はまったく違います。ともすると、最新技術に目を奪われがちですが、古くて新しい技術にも、学ぶことは多々あります。温故知新。IT 業界もその例外ではありません。詳しくは、今後の連載で…。

◆ 今回は、★の数をいくつに設定するかで迷いました。2つ半…と言いたいところですが、3つ星がひとつくらいあってもいいのでは…との意見もあって、このように設定しました。◆ リァクタリングは、今でこそ広く認知されていますが、私が Smalltalk で開発に着手した 1988 年頃には、まだ知る人ぞ知るという状況でした。もちろん、その当時はリファクタリングという言葉すらなく、仲間内では、メタファーを使って factorization〔数分解〕と呼んでいたものです。あれから、十数年の時を隔てて、古くて新しい技術が再び注目されたことに、感慨深いものがあります。◆ 今回示したリファクタリングの事例は、みなさんの実力を自己判断する金石となるかもしれません。得意とするプログラミング言語で実現してみてください。成功すれば「2つ星」獲得です。さもなければ…《ひよ子》

※ 本日も、伊藤が体調不良につき、代わりに、小泉ひよ子が担当します。明日は、大丈夫とのことです。

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《18》分ったつもりが黄信号★★★"

| | コメント (0) | トラックバック (0)

2006年4月25日 (火)

連載: Java.use(better) NITRIS 問題《17》赤信号ならどうするの★★

キーワード ◆ implies 演算・真理値表・複合命題・命題論理
サンプルプログラム ◆ Nitris.py

※ PDF でご覧になるなら ⇒ 「piyo60425.pdf」をダウンロード

------------ 序 ------------

◆ 今日は何の日。まだ、記憶に新しい福知山線(JR宝塚線)の脱線事故。かと思えば、つい昨日は、山手線のトラブル騒動です。システム管理者の立場からすると、普段は、何も起こらなくて当たり前、何か起ころうものなら「何やっていたんだ」と非難されてしまうという損な役回りです。一年365日、弛むことなく努力していてもあまり評価されず、たった一日のトラブルで、残りの364日までも全否定されてしまったりするものです。日々感謝されることもなく、地味な存在ですが、そんなみなさんに、この場を借りてエールを送りたいと思います。今日も、ご苦労さまです。◆ 1953年には、『ネイチャー』誌にクリックとワトソンのDNAの二重らせん構造に関する論文が掲載されます。この話題については、また別の機会に…

◆ セミナー等で、命題論理を説明するときに、いつも苦労するのが「a ならば b」の複合命題です。受験のとき、丸暗記した…という人も少なくないでしょう。しかし、その理屈さえ理解できたら、なにも丸暗記する必要はないのです。ただし、他の演算子と違って、結合則も交換則も成立しないので、その点には注意が必要です。《ひよ子》

※ 本日は、伊藤が体調不良につき、代わりに、小泉ひよ子が担当します。

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《17》赤信号ならどうするの★★"

| | コメント (0) | トラックバック (0)

2006年4月24日 (月)

連載: Java.use(better) NITRIS 問題《16》何を集めてきたのか★★

キーワード ◆ collect 演算・コレクションフレームワーク・ループ演算・因数分解
サンプルプログラム ◆ Nitris.py

※ PDF でご覧になるなら ⇒ 「piyo60424.pdf」をダウンロード

------------ 序 ------------

◆ 今日は何の日。1963年、週刊マーガレットが創刊されます。「吉展ちゃん誘拐殺人事件」が発生して、「ケネディ大統領暗殺事件」が通信衛星を介して、たまたま、日米間テレビ伝送実験中に配信されるなど、新たな技術革新とともに、社会的な不安を抱えた年です。現在なら、衛星放送より早く、インターネットを介して、世界中に配信されることでしょう。さて、話を週刊マーガレットに戻すと、後に「ベルサイユのばら (池田理代子)」などが話題となりますが、個人的には「アタックNo.1 (浦野千賀子)」ですね。最近、実写版としてリメイクされましたが、「エースをねらえ! (山本鈴美香)」などもそうです。男の子たちが「巨人の星」や「あしたのジョー」なら、女の子たちは…。「スポ根」というジャンルが確立されるなど、こうした作品に、男女を問わず夢中になった時代ですね。

◆ ループの最後に登場するのが、collect 演算です。OCL では、collect 演算について便利な簡略表記が規定してあるなど、実用面では基本中の基本とも言える演算です。まさに、真打ち登場と言えるでしょう。《ひよ子》

【目次】
〔Python/Jython 入門〕Java.use(better) # Stairway to Real Agile World

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《16》何を集めてきたのか★★"

| | コメント (0) | トラックバック (0)

2006年4月21日 (金)

連載: Java.use(better) NITRIS 問題《15》それぞれにあるでしょう★★

キーワード ◆ symmetricDifference 演算・インデクサー・メンバーシップ・演算子 []・演算子 ^・演算子の多重定義・排他和集合
サンプルプログラム
◆ Nitris.py

※ PDF でご覧になるなら ⇒ 「piyo60421.pdf」をダウンロード

------------ 序 ------------

◆ 今日は何の日。4月21日と言えば、後に忠臣蔵の切っ掛けとなる「松の廊下での刃傷」でしょうか。えっ、それなら「3月14日」では…。そう、これには理由があります。旧暦の3月14日は、グレゴリオ暦では1701年4月21日となるのです。1582年、ユリウス暦からグレゴリオ暦へと移行したときには、10月4日(木曜)の翌日が10月15日(金曜)になるという、興味深い史実があります。興味があるなら、その年のカレンダーを表示してみてください。そのツールが、この史実を忠実に再現できるかは、興味深いところです。日本でグレゴリオ暦が導入されたのは、1873年(明治6年)から。その年の12月は2日しかなく、社会的な混乱を招きました。でも、個人的には、1934年、ハチ公像が渋谷駅前でデビューしたことかしら。

◆ 集合の基本演算を紹介するのも、今日で最後となります。排他和集合を求める演算は、本文で紹介した定義だけではなく、和集合と差集合を組み合わせて、(S1 − S2) ∪ (S2 − S1) としても定義できます。◆ コードを簡潔に記述するために、多重定義された演算子を用意します。《ひよ子》

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《15》それぞれにあるでしょう★★"

| | コメント (0) | トラックバック (0)

2006年4月20日 (木)

連載: Java.use(better) NITRIS 問題《14》どちらにもあるでしょう★★

キーワード ◆ __add__・__mul__・__xor__・intersection 演算・symmetricDifference 演算・union 演算・演算子 *
サンプルプログラム ◆ Nitris.py

※ PDF でご覧になるなら ⇒ 「piyo60420.pdf」をダウンロード

------------ 序 ------------

◆ 今日は何の日。歴史上の人物の誕生日で、興味を引かれたのがナポレオン3世です。ルパン三世は、アルセーヌ•リュパンの孫にあたりますが、こちらは「余の辞書に不可能の文字ない」ナポレオン1世の甥です。Impossible, n'est pas francais.「不可能という言葉はフランス的ではない」という口癖が、後に語り継がれました。話をナポレオン3世に戻すと、その功績にパリ博の開催があります。これには、日本(幕府、薩摩藩、鍋島藩)が初めて出展しました。昨年閉幕した愛知博のお膝元、名古屋城の金シャチが出典されたのが、1873 年に明治政府が初参加したウィーン博。その百年後、オセロゲームが発売され「うちのカミさんがね」が口癖のコロンボが話題になり、後の Apple に影響を与えた Alto が産声を上げます。さらに、十年後の 1983 年には、Smalltalk-80 が公開されます。

◆ 昨日に引き続き、集合の基本演算を紹介します。今日紹介する積集合を求める演算は、和集合、補集合と並ぶ基本演算のひとつです。◆ コードを簡潔に記述するために、多重定義された演算子を用意します。《ひよ子》

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《14》どちらにもあるでしょう★★"

| | コメント (0) | トラックバック (0)

2006年4月19日 (水)

連載: Java.use(better) NITRIS 問題《13》こちらだけにあるでしょう★★

キーワード ◆ excluding 演算・including 演算・メソッド関数 __sub__・演算子 -・演算子の多重定義・差集合
サンプルプログラム ◆ Nitris.py

※ PDF でご覧になるなら ⇒ 「piyo60419.pdf」をダウンロード

------------ 序 ------------

◆ 毎月 19 日は「シュークリームの日」だとか。「じゅうく」と「シューク」との語呂合わせなのでしょうね。「シュー」と言えば、春キャベツの美味しい季節です。そんな旬のキャベツをたくさん使って、お腹も一杯になる料理と言えば、やはり「お好み焼き」ですね。みなさんも今日のメニューにいかが…。

◆ 昨日に引き続き、集合の基本演算を紹介します。今日紹介する差集合を求める演算は、他の基本演算(積集合、補集合)から導出できます。しかし、その用途は広く、実用上は基本演算のひとつと見なせます。◆ OCL では、これを演算子 - を使って規定してあるので、Jython で実現するときには、演算子の多重定義を使います。《ひよ子》

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《13》こちらだけにあるでしょう★★"

| | コメント (0) | トラックバック (0)

2006年4月18日 (火)

連載: Java.use(better) NITRIS 問題《12》どちらかにあるでしょう★★

キーワード ◆ - 演算・∩・∪・excluding 演算・including 演算・intersection 演算・OCL・Set 型・symmetricDifference 演算・union 演算・VDM++・事後条件・和集合
サンプルプログラム ◆ Nitris.py

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
「piyo60418.pdf」をダウンロード

------------ 序 ------------

◆ 今日から、今週の残りを使って、集合の基本演算を紹介します。理解して使いこなせるまでには、いくつかの困難を乗り越えなければなりません。しかし、これらの困難を乗り越えると、複雑なプログラミングがとても容易になります。毎日、ひとつずつ、詳細に解説しますので、あせらずに一歩ずつゴールに近づきましょう。

◆ 集合演算の基本中の基本とも言えるものに、和集合積集合があります。数学が苦手というみなさんは、 だとか だとかが登場するだけで、遠ざけたい気持ちに駆られるかもしれません。しかし、他の集合演算は、これらを使って導出できるので、これを避けて通ることはできません。◆ また、これらの演算は、典型的なイディオムとして多用されるだけでなく、OCL の事後条件の意義や、テストケースの自動抽出など、さまざまな話題を提供します。《ひよ子》

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《12》どちらかにあるでしょう★★"

| | コメント (0) | トラックバック (0)

2006年4月17日 (月)

連載: Java.use(better) NITRIS 問題《11》ホラここにもあそこにも★★

キーワード ◆ excluding 演算・including 演算・Set 型・コレクションフレームワーク
サンプルプログラム ◆ Nitris.py

※ PDF でご覧になるなら ⇒ 「piyo60417.pdf」をダウンロード

------------ 序 ------------

◆ 先週に続いて今週も、ゲーム作りの手を休めて、快適なプログラミング作業に役立つ、フレームワークの構築を続けます。Java 原人から、ホモサピエンスへと、進化の道程はまだ遠いのですが、あせらずに一歩ずつゴールを目指しましょう。

コレクションフレームワークとして提供される Set 型には、いくつかの演算が規定してあります。including 演算と excluding 演算とは、これらを対にして理解するのがよいでしょう。さらに、これらの演算が、実際のアプリケーション開発では、どの場面で登場してきたのかを再確認します。《ひよ子》

【目次】
〔Python/Jython 入門〕Java.use(better) # Stairway to Real Agile World

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《11》ホラここにもあそこにも★★"

| | コメント (0) | トラックバック (0)

2006年4月14日 (金)

連載: Java.use(better) NITRIS 問題《10》でもここなら置けますよ★★

キーワード ◆ __class__・lambda 式・OCL・reject 演算・select 演算・Smalltalk・クロージャー・ハリウッドの原則・フレームワーク
サンプルプログラム ◆ Nitris.py

※ PDF でご覧になるなら ⇒ 「piyo60414.pdf」をダウンロード

------------ 序 ------------

フレームワークの本質を理解するときに「ハリウッドの則」と呼ばれるメタファーが役立ちます。伝統的なプログラミングスタイルから脱却して、オブジェクト指向を習得するときに、越えなければならない壁のひとつと言えるでしょう。◆ あるクラスを定義して、メソッドを記述するとともに、そのメソッドを呼出すコードを記述することでしょう。しかし、これからフレームワークについて理解しようとするときに、自分が記述したコードを自分が呼出すことがないという状況に直面します。いわば、既存のフレームワークから呼出してもらうためのコードを記述するという立場です。「私を呼ぶなかれ、私あなたを呼ぶのだ」

◆ select 演算と reject 演算とは、相補的な関係にあるので、これらを対にして理解するのが早道です。◆ Jython では、クロージャーが使えないので、λ式を使ってコレクション演算を実現しています。Smalltalk では、伝統的な select: や reject: など、クロージャーを使った汎用的なフレームワークが提供されています。OCL では、iterate 演算を基本として、他のループ演算を体系的に導出しています。同様に、Smalltalk では、do: を中核に体系化されています。そのため、Collection を頂点とするクラス体系では、do: を再定義するだけで、他のメソッドを再定義する必要がなくなります。JRuby/Ruby や Groovy でもクロージャーを使えるので、Jython/Python と比べると、より簡潔なコードを記述できることでしょう。《ひよ子》

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《10》でもここなら置けますよ★★"

| | コメント (0) | トラックバック (0)

2006年4月13日 (木)

連載: Java.use(better) NITRIS 問題《9》でもそこには置けません★★

キーワード ◆ excludes 演算・includes 演算・イディオム・デザインパターン・形式手法
サンプルプログラム ◆ Nitris.py

※ PDF でご覧になるなら ⇒ 「piyo60413.pdf」をダウンロード

------------ 序 ------------

◆ 数学が好きな人はさておき、そうと聞いただけで苦手意識を持つ受講者にとって、論理演算はさらに敷居が高くなるようです。しかし、受講者が記述しているコードの中には、論理学の世界で解決済みの問題を、繰り返し解いているだけのものが少なくありません。◆ デザインパターンを積極的に導入することで、便利な道具の再生産を避けて、それに掛かる能力を創造的な活動に専念できるという効能が期待できます。同様に、形式手法を導入することで、主観に頼らず、客観的な検証が可能なコードを記述できることに期待が膨らみます。◆ 数学が苦手という受講者のみなさんは、あまり難しく考えず、イディオムのひとつとして、コーディングスタイルのひとつに気軽に取り入れてみてはいかがでしょうか。

◆ includes 演算と excludes 演算とは、相補的な関係にあるので、これらを対にして理解するのが早道です。◆ この連載では、Python/Jython や OCL への興味を抱けるよう、その扉を開くときに、あえて遠回りのアプローチを取っている場面が少なくありません。あるときは、実行時の効率を優先して、またあるときは、開発時の効率を優先しています。これらのトレードオフは、永遠に終ることのない論議が繰り返されることでしょう。そんな訳ですから、むしろ面教師として見て欲しい箇所も、あえてそのまま公開しています。その点には、くれぐれもご注意を…。《ひよ子》

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《9》でもそこには置けません★★"

| | コメント (0) | トラックバック (1)

2006年4月12日 (水)

連載: Java.use(better) NITRIS 問題《8》そして何度も繰り返す★★

キーワード ◆ ∀・∃・and・exists 演算・forAll 演算・iterate 演算・or・言語依存性・証明・全称限量・存在限量・単体テスト

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
「piyo60412.pdf」をダウンロード 

------------ 序 ------------

◆ 論理学の世界では馴染み深い (全称限量)や (存在限量)ですが、この記法が出てくるだけで尻込みしてしまう受講者も珍しくありません。しかし、同じ概念を、for 文や if 文を使って説明すると、とたんに受講者の目が輝いてくるという光景が見られます。むしろ、プログラマーのみなさんを対象とするなら、まず記述したコードを見せたあとで、その概念を理解していただくのが、早道なのかもしれません。

◆ ループ演算の中核を成す iterate 演算を使って、他の演算 forAll および exists を導きます。iterate 演算を実現するときは、Jython に固有の機能を使って実現しますが、その他の演算は、iterate 演算を使って導出します。すると、導出したことによる論理的な合性はすでに証明されているので、iterate 演算に関する単体テストを実施するだけで、同等の頼性が得られるようになります。《ひよ子》

【目次】関連記事
〔Python/Jython 入門〕Java.use(better) # Stairway to Real Agile World

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《8》そして何度も繰り返す★★"

| | コメント (0) | トラックバック (0)

2006年4月11日 (火)

連載: Java.use(better) NITRIS 問題《7》集めた石でブロックを作る★★

キーワード ◆ iterate 演算・lambda 式・クロージャー・ループ演算
サンプルプログラム ◆ Nitris.py

※ PDF でご覧になるなら ⇒ 「piyo60411.pdf」をダウンロード

------------ 序 ------------

◆ フレームワークを適用した事例として、ゲーム作りで必要になるメソッド関数を実現するときに、OCL で規定されたループ演算を使ったものを紹介します。Jython に組み込みの機能を使って実現したものと比べて、すでに実績のあるコレクションフレームワークを活用することで、信頼性のあるコードを記述できます。これによって、単体テストにかかるコストを低減するなどの、効用が期待できます。

◆ iterate 演算は、ループ演算(select、reject、collect、forAll、exists)の中核を成すもので、これから他の演算を導くことができます。クロージャーは、Smalltalk だけでなく、Groovy や JRuby でも利用できるようになりました。しかし、Jython では、クロージャーを利用できません。そこで、lambda 式を使って、iterate 演算を実現することにします。《ひよ子》

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《7》集めた石でブロックを作る★★"

| | コメント (0) | トラックバック (0)

2006年4月10日 (月)

連載: Java.use(better) NITRIS 問題《6》私のコレクションは石集め★★

キーワード ◆ __init__・__str__・iterate 演算・java.util・len・OCL・Python・Ruby・Set 型・size 演算・Smalltalk・type・VDM・コレクションフレームワーク・タプル・リスト・辞書・文字列
サンプルプログラム ◆ Nitris.py

※ PDF でご覧になるには ⇒ 「piyo60410.pdf」をダウンロード

------------ 序 ------------

◆ コレクションフレームワークを導入すると、配列を使った古典的なプログラムと違って、洗練された信頼性のあるコードを記述できます。◆ フレームワークを持たないのは、電気もガスも水道もない世界に放り出されたようです。これが短期間なら、観光客の気分で、大自然の恵みを堪能できるかもしれません。しかし、長期間ともなると、大自然の厳しさに直面します。小川から水を汲み、火をおこすという、サバイバルの日々が続きます。その覚悟はできていますか。◆ 今週は、ゲーム作りの手を休めて、快適な生活(プログラミング)を送るたるめに、その要求に応える道具立て(フレームワークの構築)に着手します。さあ、ご一緒に。Java 原人から、ホモサピエンスへと、進化の道程を歩き始めましょう。

◆ Java には、java.util としてコレクションフレームワークが提供されています。しかし、他のプログラミング言語(Smalltalk をはじめ、PythonRuby など)が提供するものと比べると、開発率(使い勝手)がいいものではありません。たとえば、リテラル表記ひとつを取り上げても、より洗練されたものが望まれます。また、OCLVDM で規定されたもののように、より表現のあるものが望まれます。◆ これから作成する、クラス OCL_ Set は、OCL で規定された、Set 型に準拠するものです。OCL では、Collection の傘下に、いくつかの便利な道具立てが提供されています。Set は、そのひとつとして位置付けられます。《ひよ子》

【目次】
〔Python/Jython 入門〕Java.use(better) # Stairway to Real Agile World

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《6》私のコレクションは石集め★★"

| | コメント (0) | トラックバック (0)

2006年4月 7日 (金)

連載: Java.use(better) NITRIS 問題《5》ストーンはこうして作られる★★

キーワード ◆ exists 演算・includes 演算・including 演算・size 演算・タプル・事後条件・表明・不変条件
サンプルプログラム
◆ Nitris.py

※ PDF でご覧になるなら ⇒ 「piyo60407.pdf」をダウンロード

------------ 序 ------------

◆ プログラムが正しく動作することを検証するのに、単体テストに頼るだけでは不十分です。そこで、オブジェクト自身にその正当性を検証させる仕組みとして、不変条件と表明を紹介しました。これに加えて、事前条件と事後条件を規定すると、その信頼性がさらに向上します。◆ 今日は、記述されたコードが正しいことを検証するための扉を、もう1つ開きます。

不変条件とは、オブジェクトの存続中に満たされるべき制約を表すものです。表明とは、プログラムの実行中に成立する関係や条件を記述した論理式のことです。◆ 事後条件とは、操作を終了したときに満たされるべき制約を表すものです。ある操作が完了したときに、事後条件を検証することで、その信頼性が高まります。《ひよ子》

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《5》ストーンはこうして作られる★★"

| | コメント (0) | トラックバック (0)

2006年4月 6日 (木)

連載: Java.use(better) NITRIS 問題《4》ブロックはこうして作られる★★

キーワード ◆ __init__・__str__・exists 演算・forAll 演算・インスタンス属性・カプセル化・クラス属性・単体テスト・表明・不変条件
サンプルプログラム ◆ Nitris.py

※ PDF でご覧になるなら ⇒ 「piyo60406.pdf」をダウンロード

------------ 序 ------------

◆ プログラムが正しく動作することを検証するのに、さまざまな方法があります。◆ 単体テストでは、作成したコードとは別に、それが正しく動作することを検証するためのコードを用意します。しかし、単体テストのために記述されたコード自身が正しい(必要十分である)ことを保証するものではありません。これに対して、コードが正しいことを「オブジェクト自身が証明する」というフレームワークを提供します。これによって、膨大な数の単体テストに相当する安心感が得られます。◆ 今日は、記述されたコードが正しいことを検証するための扉を開きます。

◆ 単体テストで保証されるのは、与えられた入力データに対して予測された出力結果が得られるということだけです。テストケースにない動作を保証するものではありません。つまり「これだけのテストをしたのだから、たぶんうまく動作するだろう」という、その場限りの安心感が得られるだけなのです。その一方で、テストによらず、証明によって、その正しさを検証するという手法があります。◆ 不変条件とは、オブジェクトの存続中に満たされるべき制約を表すものです。ある操作が完了したときに、不変条件を検証することで、その信頼性を高めるという効果が期待できます。◆ 表明とは、プログラムの実行中に成立する関係や条件を記述した論理式のことです。実行中の操作が正しく動作していることを監視できるので、安心して開発作業を継続できます。《ひよ子》

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《4》ブロックはこうして作られる★★"

| | コメント (0) | トラックバック (0)

2006年4月 5日 (水)

連載: Java.use(better) NITRIS 問題《3》ボードはこうして作られる★

キーワード ◆ __init__・__str__・def 文・print 文・toString・type 組み込み関数・インスタンス属性・クラス属性・コンストラクター・フレームワーク・演算子の多重定義・関数オブジェクト・文字列表現

※ PDF でご覧になるなら ⇒しばらくお待ちください
------------ 序 ------------

【参考文献】Jython/Python
・http://www.jython.org/
・http://www.python.org/

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《3》ボードはこうして作られる★"

| | コメント (0) | トラックバック (0)

2006年4月 3日 (月)

連載: Java.use(better) NITRIS 問題《1》ニトリス(似とります)★

キーワード ◆ OCL・VDM・ウィーン開発手法・オブジェクト制約言語・テトリス・モデル指向形式手法・形式的論理言語・要求仕様

60400_1 NITRIS 問題《Season I》site map ⇒ 「piyo60400.pdf」をダウンロード

.

※ PDF でご覧になるなら ⇒ 「piyo60403.pdf」をダウンロード

------------ 序 ------------

◆ 単純なゲームを作りながら、ソフトウェア開発に形式手法を導入する事例を紹介します。◆ ともすると、形式手法というだけで、数学的な知識が必要なので難解だとか、抽象的で取っ付きにくいという印象を抱くものです。しかし、一度それを身に付けると、複雑なモデルの本質を理解するのに役立ちます。◆ そこで、親しみやすいゲームを題材とすることで、形式手法を導入する際のストレスを緩和できるように配慮しました。本格的な開発手法を導入したときに初めて体感できる醍醐味を、ほんの少しでも疑似体感できれば幸いです。◆ まず今日は、ゲームのルールを紹介するところから始めます。

◆ ゲームのルール(規則)は、システムの要求仕様に相当します。明確なルールが定められていないなら、ゲームは成立しません。同様に、明確な要求仕様が定められているからこそ、安心してソフトウェア開発に着手できるのです。◆ 明確な要求仕様を記述するのに有効な形式的論理言語として、OCL と VDM++ を導入した事例を紹介します。OCL とは、オブジェクト制約言語〔OCL: Object Constraint Language〕のことで、UML で記述されたモデル要素に精確さを追加するために利用されています。VDM とは、ウィーン開発手法〔VDM: Vienna Development Method〕のことで、モデル指向形式手法として普及するとともに、ISO によって標準化されています。《ひよ子》

【目次】
〔Python/Jython 入門〕Java.use(better) # Stairway to Real Agile World

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《1》ニトリス(似とります)★"

| | コメント (0) | トラックバック (0)