Our client - tailspin Toys...
- Small brick & mortar hobby shop that sells model airplanes
- Want an online store front to supplement in-store sales
how to use the Visual Studio 2010 Ultimate visualization and modeling tools in your software development process:
1.Brain Storming
: Define the solution's boundaries
: Identify Who will impacted by the solution
: Discover what valuable activities will be automated
: Uncover constraints that will limit the solution
: Kick-start the requirements gathering process
- Warnings
: Not standard UML
: More in common with mind-mapping techniques
-Tip
: Limit workshops to about 1hour each
: Always start with a vision of solution (context)
: Clearly identify who lives inside and outside the system(Scope)
: Describe goals from users' point of view(business value)
: Generate lots of ideas and capture everything
2.Identifyng Use Case
- Break up user goals and tasks into separate, digestible diagrams
- Use the diagrams as a structural guide for writing requirements as use case document
A few Words About Actors
- Actors are ALWAYS external participants
- Actors interact DIRECTLY with the system
- Actors represent ROLES
- Use Cases are ALWASY initiated by an actor
Tips
- Think of actors as roles, not job titles
- Use business domain terminology
- Focus on actor's goals, not implementation details
- Use strong, active verbs in the names
- Focus on only one "feature area" in a single diagram
- Stack cases in diagrams to show relative order
- Use color and notes to document important details
3.Model the Business Domain Using Conceptual Class Diagrams
- Identify the key terms used as data or type elements
- Use the classes as nouns when writing requirements
- Use enumerations to define literal values or states used in business processes
- Iterate and refine as new requirements are captured
Domain Modeling Tips
- Use Friendly name (spaces, no abbreviations)
- Show just those classes needed in descriptions of the requirements
- Focus on names and simple relationship(associations)
: Don't worry about aggregation or composition - that comes later in detailed design
- Capture multiplicities to clarify the relationships
- Add attributes, and types only if they needed to clarify a requirement
: Stick with standard primitives for attribute types : Boolean, Integer, String
: Add domain specific types if they add clarity (Temperature: Celcius , Duration: Weeks)
- Stay implementation - independent
: Don't assign visibilities - that's comes later in detailed design
: Avoid modeling keys or IDs - they are an implementation detail
: Avoid modeling verbs/actions/operation/functions
4.Capturing Business Workflow using Activity Diagram
Activity Diagram
- Next generation flow charts
- Used to show processes
: business processes
: work flows
: algorithms
- Complementary to use cases
: Show task flow instead of structure
Tips
- Use Tem to capture and validate business processes
- think in terms of users' actions
- Focus on actions that are visible from outside the system
- Use to show flow of actions that span multiple use cases
- Best diagram for showing parallel operations
- Focus on only one "activity" in each diagram
5.Architecting an application Using A Layer Diagram
Layer Diagram
- Describe the structure of an application at a high level
- Identify the major components or functional units of the design and their interdependencies
- Each layer represents a logical group of namespaces, projects, or other artifacts
Tips
- Minimize upfront design(avoid starting more than 1 namespace deep)
- Analyze and refactor at the beginning of each iteration
- Separate functional areas of concern cleanly
- Avoid duplicating responsibilities
- Minimize dependencies between layers
- Make it obvious where code needs to go!
Microsoft application architecture 파일 설치하면 tool box에 template 을 사용할 수 있다.
ArchitectureLayerExtension v2.0.vsix
6.Pysical Structure Using Component Diagram
Component Diagram
- Visualize the physical structure of a system
- Focus on the components of a system, their relationships, interfaces, and ports
- Highlight the service behavior that they provide and consume through interfaces
Tips
- Focus on the physical packing
: executable and libraries
- Clearly indicate relationships between components
- Highlight architecturally significant interfaces exposed by components
7.Sketch Interactions with Sequence Diagrams
Sequence Diagram
- Capture Dynamic behavior
: The lifecycles of objects and how they collaborate together to deliver the required system functionality
: Sequential flow of time
- Show interactions between nouns in your system
: Actors
: Classes
: Components
: Subsystems
- Interactions consist of messages between typical instances during run time
Tips
- Drive design from the perspective of the user
: Start each sequence with and actor
: Use the special actor "Flow" when designing infrastructure
- Form follows function
: Lead with sequence diagrams and classes will emerge
: Design only to the level of detail necessary to reflect what has NOT yet
been designed and/or implemented
- Design is about solving problems: Model only what you need to solve a problem and communicate that solution
: Anything more and you're writing documentation
8.Reveal Responsibilities with Class Diagrams
Class Diagram
- Show logical and structural aspects of the system
: Data type used to store and exchange data
: Relationships between those types
- Implementation independent
: Can represent many things
: Language specific software object
: XML nodes
: Database tables
: ...
Tips- A diagram should focus on one aspect of they system' design
: Called bounded contexts in Domain Driven Design
- Organize elements spatially to emphasize relationships
- Iterative and incremental
: Public behaviors and relationships should emerge naturally
: Add internal and private details as necessary to address
implementation problems
- Design is about solving problems
: Model only what you need to solve a problem and communicate what solution
: Anything more and you're writing documentation
9.Organize & Manage My Models
Final Thoughts
- UML is a visual language for communicating the design of software system
- Can be used to show designs or to understand existing software
- Formality ranges from simple sketches to highly detailed blueprints
- Use what you need to solve problems and ignore the rest
: Even the experts only use 20-30% of the language features on a regular basis
: Learn as you go and don't be afraid to make mistakes
- Keep your models organized so you can find them easily
출처 : http://blogs.msdn.com/b/vsarch/archive/2010/07/29/channel-9-screencast-series-uml-with-vs2010.aspx
[Reference Book]
1.Brain Storming
Managing Software Requirements
the Rational Unified Process Made Easy
user Stories applied
2.Use Case Modeling
Use Case Modeling
Use Case : patterns and Blueprints
UML 2 and the Unified Process
3.Domain Model
Domain Driven Design
Use Case Driven Object Modeling with UML
4.Capturing Business Workflow
UML 2 and the Unified Process
UML Distilled
Use Case Modeling
5.architecting an application Using A layer Diagram
Microsoft application Architecture Guide - 2nd edition
Architecting Applications for the Enterprise
Domain Driven Design
6.Component Modeling
The unified Modeling Language User Guide - 2nd Edtion
UML Distilled - 3rd Edtion
the Elements of UML 2.0 Style
7.Sequance Diagram Modeling
UML 2 and the Unified Process
elements of UML 2.0 Style
Use Case Modeling
8.Class Modeling
UML 2 and the Unified Process
elements of UML 2.0 Style
Use Case Drive Object Modeling with UML
9.Organize models
Domain Driven Design
Patterns of Enterprise application Architecture
Architecting Applications for the Enterprise