SlideShare una empresa de Scribd logo
1 de 27
VSTS 2010 Architecture Edition

          Rick G. Garibay
       rick.garibay@neudesic.com
Introduction
• How many times have you walked into a legacy codebase
  and had no idea what was there?

   – All systems have an architecture, whether you plan it or not

   – Most systems today have evolved into Big Ball of Mud
     architectures

   – Understanding and discovering what is there is a serious
     challenge today

• Ending with a system you want and can maintain is more
  important than defining the right thing before you start
Q: How Do You Eat an Elephant?
Software Architecture
• Architecture is important
    – part of the product
    – it should be analyzed
    – should be easy to explain and understand
• Architecture is central for communicating
    – it should be documented
    – documentation should be targeted at specific stakeholders
    – documentation should be auditable
• Architecture is expensive to change
    – it is cheaper to analyze early
    – The key to being emergent is to make the best decisions possible
• Architecture affects the entire project
    – many stakeholders should be involved
• Broad requirements can be understood early
    – architecture should be designed to meet them
How Does This Relate To Agile?
How Does This Relate To Agile?
How Does This Relate To Agile?
• For agile teams, Architecture is emergent.
• All agile teams use models. They just
  don’t often do a lot of modeling up front
• Agile teams will create models on the fly
  as needed to describe, design and define
  a candidate design for a user story or task
• In today’s globally disbursed environments,
  whiteboards won’t always suffice. We need to
  share in a way that can cross geographies and
  time zones
4 + 1 Views on Software Architecture


                                               Development
                             Logical
                                              (Implementation)



                                       Scenarios


                                                   Physical
                             Process
                                               (Deployment)




Philippe B. Kruchten, IEEE
Software 1995
On Architectural Views
   • An architectural view is a simplified
     description (an abstraction) of a system from a
     particular perspective or vantage point,
     covering particular concerns, and omitting
     entities that are not relevant to this
     perspective.



Philippe B. Kruchten, IEEE
Software 1995
Why 5 Views?
   • Architecture has several audiences.
   • Each type of model has its strength and
     weakness
   • No single view is sufficient because
     architecture is such a complex issue




Philippe B. Kruchten, IEEE
Software 1995
The Object Management Group (OMG)
• Microsoft joined OMG in 2008
Unified Modeling Language (UML)
• The OMG Specification States

  • The Unified Modeling Language is a
    visual language for specifying,
    constructing, and documenting the
    artifacts of systems.
  • It is a general-purpose modeling
    language that can be used with all
    major object and component
    methods, and that can be applied to
    all application domains and
    implementation platforms.
Modeling Support in VS 2010

     View         Category         UML Diagrams            VSTS2010 Architecture Edition

Logical        Structure     Class Diagram, Object         Class diagram , Component
               Diagram       Diagram, Component            Diagram
Development                  Diagram, Composite
                             Structure Diagram, Package
                             Diagram, and Deployment
                             Diagram.
Scenarios      Behavior      Use Case Diagram , Activity   Use Case Diagram , and Activity
               Diagrams      Diagram, and State            Diagram.
                             Machine Diagram.

Process        Interaction   Sequence Diagram,             Sequence Diagram
               Diagrams      Communication Diagram,
                             Timing Diagram, and
                             Interaction Overview
                             Diagram.
Modeling Support in VS 2010

      View        Category   UML Diagrams         VSTS2010 Architecture Edition

Logical         N/A          N/A            Call Dependency Visualization:
                                            •By Assembly
                                            •By Namespace
Development
                                            •By Class
Physical                                    Class Dependency Visualization:
                                            •Details
                                            •Dependencies
                                            Interaction Sequence Visualization
                                            •Impact analysis
                                            •Call sequences

Logical         N/A          N/A            Layer Diagram
                                            •Map code to layers
                                            •Validate code against the layer design
Physical
                                            •Visualize interactions and sequences
Development                                 between code in layers
Defining Architecture…
• “the fundamental organization of a system,
  embodied in its components, their
  relationships to each other and the
  environment, and the principles governing its
  design and evolution”. (IEEE 1471)
Architectural Discovery
• Everyone has existing code bases

• Key architectural elements are undocumented

• Maintenance is hard, changes are expensive

• What can we do?

• Let’s begin by discovering what we have using
  Architecture Explorer…
Architecture Explorer
• Understanding a system
  can prevent the
  butterfly effect.

• Architecture Explorer
  helps discover and
  understand how a
  system works.

• Visualize existing code
  assets and how they
  connect.
Demo

VS 2010 ARCHITECTURE EXPLORER
Defining Architecture…
• “The structure of the components of a
  program/system, their interrelationships, and
  principles and guidelines governing their
  design and evolution over time.” (Garlan and
  Perry 1995, p. 269)
Layer Diagram
• Architectural validation ensures
  code matches intended design.

• Layer diagram details the intended
  design.

• Classes and namespaces are
  mapped to layers in the diagram.
Demo

VSTS 2010 LAYER DESIGN
Defining Architecture…
• “An architecture is the set of significant decisions about
  the organization of a software system, the selection of
  the structural elements and their interfaces by which
  the system is composed, together with their behavior
  as specified in the collaborations among those
  elements, the composition of these structural and
  behavioral elements into progressively larger
  subsystems, and the architectural style that guides this
  organization—these elements and their interfaces,
  their collaborations, and their composition.” (Booch,
  Rumbaugh, and Jacobson 1999, p. 31)
Sequence Diagram
Demo

VSTS UML 2.1.1 SEQUENCE
DIAGRAM SUPPORT
A: One Bite at a Time!




                         26
Conclusions
• Every system has an architecture, the trick is
  figuring out what you have and what you want
  to do
• Communicating effectively with your entire
  team is paramount
• Architectural modeling and discovery tooling
  is useful regardless of development
  methodology
Thank You
• October CTP:
  http://www.microsoft.com/visualstudio

• Documenting Software Architecture

Más contenido relacionado

La actualidad más candente

Team Foundation Server Version Control
Team Foundation Server Version ControlTeam Foundation Server Version Control
Team Foundation Server Version Control
Steve Lange
 
Gredy - test automation management and team collaboration
Gredy - test automation management and team collaborationGredy - test automation management and team collaboration
Gredy - test automation management and team collaboration
Gredy
 

La actualidad más candente (20)

Innoslate Overview
Innoslate OverviewInnoslate Overview
Innoslate Overview
 
Aspect Oriented Development
Aspect Oriented DevelopmentAspect Oriented Development
Aspect Oriented Development
 
A Case for Outside-In Design
A Case for Outside-In DesignA Case for Outside-In Design
A Case for Outside-In Design
 
Team Foundation Server Version Control
Team Foundation Server Version ControlTeam Foundation Server Version Control
Team Foundation Server Version Control
 
Vs11 overview
Vs11 overviewVs11 overview
Vs11 overview
 
Gredy - test automation management and team collaboration
Gredy - test automation management and team collaborationGredy - test automation management and team collaboration
Gredy - test automation management and team collaboration
 
The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...
The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...
The Genesis of Holistic Systems Engineering: Completeness and Consistency Man...
 
IncQuery Suite demo for INCOSE 2022IW
IncQuery Suite demo for INCOSE 2022IWIncQuery Suite demo for INCOSE 2022IW
IncQuery Suite demo for INCOSE 2022IW
 
QA Team Goes to Agile and Continuous integration
QA Team Goes to Agile and Continuous integrationQA Team Goes to Agile and Continuous integration
QA Team Goes to Agile and Continuous integration
 
Composable Software Architecture with Spring
Composable Software Architecture with SpringComposable Software Architecture with Spring
Composable Software Architecture with Spring
 
One Lifecycle One Tool webinar
One Lifecycle One Tool webinarOne Lifecycle One Tool webinar
One Lifecycle One Tool webinar
 
Code in the Cloud - Ghent - 20 February 2015
Code in the Cloud - Ghent - 20 February 2015Code in the Cloud - Ghent - 20 February 2015
Code in the Cloud - Ghent - 20 February 2015
 
The Role of the Software Architect
The Role of the Software ArchitectThe Role of the Software Architect
The Role of the Software Architect
 
Case tools
Case tools Case tools
Case tools
 
2017 LabVIEW Developer Day - Branching Workflows for Accelerated Team Develop...
2017 LabVIEW Developer Day - Branching Workflows for Accelerated Team Develop...2017 LabVIEW Developer Day - Branching Workflows for Accelerated Team Develop...
2017 LabVIEW Developer Day - Branching Workflows for Accelerated Team Develop...
 
Innoslate 4.5 and Sopatra
Innoslate 4.5 and SopatraInnoslate 4.5 and Sopatra
Innoslate 4.5 and Sopatra
 
Fountain model
Fountain modelFountain model
Fountain model
 
Software engineering 25 models details
Software engineering 25 models detailsSoftware engineering 25 models details
Software engineering 25 models details
 
Cvs To Clear Case
Cvs To Clear CaseCvs To Clear Case
Cvs To Clear Case
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 

Similar a PHX Session #5 : Architecture Without Big Design Up Front (Garibay)

Architecture Description Languages: An Overview
Architecture Description Languages: An OverviewArchitecture Description Languages: An Overview
Architecture Description Languages: An Overview
elliando dias
 
Framework Engineering_Final
Framework Engineering_FinalFramework Engineering_Final
Framework Engineering_Final
YoungSu Son
 
Elevator pitch architecture design
Elevator pitch architecture designElevator pitch architecture design
Elevator pitch architecture design
Zarko Acimovic
 

Similar a PHX Session #5 : Architecture Without Big Design Up Front (Garibay) (20)

Session #5: Architecture Without Big Design Up Front
Session #5: Architecture Without Big Design Up FrontSession #5: Architecture Without Big Design Up Front
Session #5: Architecture Without Big Design Up Front
 
Architecture Description Languages: An Overview
Architecture Description Languages: An OverviewArchitecture Description Languages: An Overview
Architecture Description Languages: An Overview
 
Software Architecture: views and viewpoints
Software Architecture: views and viewpointsSoftware Architecture: views and viewpoints
Software Architecture: views and viewpoints
 
Framework Engineering
Framework EngineeringFramework Engineering
Framework Engineering
 
Framework Engineering_Final
Framework Engineering_FinalFramework Engineering_Final
Framework Engineering_Final
 
What is Software Architecture?
What is Software Architecture?What is Software Architecture?
What is Software Architecture?
 
Elevator pitch for testing software architecture and software design
Elevator pitch for testing software architecture and software designElevator pitch for testing software architecture and software design
Elevator pitch for testing software architecture and software design
 
Elevator pitch architecture design
Elevator pitch architecture designElevator pitch architecture design
Elevator pitch architecture design
 
Introdução à Arquitetura de Software
Introdução à Arquitetura de SoftwareIntrodução à Arquitetura de Software
Introdução à Arquitetura de Software
 
Good code-isnt-enough
Good code-isnt-enoughGood code-isnt-enough
Good code-isnt-enough
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part i
 
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
 
Software Architecture: Introduction
Software Architecture: IntroductionSoftware Architecture: Introduction
Software Architecture: Introduction
 
Architecture: where do you start?
 Architecture: where do you start? Architecture: where do you start?
Architecture: where do you start?
 
Service-Oriented Architecture for Libraries
Service-Oriented Architecture for LibrariesService-Oriented Architecture for Libraries
Service-Oriented Architecture for Libraries
 
Software Architecture by Reuse, Composition and Customization
Software Architecture by Reuse, Composition and Customization  Software Architecture by Reuse, Composition and Customization
Software Architecture by Reuse, Composition and Customization
 
Software Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionSoftware Architecture: introduction to the abstraction
Software Architecture: introduction to the abstraction
 
Reference Architecture
Reference ArchitectureReference Architecture
Reference Architecture
 
Presentation
PresentationPresentation
Presentation
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile Approach
 

Más de Steve Lange

Microsoft ALM Platform Overview
Microsoft ALM Platform OverviewMicrosoft ALM Platform Overview
Microsoft ALM Platform Overview
Steve Lange
 
PHX Session #6: More Bang for Your Buck: Getting the Most out of Team Foundat...
PHX Session #6: More Bang for Your Buck: Getting the Most out of Team Foundat...PHX Session #6: More Bang for Your Buck: Getting the Most out of Team Foundat...
PHX Session #6: More Bang for Your Buck: Getting the Most out of Team Foundat...
Steve Lange
 
PHX - Session #4 Treating Databases as First-Class Citizens in Development
PHX - Session #4 Treating Databases as First-Class Citizens in DevelopmentPHX - Session #4 Treating Databases as First-Class Citizens in Development
PHX - Session #4 Treating Databases as First-Class Citizens in Development
Steve Lange
 
PHX - Session #2 Test Driven Development: Improving .NET Application Performa...
PHX - Session #2 Test Driven Development: Improving .NET Application Performa...PHX - Session #2 Test Driven Development: Improving .NET Application Performa...
PHX - Session #2 Test Driven Development: Improving .NET Application Performa...
Steve Lange
 
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
Steve Lange
 

Más de Steve Lange (20)

Visual Studio ALM 2013 - Edition Comparison
Visual Studio ALM 2013 - Edition ComparisonVisual Studio ALM 2013 - Edition Comparison
Visual Studio ALM 2013 - Edition Comparison
 
Team Foundation Server 2012 Reporting
Team Foundation Server 2012 ReportingTeam Foundation Server 2012 Reporting
Team Foundation Server 2012 Reporting
 
A Deeper Look at Team Foundation Server 2012 Version Control
A Deeper Look at Team Foundation Server 2012 Version ControlA Deeper Look at Team Foundation Server 2012 Version Control
A Deeper Look at Team Foundation Server 2012 Version Control
 
Upgrading to TFS 2010
Upgrading to TFS 2010Upgrading to TFS 2010
Upgrading to TFS 2010
 
Microsoft ALM Platform Overview
Microsoft ALM Platform OverviewMicrosoft ALM Platform Overview
Microsoft ALM Platform Overview
 
Team Foundation Server - Tracking & Reporting
Team Foundation Server - Tracking & ReportingTeam Foundation Server - Tracking & Reporting
Team Foundation Server - Tracking & Reporting
 
Visual Studio 2010 Testing for Developers
Visual Studio 2010 Testing for DevelopersVisual Studio 2010 Testing for Developers
Visual Studio 2010 Testing for Developers
 
Visual Studio LightSwitch (Beta 1) Overview
Visual Studio LightSwitch (Beta 1) OverviewVisual Studio LightSwitch (Beta 1) Overview
Visual Studio LightSwitch (Beta 1) Overview
 
Visual Studio 2010 Testing Overview
Visual Studio 2010 Testing OverviewVisual Studio 2010 Testing Overview
Visual Studio 2010 Testing Overview
 
TFS 2010: Team Development on Crack
TFS 2010: Team Development on CrackTFS 2010: Team Development on Crack
TFS 2010: Team Development on Crack
 
Team Foundation Server 2010 - Version Control
Team Foundation Server 2010 - Version ControlTeam Foundation Server 2010 - Version Control
Team Foundation Server 2010 - Version Control
 
Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)
 
PHX Session #6: More Bang for Your Buck: Getting the Most out of Team Foundat...
PHX Session #6: More Bang for Your Buck: Getting the Most out of Team Foundat...PHX Session #6: More Bang for Your Buck: Getting the Most out of Team Foundat...
PHX Session #6: More Bang for Your Buck: Getting the Most out of Team Foundat...
 
PHX - Session #4 Treating Databases as First-Class Citizens in Development
PHX - Session #4 Treating Databases as First-Class Citizens in DevelopmentPHX - Session #4 Treating Databases as First-Class Citizens in Development
PHX - Session #4 Treating Databases as First-Class Citizens in Development
 
PHX - Session #2 Test Driven Development: Improving .NET Application Performa...
PHX - Session #2 Test Driven Development: Improving .NET Application Performa...PHX - Session #2 Test Driven Development: Improving .NET Application Performa...
PHX - Session #2 Test Driven Development: Improving .NET Application Performa...
 
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
 
Big Event Looping Deck
Big Event Looping DeckBig Event Looping Deck
Big Event Looping Deck
 
Session #6: Get More Bang For Your Buck
Session #6: Get More Bang For Your BuckSession #6: Get More Bang For Your Buck
Session #6: Get More Bang For Your Buck
 
Session #1: Development Practices And The Microsoft Approach
Session #1: Development Practices And The Microsoft ApproachSession #1: Development Practices And The Microsoft Approach
Session #1: Development Practices And The Microsoft Approach
 
Session #3: "It Works on My Machine!" Closing the Loop Between Development & ...
Session #3: "It Works on My Machine!" Closing the Loop Between Development & ...Session #3: "It Works on My Machine!" Closing the Loop Between Development & ...
Session #3: "It Works on My Machine!" Closing the Loop Between Development & ...
 

Último

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Último (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

PHX Session #5 : Architecture Without Big Design Up Front (Garibay)

  • 1. VSTS 2010 Architecture Edition Rick G. Garibay rick.garibay@neudesic.com
  • 2. Introduction • How many times have you walked into a legacy codebase and had no idea what was there? – All systems have an architecture, whether you plan it or not – Most systems today have evolved into Big Ball of Mud architectures – Understanding and discovering what is there is a serious challenge today • Ending with a system you want and can maintain is more important than defining the right thing before you start
  • 3. Q: How Do You Eat an Elephant?
  • 4. Software Architecture • Architecture is important – part of the product – it should be analyzed – should be easy to explain and understand • Architecture is central for communicating – it should be documented – documentation should be targeted at specific stakeholders – documentation should be auditable • Architecture is expensive to change – it is cheaper to analyze early – The key to being emergent is to make the best decisions possible • Architecture affects the entire project – many stakeholders should be involved • Broad requirements can be understood early – architecture should be designed to meet them
  • 5. How Does This Relate To Agile?
  • 6. How Does This Relate To Agile?
  • 7. How Does This Relate To Agile? • For agile teams, Architecture is emergent. • All agile teams use models. They just don’t often do a lot of modeling up front • Agile teams will create models on the fly as needed to describe, design and define a candidate design for a user story or task • In today’s globally disbursed environments, whiteboards won’t always suffice. We need to share in a way that can cross geographies and time zones
  • 8. 4 + 1 Views on Software Architecture Development Logical (Implementation) Scenarios Physical Process (Deployment) Philippe B. Kruchten, IEEE Software 1995
  • 9. On Architectural Views • An architectural view is a simplified description (an abstraction) of a system from a particular perspective or vantage point, covering particular concerns, and omitting entities that are not relevant to this perspective. Philippe B. Kruchten, IEEE Software 1995
  • 10. Why 5 Views? • Architecture has several audiences. • Each type of model has its strength and weakness • No single view is sufficient because architecture is such a complex issue Philippe B. Kruchten, IEEE Software 1995
  • 11. The Object Management Group (OMG) • Microsoft joined OMG in 2008
  • 12. Unified Modeling Language (UML) • The OMG Specification States • The Unified Modeling Language is a visual language for specifying, constructing, and documenting the artifacts of systems. • It is a general-purpose modeling language that can be used with all major object and component methods, and that can be applied to all application domains and implementation platforms.
  • 13. Modeling Support in VS 2010 View Category UML Diagrams VSTS2010 Architecture Edition Logical Structure Class Diagram, Object Class diagram , Component Diagram Diagram, Component Diagram Development Diagram, Composite Structure Diagram, Package Diagram, and Deployment Diagram. Scenarios Behavior Use Case Diagram , Activity Use Case Diagram , and Activity Diagrams Diagram, and State Diagram. Machine Diagram. Process Interaction Sequence Diagram, Sequence Diagram Diagrams Communication Diagram, Timing Diagram, and Interaction Overview Diagram.
  • 14. Modeling Support in VS 2010 View Category UML Diagrams VSTS2010 Architecture Edition Logical N/A N/A Call Dependency Visualization: •By Assembly •By Namespace Development •By Class Physical Class Dependency Visualization: •Details •Dependencies Interaction Sequence Visualization •Impact analysis •Call sequences Logical N/A N/A Layer Diagram •Map code to layers •Validate code against the layer design Physical •Visualize interactions and sequences Development between code in layers
  • 15. Defining Architecture… • “the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution”. (IEEE 1471)
  • 16. Architectural Discovery • Everyone has existing code bases • Key architectural elements are undocumented • Maintenance is hard, changes are expensive • What can we do? • Let’s begin by discovering what we have using Architecture Explorer…
  • 17. Architecture Explorer • Understanding a system can prevent the butterfly effect. • Architecture Explorer helps discover and understand how a system works. • Visualize existing code assets and how they connect.
  • 19. Defining Architecture… • “The structure of the components of a program/system, their interrelationships, and principles and guidelines governing their design and evolution over time.” (Garlan and Perry 1995, p. 269)
  • 20. Layer Diagram • Architectural validation ensures code matches intended design. • Layer diagram details the intended design. • Classes and namespaces are mapped to layers in the diagram.
  • 22. Defining Architecture… • “An architecture is the set of significant decisions about the organization of a software system, the selection of the structural elements and their interfaces by which the system is composed, together with their behavior as specified in the collaborations among those elements, the composition of these structural and behavioral elements into progressively larger subsystems, and the architectural style that guides this organization—these elements and their interfaces, their collaborations, and their composition.” (Booch, Rumbaugh, and Jacobson 1999, p. 31)
  • 24. Demo VSTS UML 2.1.1 SEQUENCE DIAGRAM SUPPORT
  • 25. A: One Bite at a Time! 26
  • 26. Conclusions • Every system has an architecture, the trick is figuring out what you have and what you want to do • Communicating effectively with your entire team is paramount • Architectural modeling and discovery tooling is useful regardless of development methodology
  • 27. Thank You • October CTP: http://www.microsoft.com/visualstudio • Documenting Software Architecture

Notas del editor

  1. The ability to right click inside a method, select \"Generate Sequence Diagram...\", resulting in, you guessed it! A sequence diagram! :) 
  2. Reference: http://blogs.msdn.com/camerons/archive/2008/11/10/testing-draft-to-blog.aspx
  3. Object Management Group (OMG): *Founded in 1989 *Over 470 member companies*The largest and longest standing not-for-profit, open-membership consortium which develops and maintains computer industry specifications.*OMG maintains active relationships with many other standards bodies and consortia. [ISO,OASIS, IEEE, W3C, THE Open GROUP, AIIM International, STAR, and INCOSE] For more information please see http://www.omg.org/news/about/liaison.htm*OMG’s best known Successes: [http://www.omg.org/gettingstarted/specintro.htm]-Common Object Request Broker Architecture (CORBA®)-Unified Modeling Language (UML)-Common Warehouse Metamodel (CWM)-Meta-Object Facility(MOF)- XML Metadata Interchange- XMI, the XML-UML standardMicrosoft Joins OMG:- September 10, 2008, Microsoft announced its membership in the standards body Object Management Group™ (OMG™). [http://www.microsoft.com/presspass/press/2008/sep08/09-10OMGModelingPR.mspx]
  4. UML® Resource Page: http://www.uml.org/UML Specification:http://www.omg.org/technology/documents/modeling_spec_catalog.htm#UMLIntroduction to OMG's Unified Modeling Language™ (UML®)http://www.omg.org/gettingstarted/what_is_uml.htm
  5. A diagram is a view into a model. UMLdefines thirteen types of diagrams, divided into three categories: Six diagram types represent static application structure; three represent general types of behavior; and four represent different aspects of interactions:*Structure Diagrams include the Class Diagram, Object Diagram, Component Diagram, Composite Structure Diagram, Package Diagram, and Deployment Diagram. *Behavior Diagrams include the Use Case Diagram (used by some methodologies during requirements gathering); Activity Diagram, and State Machine Diagram. *Interaction Diagrams, all derived from the more general Behavior Diagram, include the Sequence Diagram, Communication Diagram, Timing Diagram, and Interaction Overview Diagram.
  6. A diagram is a view into a model. UMLdefines thirteen types of diagrams, divided into three categories: Six diagram types represent static application structure; three represent general types of behavior; and four represent different aspects of interactions:*Structure Diagrams include the Class Diagram, Object Diagram, Component Diagram, Composite Structure Diagram, Package Diagram, and Deployment Diagram. *Behavior Diagrams include the Use Case Diagram (used by some methodologies during requirements gathering); Activity Diagram, and State Machine Diagram. *Interaction Diagrams, all derived from the more general Behavior Diagram, include the Sequence Diagram, Communication Diagram, Timing Diagram, and Interaction Overview Diagram.
  7. Butterfly Effect is the phenomenon that happens when you make a change in one area of your code and something unforeseen happens somewhere else. Architecture Explorer This overall feature gives you the ability to explorer and visualize your solution / projects inside Visual Studio, allowing you to reason over various questions you may have: \"How is this class dependent on this other?\" \"What assemblies does this assembly reference?\" \"How many lines of code in this method?\" Reference: http://blogs.msdn.com/bharry/archive/2008/06/05/teched-2008-keynote.aspXStandard\" Graphs Common views of your system. In the 2010 CTP, you'll see three menus in the \"Analyze\" menu item, as well as from the Architecture Explorer tool window, seen here: From the \"Analyze\" top level Menu: From the Architecture Explorer toolbar: Selecting any of these menus will result in dependency graphs between Assemblies, Namespaces, or classes. By the time we RTM, we expect to have a few more. Reference:  http://blogs.msdn.com/camerons/Default.aspx?p=2#Understand
  8. Reference: http://blogs.msdn.com/bharry/archive/2008/06/05/teched-2008-keynote.aspXThe layer diagram allows you to design the logical layering of your application and specify the dependencies you intend to have.  For example, you wouldn't want your client to have a dependency on you data layer in a 3 tier app.  You wouldn't want your server business logic taking a dependency on something in the Windows.Forms assembly, etc.Once you have this logical layering, you can associate the layers with specific assemblies, namespaces or classes in your actual application.  Now, the magic happens.  VSTS can parse/reverse engineer your code to determine the \"actual\" dependencies in your application.  Having done this, it can compare the actual to the \"desired\" as specified in the layer diagram and let you know about any problems you have.  Going even further, you can configure a checkin policy to validate this on every single checkin.  This way you can prevent people from checking in spaghetti architecture in the first place.It's very hard to communicate an architecture to everyone on the team.  It's even harder to prevent them from accidentally violating the architecture.  These tools are a huge leap forward in ensuring that you end up with the architecture you designed.On top of this cool new layer diagram and validation is another feature called the \"Architecture Explorer\".  It is a very handy tool for visualizing the architecture your code implements today.  It allows you to graphically browse through your application and its dependencies and understand them.  As you update your code, you can see the Architecture Explorer diagrams change.