welcome from otug l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Welcome from OTUG PowerPoint Presentation
Download Presentation
Welcome from OTUG

Loading in 2 Seconds...

play fullscreen
1 / 51

Welcome from OTUG - PowerPoint PPT Presentation


  • 207 Views
  • Uploaded on

Welcome from OTUG Shveta Mehtani presenting : “Lets Connect the Dots…...” Connecting the Dots ……...

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Welcome from OTUG' - paul


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
welcome from otug

Welcome fromOTUG

Shveta Mehtani presenting :

“Lets Connect the Dots…...”

connecting the dots
Connecting the Dots ……...
  • Patterns, Anti-patterns, Iterative development, Rational Unified Process (RUP), XP, SCRUM, Refactoring, - are they just new buzz words to be catalogued and forgotten with thousands of others or do they hold the potential for a bright new future? Can these new gizmos break this long tradition of failures? As software professionals, how do we make sense of all this new technology and leverage it's potential into powerful cost effective solutions? Join the discussion in this exciting shift from methodologies, processes and tools that were seldom successful to those that give us the potential to excel. Explore and unravel some of the mystique and gain a clearer understanding of this new software engineering paradigm!
the problem
The Problem
  • Only16% on time, within budget and with features
  • 53% over run (time, budget, lack features)
  • 31% outright cancelled

Source: Standish “Chaos” Report, http://www.pm2go.com/

agenda
Agenda
  • Getting to know the masterminds
  • Defining the dots
    • Patterns and Anti-Patterns
    • Refactoring
    • Extreme Programming(XP)
    • Rational Unified Process(RUP)
    • SCRUM
  • Connecting the dots
agenda6
Agenda
  • Getting to know the masterminds
  • Defining the dots
    • Patterns and Anti-Patterns
    • Refactoring
    • Extreme Programming(XP)
    • Rational Unified Process(RUP)
    • SCRUM
  • Connecting the dots
the masterminds
The Masterminds
  • Grady Booch
  • James Rumbaugh
  • Ivar Jacobson
  • Phillipe Kruchten
  • Christopher Alexander
  • Erich Gamma
  • Richard Helm
  • Ralph Johnson
  • John Vlissides
  • Kent Beck
the masterminds8
The Masterminds
  • James Coplien
  • Martin Fowler
  • Linda Rising
  • Frank Buschmann
  • Alistair Cockburn
agenda9
Agenda
  • Getting to know the masterminds
  • Defining the dots
    • Patterns and Anti-Patterns
    • Refactoring
    • Extreme Programming(XP)
    • Rational Unified Process(RUP)
    • SCRUM
  • Connecting the dots
what is a pattern
What is a Pattern ?
  • “A pattern addresses a recurring problem that arises in specific situations.”
  • “Patterns document existing, well-proven design experience.”
  • “Patterns identify and specify abstractions that are above the level of single classes and instances.”
what is a pattern11
What is a Pattern ?
  • “Patterns provide a common vocabulary and understanding for design principles.”
  • “Patterns are a means of documenting software architectures.”
  • “Patterns support the construction of software with defined properties.”
  • “Patterns help you build complex and heterogeneous software architectures.”
  • “Patterns help you manage software complexity.”
types of patterns
Types of Patterns
  • Design Patterns
  • Analysis patterns
  • Software architecture patterns
  • Process patterns
  • Organizational patterns
  • Pedagogical patterns
design patterns
Design Patterns
  • Design patterns provide abstract, reusable “micro-architectures” that can be applied (“instantiated”) to resolve specific design issues (forces) in previously-used, high-quality ways
  • GoF defined widely used 23 design patterns like Factory, Observer, Visitor, State, Strategy etc.
analysis patterns
Analysis Patterns
  • By Martin Fowler :
  • “Patterns that reflect conceptual structures of business processes rather than actual software implementations.”
  • Fowler uses a simple, specialized notation (very similar to entity-relationship diagram notation) to depict graphical models of analysis patterns.
software architecture patterns
Software Architecture Patterns
  • “Architectural patterns are templates for concrete software architectures. They specify the system-wide structural properties of an application, and have an impact on the architecture of its subsystems. “
other pattern types
Other Pattern Types
  • Process Patterns
    • patterns that deal with software development process issues
    • work by Scott Ambler
  • Organizational Patterns
    • patterns that deal with organizational issues that arise in software development teams, groups and departments
    • these can often be related to software process patterns
other pattern types17
Other Pattern Types
  • Pedagogical Patterns
    • patterns that deal with best practice solutions to software technology education and training (object-oriented software development in particular)
    • see work by Mary Lynn Manns et al.http://www-lifia.info.unlp.edu.ar/ppp/
benefits of patterns
Benefits of Patterns
  • Potential benefits of the use of patterns
    • provides a common vocabulary and understanding of high-quality design elements for software designers
    • increases productivity in design process due to “design reuse”
    • promotes consistency and high quality of system designs and architectures due to application of high quality, high reliability, tested design expertise and solutions embodied by patterns
benefits of patterns19
Benefits of Patterns
  • allows all levels of designers, from novice to expert, to gain these productivity, quality and consistency benefits
concerns
Concerns
  • Training and education in common and proprietary patterns
    • benefits are dependent upon architects, analysts and designers understanding the patterns to be used
    • benefits are enhanced significantly only if ALL software development personnel understand the patterns as a common “design vocabulary”
    • such training can be costly, and in many cases is proprietary and cannot be obtained externally
concerns21
Concerns
  • Evolution and maintenance to insure continued value
    • specific funding and effort must be directed toward maintenance and evolution of patterns as reusable assets or they tend to devolve into project/application-specific artifacts with dramatically reduced reusability characteristics
    • the necessary funding, technical or organizational infrastructure supports may not exist to allow effective maintenance and evolution of patterns within an organization to insure continued high benefits
antipatterns
AntiPatterns

(from Brown, et al.)

  • “An AntiPattern is a literary form that describes a commonly occurring solution to a problem that generates decidedly negative consequences.”
primal forces
Primal Forces
  • AntiPatterns, like other patterns, deal with forces (concerns, issues) that exist in a specific problem setting
  • Vertical forces are problem domain-specific
  • Horizontal forces are applicable across multiple domains or problem settings
primal forces24
Primal Forces
  • Primal Forces are horizontal forces that are pervasive in software architecture and development. They include:
    • Management of functionality: meeting the requirements
    • Management of performance: meeting required speed of operation
    • Management of complexity: defining abstractions
    • Management of change: controlling the evolution of software
    • Management of IT resources: controlling the use and implementation of people and IT artifacts
    • Management of technology transfer: controlling technology change
design patterns to anti patterns

Context & Causes

Problem

AntiPatternSolution

Context & Forces

Symptoms & Consequences

Solution

RefactoredSolution

RelatedSolutions

Benefits

Consequences

RelatedSolutions

Benefits

Consequences

Design Patterns to Anti-Patterns

Design Patterns

AntiPatterns

Time passesyielding newcontext

agenda26
Agenda
  • Getting to know the masterminds
  • Defining the dots
    • Patterns and Anti-Patterns
    • Refactoring
    • Extreme Programming(XP)
    • Rational Unified Process(RUP)
    • SCRUM
  • Connecting the dots
refactoring
Refactoring
  • “Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure”
  • “A change made to the internal structure of the software to make it easier to understand and cheaper to modify without changing its observable behavior”
  • “When you refactor you are improving the design of the code after it has been written “
          • - Martin Fowler
why refactor
Why Refactor ?
  • Improves the design of Software
  • Makes software easier to understand
  • Helps to find bugs
  • Helps to program faster
when to refactor
When to Refactor ?
  • The Rule of three
    • When you add function
    • When you need to fix a bug
    • When you do a code review
agenda30
Agenda
  • Getting to know the masterminds
  • Defining the dots
    • Patterns and Anti-Patterns
    • Refactoring
    • Extreme Programming(XP)
    • Rational Unified Process(RUP)
    • SCRUM
  • Connecting the dots
processes and methodologies
Processes and Methodologies
  • From Nothing, to Monumental, to Agile
  • Attempt a useful compromise between no process and too much process, providing just enough process to gain a reasonable payoff.
  • Agile methods are adaptive rather than predictive
  • Agile methods are people-oriented rather than process-oriented
what is extreme programming
What is Extreme Programming?
  • “XP is a lightweight (agile) methodology for small-medium-sized teams developing software in the face of vague or rapidly changing requirements. “
  • “It's a team-centric way of developing software focused on delivering business value quickly, without it being a hack.”
  • “It is called “ extreme as it takes the common sense principles and practices to extreme levels”
          • - Kent Beck
12 xp practices
Planning Game

Short Releases

Simple Design

Testing

Refactoring

Pair Programming

Collective Ownership

Continuous Integration

On-site Customer

40 Hour Week

Metaphor

Coding Standards

12 XP Practices
rational unified process rup
Rational Unified Process(RUP)
  • Evolved from Unified Process developed by the “the three Amigos “ – Booch, Rambaugh and Jacobson.
  • Phillepe Krutchen made a detailed refinement on UP and hence came RUP
  • Main focus on Iterative and Incremental Development
is rup agile
Is RUP agile ?
  • RUP can be used in a very traditional waterfall style or in an agile manner.
  • “You can use RUP as a agile process, or as a heavyweight process - it all depends on how you tailor it in your environment. “ – Martin Fowler
  • Craig Larman is a strong proponent of using the RUP in an agile manner
what is scrum
What is SCRUM ?
  • Scrum is an agile, lightweight process to manage and control development work.
  • Scrum is a wrapper for existing engineering practices.
  • Scrum is a team-based approach to iteratively, incrementally develop systems and products when requirements are rapidly changing
  • Scrum is a process that controls the chaos of conflicting interests and needs.
what is scrum39
What is SCRUM ?
  • Scrum is a way to improve communications and maximize co-operation.
  • Scrum is a way to detect and cause the removal of anything that gets in the way of developing and delivering products.
  • Scrum is a way to maximize productivity.
  • Scrum is scalable from single projects to entire organizations. Scrum has controlled and organized development and implementation for multiple interrelated products and projects with over a thousand developers and implementers.
  • Scrum is a pattern.
project management patterns
Project Management Patterns
  • Patterns “mined” from checkups/postmortems.
  • Based on comments from participants.
  • Observed in at least three projects.
  • Industry experience or research verifies solution.
  • Patterns are living and grow based on experience with use.
agenda41
Agenda
  • Getting to know the masterminds
  • Defining the dots
    • Patterns and Anti-Patterns
    • Refactoring
    • Extreme Programming(XP)
    • Rational Unified Process(RUP)
    • SCRUM
  • Connecting the dots
connecting the dots42
Connecting the dots ……..
  • Are we missing the big picture ?
  • What are the key overlapping areas ?
  • How do these methodologies and processes compliment each other?
  • How do they contrast against each other ?
the big picture
The Big Picture
  • Maximize Reuse
  • Keep it Simple
  • Develop in small teams
  • Focus on incremental development
  • Schedule in a Time-boxed fashion
  • Follow adaptive and agile processes
martin fowler modeling thoughts
Martin Fowler Modeling Thoughts
  • “But simple models are always worth the effort. Not only do they make things easier to build, but more importantly they make them easier to maintain and extend in the future. That’s why it is worth replacing software that works with simpler software that also works.”
  • This is a value-based argument against “If it isn’t broken, don’t fix it”
the overlaps
The Overlaps
  • XP and CMM
  • XP and RUP
  • SCRUM and RUP
  • SCRUM and XP
  • XP and Refactoring
  • Patterns and Refactoring
  • SCRUM and Patterns
oh the possibilities
Oh ! The Possibilities !
  • How do they apply to me ?
  • Do I have to pick a camp ?
  • Can I pick the best of all worlds ?
the answer
The Answer
  • “Whatever process you start with will not be the process that'll really work for you. You have to take charge of your process, monitor it and adapt it to your circumstances. In the end it must become your process, any other labels are secondary. “ – Martin Fowler
references
References
  • “Design Patterns: Elements of Reusable Object-Oriented Software” - GoF
  • “Refactoring : Improving the Design of Existing Code “ - Martin Fowler
  • “Extreme Programming Explained : Embrace Change”- Kent Beck
  • “Anti-Patterns: Refactoring Software, Architectures, and Projects in Crisis” - Brown et al
  • RUP online documentation
  • www.controlchaos.com
acknowledgements
Acknowledgements
  • Gary Berosik
  • Kyle Larson
  • Pam Rostal
question and answer
Question and Answer...
  • Questions?
  • Comments