High Quality Code – Style Matters  Design in Construction  Layout and Style Software Construction by Jeff Nogy.

Slides:



Advertisements
Similar presentations
Revealing the Secrets of Self-Documenting Code Svetlin Nakov Telerik Corporation For C# Developers.
Advertisements

Software Engineering Key construction decisions Design challenges.
Software Engineering Key design concepts Design heuristics Design practices.
1 UML ++ Mohamed T IBRAHIM University of Greenwich -UK.
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Object-Oriented Software Development CS 3331 Fall 2009.
By Justin Hendrix. Design Challenges Design is the activity that links requirements to coding and debugging. Good design is useful on small project and.
IMS1805 Systems Analysis Topic 3: Doing Analysis (continued from previous weeks)
Chapter 13 Design Concepts and Principles
High Quality Code Why it matters. By Ryan Ruzich.
High Quality Code – Style Matters  Chapter 5. Design in Construction  Chapter 31. Layout and Style Software Construction by Jeff Nogy.
Introduction To System Analysis and Design
What is an object? Your dog, your desk, your television set, your bicycle. Real-world objects share two characteristics: They all have state and behavior;
Chapter 6 The Process of Interaction Design Presented by: Kinnis Gosha, Michael McGill, Jamey White, and Chiao Huang.
Object-oriented Programming Concepts
Chapter 1 Principles of Programming and Software Engineering.
Bellevue University CIS 205: Introduction to Programming Using C++ Lecture 7: Methods.
The Software Design Process CPSC 315 – Programming Studio Fall 2009.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Chapter 22 Object-Oriented Design
PRESENTED BY SANGEETA MEHTA EECS810 UNIVERSITY OF KANSAS OCTOBER 2008 Design Patterns.
System Design Decomposing the System. Sequence diagram changes UML 2.x specifications tells that Sequence diagrams now support if-conditions, loops and.
UML and Object Oriented Concepts
13 Jul 2006CSE403, Summer'06, Lecture10 Lifecycle Architecture Review: Preliminary Feedback Valentin Razmov.
Best Practices. 2 How to design a Software Solution The plans or designs: –Represent the agreed upon needs of the user (“contract”) –Communicate what.
Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All rights reserved Chapter 12 Object-Oriented Design.
Design Concepts "You can use an eraser on the drafting table or a sledge hammer on the construction site." Frank Lloyd Wright.
Chapter 5CSA 217 Design in Construction Chapter 5 1.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
Design-Making Projects Work (Chapter7) n Large Projects u Design often distinct from analysis or coding u Project takes weeks, months or years to create.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
Computer Science 240 © Ken Rodham 2006 Principles of Software Design.
9/20/6Lecture 3 - Instruction Set - Al1 Program Design.
THE SOFTWARE DESIGN PROCESS CSCE 315 – Programming Studio Spring 2010.
The Way to Produce Good, Clean Code That Will Blow Your Boss Away!
Design Concepts and Principles Instructor: Dr. Jerry Gao.
Object Oriented Analysis and Design using the UML CIS 520 Advanced Object-Oriented Design.
CSE 403, Spring 2008, Alverson Software Design “There are two ways of constructing a software design: one way is to make it so simple that there are obviously.
Elements of OO Abstraction Encapsulation Modularity Hierarchy: Inheritance & Aggregation 4 major/essential elements3 minor/helpful elements Typing Concurrency.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Software Design Process
Software Waterfall Life Cycle
Designing Classes. Software changes Software is not like a novel that is written once and then remains unchanged. Software is extended, corrected, maintained,
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Design Patterns. 1 Paradigm4 Concepts 9 Principles23 Patterns.
11 Jul 2005CSE403, Summer'05, Lecture 08 Lecture 08: Best Practices for Software Design (Part I) Valentin Razmov.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
Spiral Model For Software Development By : Sumeet Singh Roll No. : 23 Reg No. :
Design. Practices Principles Patterns What are the characteristics of good design? What are good solutions to common design problems? How do we go about.
1 Using const in C++ Classes In the presence of pointers we must take steps to ensure the integrity of the object Can use const method definitions The.
Object- oriented Design Principles
07 Jul 2006CSE403, Summer'06, Lecture10 Lecture 10: Core Principles and Best Practices for Software Design (Part I) “Treat design as a wicked, sloppy,
14 Jul 2005CSE403, Summer'05, Lecture 09 Lecture 09: Fundamental Principles and Best Practices for Software Design Valentin Razmov.
Design Concepts ch-8
Principles of Programming & Software Engineering
Object Oriented Systems Design
Design in Construction
Chapter 1: Software design
Object-Oriented Analysis and Design
Chapter 5:Design Patterns
MPCS – Advanced java Programming
Best Practices for Software System Design
Chapter 5 Design in Construction
SOFTWARE DESIGN AND ARCHITECTURE
The Software Design Process
Object oriented analysis and design
Questions First On class? On project? On material we’ve discussed?
Producing Production Quality Software
Questions First On class? On project? On material we’ve discussed?
Presentation transcript:

High Quality Code – Style Matters  Design in Construction  Layout and Style Software Construction by Jeff Nogy

Part 1. Design in Construction  Introduction  Design Challenges  Key Design Concepts  Design Building Blocks: Heuristics  Design Practices  Comments on Popular Methodologies

Introduction - Code Complete

1. Introduction  Process of building  The hands-on part  Coding or Programming  Construction = Programming

1.1. Design Challenges  Design Is a Wicked Problem Wicked problem Solve the problem once, then solve it again Tacoma Narrows Bridge  Design Is a Sloppy Process (Even If it Produces a Tidy Result) False steps and go down many blind alleys Good Enough?

1.1. Design Challenges  Design Is About Tradeoffs and Priorities Ideal world vs. Real world  Design Involves Restrictions Create possibilities and Restrict possibilities

1.1. Design Challenges  Design Is Nondeterministic More than one way to skin a cat  Design Is a Heuristic Process Trial and Error  Design Is Emergent Evolve and Improve

1.2. Key Design Concepts  Software's Primary Technical Imperative: Managing Complexity Essential and Accidental Difficulties Importance of Managing Complexity How to Attack Complexity

1.2. Key Design Concepts  Desirable Characteristics of a Design  Levels of Design Level 1: Software System Level 2: Division into Subsystems or Packages Level 3: Division into Classes Level 4: Division into Routines Level 5: Internal Routine Design

1.3. Design Building Blocks: Heuristics  Find Real-World Objects  Form Consistent Abstractions  Encapsulate Implementation Details  Inherit—When Inheritance Simplifies the Design

1.3. Design Building Blocks: Heuristics  Hide Secrets (Information Hiding) Secrets and the Right to Privacy Value of Information Hiding  Identify Areas Likely to Change  Keep Coupling Loose Coupling Criteria Kinds of Coupling

1.3. Design Building Blocks: Heuristics  Look for Common Design Patterns Patterns provide several benefits  Other Heuristics Things to aim for  Guidelines for Using Heuristics

1.4. Design Practices  Iterate  Divide and Conquer  Top-Down and Bottom-Up Design Approaches  Experimental Prototyping  Collaborative Design  How Much Design Is Enough?  Capturing Your Design Work

1.5. Comments on Popular Methodologies  “Treat design as a wicked, sloppy, heuristic process. Don't settle for the first design that occurs to you. Collaborate. Strive for simplicity. Prototype when you need to. Iterate, iterate, and iterate again. You'll be happy with your designs.”

Conclusion  Software complexity  Simplicity is achieved in two general ways  Design is heuristic  Good design is iterative  Information hiding  The first priority of visual layout  Looking good is secondary  Pure blocks and Pure-block emulation  Structuring code is important  Religious issues