1 Venkat Subramaniam Quality of Software Design Good design is critical to a software application A good design has following characteristics –Specific.

Slides:



Advertisements
Similar presentations
Introducing User Stories
Advertisements

Agile Software Development کاری از : مهدی هوشان استاد راهنما : استاد آدابی.
PROC-1 3. Software Process. PROC-2 What’s a process? Set of activities in creating software It involves creativity –hard to automate –Requires human judgment.
General OO Concepts and Principles CSE301 University of Sunderland Harry R. Erwin, PhD.
Agile development By Sam Chamberlain. First a bit of history..
SOFTWARE ARCHITECTURE AND AGILE DEVELOPMENT AGILITY AND ARCHITECTURE:CAN THEY COEXIST? PEKKA ABRAHAMSSON, UNIVERSITY OF HELSINKI MUHAMMAD ALI BABAR, IT.
8 September Your Architecture First level diagram: how components fit together.
MED  Problem of the Day: SEND +MORE MONEY.
Project Management – An Overview Project as a metaphor – a way to approach a series of activities Contexts – construction managementt, IT development,
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
COMP 350: Object Oriented Analysis and Design Lecture 2
Introduction to Agile.
Software engineering Process models Pavel Agejkin.
An Overview of Agile L e a d i n g C h a n g e T h r o u g h C o l l a b o r a t i o n.
Object-oriented metrics Design decisions: Class Cohesion Open-Closed Single Responsibility Interface Segregation Dependency Inversion Liskov Substitution.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Software Engineering Modern Approaches
Chapter 5 Software Process Models. Problems with “Traditional” Processes 1.Focused on and oriented towards “large projects” and lengthy development time.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
Workshop: Teamwork practicalities Kauppinen, M. Ylikangas, M.
CS361 Winter 2013 Final Exam Review Software Engineering I Oregon State University.
Ch:10 Component Level Design Unit 4. What is Component? A component is a modular building block for computer software Because components reside within.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
Course Overview & Topics CSc 335: Object-Oriented Programming and Design © Rick Mercer 1.
Chapter 9: Teams and Teamwork Learning Objectives Explain why the use of teams is increasing. Explain the concept of teamwork. Describe the structure and.
Design Patterns. Patterns “Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution.
Principles and Techniques of Evolutionary Architecture Rebecca Parsons Chief Technology Officer ThoughtWorks.
1-1 C Sc 335 Course Overview Object-Oriented Programming and Design Rick Mercer.
Software Engineering process models
UI Panel: Agile User Interface Design Colin Clark.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Agile Working Group Agile Method Critical Success Factors.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
PRINCIPLES OF GOOD DESIGN 12/7/ Assignment 4 – Deadline 28 Nov.  Read an article placed in generalshare course folder  Point: Design Patterns.
Lecture 4 – XP and Agile 17/9/15. Plan-driven and agile development Plan-driven development A plan-driven approach to software engineering is based around.
Five design principles
Software Design 1.1 CPS 108, Spring 2006 l Object oriented programming and design, we'll use Java and C++  Language independent concepts including design.
Design. Practices Principles Patterns What are the characteristics of good design? What are good solutions to common design problems? How do we go about.
CHAPTER 3 MODELING COMPONENT-LEVEL DESIGN.
Agile Methods Presentation By: Jason Abbett. Definition A process to rapidly develop software Many kinds of agile methods but few are practiced.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
Refactoring Agile Development Project. Lecture roadmap Refactoring Some issues to address when coding.
Component Design Elaborating the Design Model. Component Design Translation of the architectural design into a detailed (class-based or module- based)
SOLID Design Principles
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
It’s Agile …. like! A Corkman’s introduction to Agile software delivery.
CS223: Software Engineering Lecture 16: The Agile Methodology.
Agile Requirements Introducing User Stories. Key Principles for Agile Requirements Active user involvement is imperative Agile teams must be empowered.
How to Write Training Plans Child Support Directors Association 2010 Annual Child Support Training Conference & Expo October 5, 2010.
The art and science of quality assurance in the video game industry Our journey to transform QA at EA Canada Mario Vasquez.
Beginning Software Craftsmanship Brendan Enrick Steve Smith
Taking Responsibility for Health. KWL Chart KnowWantLearn Health Triangle Physical Health Mental Health Family –Social Health Information about managing.
Industrial Software Development Process Bashar Ahmad RISC Software GmbH.
Design I. Properties of good design Minimize complexity Maintainable Loose coupling Extensibility Reusability High fan in Low to medium fan out Portability.
Agile Requirements Introducing User Stories. Key Principles for Agile Requirements Active user involvement is imperative Agile teams must be empowered.
14 Jul 2005CSE403, Summer'05, Lecture 09 Lecture 09: Fundamental Principles and Best Practices for Software Design Valentin Razmov.
Project Management Software development models & methodologies
Architecting Complexity HOW UNDERSTANDING COMPLEXITY PROMOTES SIMPLICITY.
Agile Methods SENG 301.
Process 4 Hours.
ديبــــاجــــــة: صادق الكنيست الإسرائيلي في تاريخ على اقتراح قانون دائرة أراضي إسرائيل (تعديل رقم7) – 2009 الذي يشكّل، عمليًا، خطة إصلاح شاملة.
Agile Software Process And its Limitations
Chapter 3: Agile Software Processes
Agile Development – a new way of software development?
A (partial) blueprint for dealing with change
Some principles for object oriented design
Adapting Agile in Pharmaceutical Industries
Chapter 5: New and Emerging Process Methodologies
Presentation transcript:

1 Venkat Subramaniam Quality of Software Design Good design is critical to a software application A good design has following characteristics –Specific to problem –Yet, general enough –Simple –Easier to understand and maintain –Is extensible and maintainable

2 Venkat Subramaniam Design Principles How do you measure quality of design? One architect said “The design is good because I did it.” Well, we need better metrics than that Thankfully good object-oriented design principles are there to help us To name a few –High cohesion and low coupling –Open-closed principle –Liskov’s substitution principle –Dependency Inversion principles –…

3 Venkat Subramaniam Evolutionary Design We often need to balance over design vs. extensibility Rather than overly complication, it is better to start simple and evolve into an appropriate design Evolutionary design and simplicity are key elements in Agile Software Development –A result-oriented approach where working software is considered true measure of progress –Feedback and communication play a key role in this approach

4 Venkat Subramaniam How to do evolutionary design? Agile development relies on three key practices for this –Test First Development You use unit tests to help structure your application and influence your design decisions –Collaboration Your team constantly evaluates design decisions Best designs emerge from passionate developers collaboration –Refactoring Design considerations don’t happen up-front but happen constantly as the system is developed