VDM++/VDM-SL

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)

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年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月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月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月 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)