Informatics 122 Software Design II Lecture 12 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.

Slides:



Advertisements
Similar presentations
(c) 2009 University of California, Irvine – André van der Hoek1April 20, 2015 – 00:59:05 Informatics 122 Software Design II Lecture 11 André van der Hoek.
Advertisements

Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 121 Software Design I Lecture 11.
Informatics 122 Software Design II 1 Portions of the slides in this lecture are adapted from a/classes/5448/f12/lectures/
MVC Nick Lopez Duplication of course material for any commercial purpose without the explicit written permission of the professor is prohibited.
Design patterns exercise Nick Lopez Duplication of course material for any commercial purpose without the explicit written permission of the professor.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 121 Software Design I Lecture 14.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
Informatics 122 Software Design II Lecture 5 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
© 2009 University of California, Irvine – André van der Hoek1June 10, 2015 – 18:31:15 Informatics 122 Software Design II Lecture 2 André van der Hoek &
© 2010 University of California, Irvine – André van der Hoek1June 12, 2015 – 07:51:20 Informatics 121 Software Design I Lecture 8 André van der Hoek &
Week 2 Design Examples and Designing for Change Alex Baker.
(c) 2009 University of California, Irvine – André van der Hoek1June 13, 2015 – 21:42:16 Informatics 122 Software Design II Lecture 8 André van der Hoek.
© 2010 University of California, Irvine – André van der Hoek1June 15, 2015 – 14:08:09 Informatics 122 Software Design II Lecture 4 André van der Hoek &
© 2009 University of California, Irvine – André van der Hoek1June 17, 2015 – 09:17:24 Informatics 122 Software Design II Lecture 6 André van der Hoek &
(c) 2010 University of California, Irvine – André van der Hoek1February 21, 2010 – 18:05:18 Informatics 122 Software Design II Lecture 10 Nick Lopez Duplication.
© 2010 University of California, Irvine – André van der Hoek1June 22, 2015 – 23:08:13 Informatics 122 Software Design II Lecture 4 Nick Lopez Duplication.
© 2010 University of California, Irvine – André van der Hoek1June 26, 2015 – 00:06:40 Informatics 122 Software Design II Lecture 6 André van der Hoek &
Managing Reuse Presented by: Aisha Al-Hammadi. Outline Introduction History. The technical and managerial advantages of Reusing Solutions. The main challenges.
(c) 2010 University of California, Irvine – André van der Hoek1June 29, 2015 – 08:55:05 Informatics 122 Software Design II Lecture 8 André van der Hoek.
Informatics 122 Software Design II Lecture 9 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
+ Informatics 122 Software Design II Lecture 8 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
+ Informatics 122 Software Design II Lecture 1 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
Informatics 122 Software Design II Lecture 10 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
Week 2 Design Examples and Designing for Change Alex Baker.
1 Chapter 5 Practice: A Generic View Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 121 Software Design I Lecture 12.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
Computer Science 240 © Ken Rodham 2006 Principles of Software Design.
SWE © Solomon Seifu ELABORATION. SWE © Solomon Seifu Lesson 10 Use Case Design.
+ Informatics 122 Software Design II Lecture 6 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
+ Informatics 122 Software Design II Lecture 2 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
© 2010 University of California, Irvine – André van der Hoek1October 23, 2015 – 10:21:58 Informatics 122 Software Design II Lecture 1 André van der Hoek.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
Introduction to Design. What is Design? 2 minutes Pairs.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 121 Software Design I Lecture 14.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Design and implementation Chapter 7 – Lecture 1. Design and implementation Software design and implementation is the stage in the software engineering.
+ Informatics 122 Software Design II Lecture 13 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
+ Informatics 122 Software Design II Lecture 3 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
Chapter 7 Lecture 1 Design and Implementation. Design and implementation Software design and implementation is the stage in the software engineering process.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 121 Software Design I Lecture 14.
Design Patterns Lecture part 2.
Informatics 121 Software Design I
Informatics 121 Software Design I
Informatics 121 Software Design I
Informatics 122 Software Design II
Informatics 122 Software Design II
Informatics 122 Software Design II
Informatics 121 Software Design I
Informatics 121 Software Design I
Informatics 223 Applied Software Design Techniques
Informatics 122 Software Design II
Informatics 121 Software Design I
Informatics 121 Software Design I
Informatics 121 Software Design I
Informatics 121 Software Design I
Informatics 121 Software Design I
Informatics 121 Software Design I
Software Design Principles
Informatics 122 Software Design II
Applying Use Cases (Chapters 25,26)
Informatics 122 Software Design II
Informatics 122 Software Design II
Informatics 122 Software Design II
Informatics 122 Software Design II
Informatics 121 Software Design I
Informatics 121 Software Design I
Informatics 121 Software Design I
Informatics 121 Software Design I
Presentation transcript:

Informatics 122 Software Design II Lecture 12 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission of the professor is prohibited. 1

Today’s Lecture Course wrap-up

What did we learn? Design aesthetics Design patterns Refactoring Design recovery Reuse Design in the large Design techniques

Purpose of Implementation Design An implementation design is a road map understandable, unambiguous, consistent, helpful, … An implementation design describes a path from application / interaction / architecture design to the product correct, complete, concise, verifiable, effective, … An implementation design describes what the implementers should do elegant, partitionable, recomposable, resilient, … An implementation design is a guide towards future change evolvable, …

More of a Shared Understanding (Not Perfect!) An implementation design is a road map understandable, unambiguous, consistent, helpful, … An implementation design describes a path from application / interaction / architecture design to the product correct, complete, concise, verifiable, effective, … An implementation design describes what the implementers should do elegant, partitionable, recomposable, resilient, … An implementation design is a guide towards future change evolvable, …

Less of a Shared Understanding An implementation design is a road map understandable, unambiguous, consistent, helpful, … An implementation design describes a path from application / interaction / architecture design to the product correct, complete, concise, verifiable, effective, … An implementation design describes what the implementers should do elegant, partitionable, recomposable, resilient, … An implementation design is a guide towards future change evolvable, …

Designing for Change Change abounds! Designing for change is a matter of: Controlling dependency Proper encapsulation Generalizing where you can Which changes? What are the biggest change risks? What kind of program is this, essentially? Where is “the line”? What do we know we will have? Put this in an interface What variations on that might we see? Hide this behind the interface

Design Patterns Design patterns let us reuse solutions that have worked in the past Design patterns show us how to apply good design practices Patterns covered Strategy Adapter Factory Method Abstract Factory Template Method Singleton Facade

Refactoring Refactoring is a useful technique for making non- functional changes to a software system that result in better code structures less code more easily understandable code Bad Smells Useful analogy for discovering places in a system “ripe” for refactoring Remember to test constantly!

Design Recovery Recreating design abstractions from: Code Existing design documentation (if available) Personal experience / general knowledge about problem and application domains Talking to people You will work with code in the absence of a complete design (Biggerstaff, 1989)

Component Reuse Component reuse is using an already-developed piece of software (usually from a third-party) to provide some type of functionality to your system rather than developing the functionality yourself from scratch identify preliminary architecture identify potential places for reuse establish selection criteria (per place) search for applicable components evaluate components select component update architecture

Design-in-the-Large Main challenge: Maintaining a unified design vision Multiple views will be necessary (unless you’re “agile”)

Other Design Techniques Commonality and Variability Analysis (CVA) Used to identify the commonalities (generic concepts) and variations (concrete implementations) in a problem domain Analysis Matrix Used to help designers deal with large amounts of variation in a problem domain Such techniques allow you to use the principles from design patterns in any design

Practice, Practice, Practice… To learn to navigate this space, and learn to be a designer, it is essential to practice, practice, practice There is no theory or magic formula that will teach you to be a designer, only theory that will help you understand what it means to be a designer provides you with a frame of mind through which you can usefully reflect upon your design activities and design products

Thank you!