2. Profile
u I am …
u Father / Husband / A just application developer interested in Application design & Testing
u I love making / drinking coffee very much (^^)v
u Specialty
u Automation Test ( with JavaSE AspectJ Junit/TestNG Selenium WebDriver )
u I make a keyword-driven test system.
10. What is …
Software Design 2
u Mr. Grady Booch Said …
u “Design is an ordered approach to exploit
answers to a problem.”
u Quote from Object-Oriented Analysis and
Design with Applications, 2nd Edition 1995
11. What is …
Software Design 3
u Dr. Jack Mostow ( Carnegie Mellon University ) Said …
u Purpose of design
u Satisfies a given (perhaps informally) functional specification
u Conforms to limitations of the target medium
u Meets implicit or explicit requirements on performance and resource
usage, e.g., time, space, power, cost
u Satisfies implicit or explicit design criteria on the form of the artifact,
e.g., style, simplicity, testability, maintainability, reliability, reusability,
manufacturability, modularity, etc. ( Make Quality !! )
u Satisfies restrictions on the design process itself, such as its length or
cost, or the tools available for doing the design (e.g., drafting table
versus graphic editor).
u Quote from Toward Better Models Of The Design Process 1985
12. What is …
Software Design 4
u Bjarne Stroustrup (development of the C++ programming language. ) Said …
u Purpose of design
u The purpose of the design is to create a clear and relatively simple internal
structure, what is called an architecture. Design is the final product of the design
process.
u Quote from Object-Oriented Analysis and Design with Applications, 2nd Edition 1995
13. What is …
Software Design 5
u Mr. Grady Booch summarize …
u The design includes tasks to balance the competing set of requirements,
u allowing you to think logically of the structure,
u considering trade-offs when requirements collide,
u and in general the implementation's perspective.
u The model that provides the design is the deliverable of the design.
16. Software is …
Origin
u Quote from Wikipedia https://en.wikipedia.org/wiki/Software#Purpose.2C_or_domain_of_use
u by Alan Turing
u part of a computer system that consists of encoded information or computer instructions
u by John W. Tukey ( on developing statistical methods for computers where he invented the term "bit")
u In computer science and software engineering, computer software is all information processed by computer systems, programs
and data.
17. System Software is …
indirectly effects
u In low-level language
u Software written in machine language does not directly affect the user.
u But by combining changing the state of the processor, it is possible to give the user
an indirect effect such as changing the state of the Personal Computer.
18. u In high-level language
u Software written in machine language affect the user directly.
Non System Software is …
directly effects
28. How do I …
Design
u With the word of Mr. Booch …
u The design includes tasks
u to balance the competing set of requirements,
u allowing you to think logically of the structure,
u considering trade-offs when requirements collide,
u 要求から問題領域を正確に捉えること
u 問題領域から解決領域へたどり着くプロセスを明確にすること
u and in general the implementation‘s perspective model that provides the design is
the deliverable of the design.
u 設計の成果物として実装をうながす為の「⾒取り図」的なものを⽤いること
30. How do I …
Application Design
u I thought …
u 要求から問題領域を正確に捉えること
u 要求分析(ドメイン分析)
u 問題領域から解決領域へたどり着くプロセスを明確にすること
u EAフレームワーク(ザックマン、TOGAF、FEAF、経済産業省EA)
u OOAD(ICONIX、責務駆動設計、ドメイン駆動設計、UP、RUP、etc.)
u 設計の成果物として実装をうながす為の「⾒取り図」的なものを⽤いること
u アーキテクチャ記述
u UML(シーケンス図、クラス図、etc.)
34. How do I …
Application Design 3
u In order to create an application, it is necessary to design
u The application architecture
u Something that makes up the architecture
36. What is …
Application Architecture
u Quote from Software Architecture Review and Assessment (SARA) Report Version 1.0
u Quote from ⾮機能要件記述とアーキテクチャ記述ガイド IPA SEI 2010年3⽉
37. What is …
Application Architecture 2
u Quote from Patterns of Enterprise Application Architecture
u アーキテクチャとは
u 主観的要素(重要とする要素により、形を変える)
u PJの熟練開発者がシステム設計に関して共通に理解していること
u 共通理解
u システムの主要なコンポーネント
u コンポーネントの相互作⽤
u 主要なコンポーネント
u 後で変更することが難しい決定事項
u ⼈の性格のようなもの(私⾒)
38. What is …
Application Architecture 3
u Quote from ⾮機能要件記述とアーキテクチャ記述ガイド IPA SEI 2010年3⽉
45. What is …
Component 2
u Quote from 「オブジェクトデザイン」( レベッカ・ワーフスブラッ
ク他 )
u She said …
u ⼀般的に多くの異なるアプリケーションで使⽤することを意図した設計要素。
u コンポーネントを使えば、システムの残りの部分を構成し直すことなく、更新
や交換でき、そうなるようにインターフェースが設計される。
u Translator notes …
u フレームワークを「⼤きな粒度の再利⽤」と考えると、コンポーネントは「中
程度の粒度の再利⽤」単位と考えることができる。
u ⼀⽅、単⼀のクラスは再利⽤を⾏う単位としては「⼩程度の粒度の再利⽤」単
位と考えることができる。
51. What is …
Object
u Quote from 「オブジェクトデザイン」( レベッカ・ワーフスブラッ
ク他 )
u I understood that…
u ソフトウェアは部品を元に設計される
u このソフトウェア部品はオブジェクトである
u オブジェクトは他の部品に対してリクエストをして相互作⽤する
u この為、オブジェクトにはリクエストに応える義務が、ある期間に発⽣する
u つまり、オブジェクトには役割があり、役割通りに動作する責任が発⽣する
u また、オブジェクトは役割通りに動作をする為の判断材料となる情報を持つ
58. Object-Oriented Analysis and Design
u Abstract OOAD Structure
Requests
Application
Architecture
Components
Object Object Object Object
Analysis
Design
Object
Roles
Responsibilities
Task Info
has
Roles
59. Object-Oriented Analysis and Design
余談
u Architecture と Non-Architecture の設計順序
u Applicationの重要な要素であるArchitecture を設計してからComponentの設計を⾏
うことが⼀般的な考え⽅である
u ApplicationがRoles(役割)を持つことから、⼀⽅でRolesの配置先が明⽰されていれ
ば、ある程度並⾏して⾮主要コンポーネントを予備設計しておいても、詳細設計前
には紐付けすることをできるのではないだろうか
62. The ICONIX
Practical Method of OOAD
u Quote from 「Use Case Driven Object Modeling with UML
Theory and Practice」Doug Rosenberg, others.
u Abstraction of ICONIX
u ICONIX⾃体はOOADよりも広い範囲をサポートする開発⼿法
u 静的+動的なワークフローが構成するイテレーティブなプロセス
u 1イテレーションでは、ユースケースまたはその論理的な集合に対
して、要求分析〜単体テストをスコープとする実践的な⼿法
u イテレーティブな為、agileプラクティスとの親和性が⾼い
u UP(統⼀プロセス)よりも使⽤するUMLやドキュメントの種類が少
なく、軽量である
u 他の⼿法との折衷案を採⽤してもよい(私⾒)
u マイルストーンと確認ポイントが⽰されているので分かりやすい
63. The ICONIX
Practical Method of OOAD 2
u Abstraction of ICONIX Process (One Iteration)
要求定義 機能要求 振る舞い要求
ドメイン分析
ドメインモデリング
レビュー
要求分析
予備設計
ロバストネス分析
属性追加(ドメイン
モデルの更新)
コントローラオブ
ジェクトの識別
レビュー
詳細設計 シーケンス図作成
操作の追加(ドメイ
ンモデルの更新)
シーケンス図の更新 レビュー
実装
コーディング
ユニットテスト実施
統合テスト、テスト
シナリオの実施
コードレビュー 各モデルの更新
To Next
Iteration