Notes on software design

Slides:



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

Lilian Blot Announcements Teaching Evaluation Form week 9 practical session Formative Assessment week 10 during usual practical sessions group 1 Friday.
When is Orientated Programming NOT? Mike Fitzpatrick.
Department of Computer Engineering Faculty of Engineering, Prince of Songkla University 1 5 – Abstract Data Types.
Lecture 9 Improving Software Design CSC301-Winter 2011 – University of Toronto – Department of Computer Science Hesam C. Esfahani
Notes on C# and software design By: Matt Boggus Some material based on slides by Roger Crawfis.
WEL COME PRAVEEN M JIGAJINNI PGT (Computer Science) MCA, MSc[IT], MTech[IT],MPhil (Comp.Sci), PGDCA, ADCA, Dc. Sc. & Engg.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Computer Science 240 Principles of Software Design.
Copyright © 2002, Systems and Computer Engineering, Carleton University Intro.ppt * Object-Oriented Software Development Unit 1 Course.
Chapter 9: Coupling & Cohesion Omar Meqdadi SE 273 Lecture 9 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
BCS 2143 Introduction to Object Oriented and Software Development.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
CSE 303 – Software Design and Architecture
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
Software Engineering Introduction and Overview Takes customer-defined goals and constraints and derives a representation of function, performance, interfaces,
Computer Science 240 © Ken Rodham 2006 Principles of Software Design.
Cohesion and Coupling CS 4311
CSE 303 – Software Design and Architecture LECTURE 4.
Yazd University, Electrical and Computer Engineering Department Course Title: Advanced Software Engineering By: Mohammad Ali Zare Chahooki 1 Machine Learning.
Design.ppt1 Top-down designs: 1. Define the Problem IPO 2. Identify tasks, Modularize 3. Use structure chart 4. Pseudocode for Mainline 5. Construct pseudocode.
Chapter 10 Software Engineering. Understand the software life cycle. Describe the development process models. Understand the concept of modularity in.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Sadegh Aliakbary. Copyright ©2014 JAVACUP.IRJAVACUP.IR All rights reserved. Redistribution of JAVACUP contents is not prohibited if JAVACUP.
Mechanisms for Reuse CMPS OOP billed as technology that permits software to be constructed from general-purpose reusable components Two main mechanisms.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Chapter 2 Object-Oriented Paradigm Overview. Getting Acquainted with the Class Project Read the requirements specification carefully Make note of any.
Dr D. Greer, Queens University Belfast )Chapter Six 1 Software Engineering Chapter Six Software Design Quality Learning Outcomes.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Five design principles
PC204 Lecture 5 Programming Methodologies Copyright 2000 by Conrad Huang and the Regents of the University of California. All rights reserved.
Design and Planning Or: What’s the next thing we should do for our project?
Design. Practices Principles Patterns What are the characteristics of good design? What are good solutions to common design problems? How do we go about.
CIT 590 Intro to Programming Lecture 10 (object oriented programming)
Chapter 9: Coupling & Cohesion Omar Meqdadi SE 273 Lecture 9 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
CSE 2341 Object Oriented Programming with C++ Note Set #4
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
Welcome to OBJECT ORIENTED PROGRAMMING Prepared By Prepared By : VINAY ALEXANDER PGT(CS) KV jhagrakhand.
Coupling and Cohesion Schach, S, R. Object-Oriented and Classical Software Engineering. McGraw-Hill, 2002.
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
Principles of Programming & Software Engineering
Object Oriented Systems Design
Notes on software design and C#
Chapter 1: Software design
Object-Orientated Analysis, Design and Programming
7. Modular and structured design
CompSci 280 S Introduction to Software Development
CHAPTER 5 GENERAL OOP CONCEPTS.
Coupling and Cohesion 1.
Data Abstraction: The Walls
CMPE 135: Object-Oriented Analysis and Design October 24 Class Meeting
OOP What is problem? Solution? OOP
Distribution and components
Lecture 2 of Computer Science II
object oriented Principles of software design
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Object Oriented Design Patterns - Structural Patterns
Why Object-oriented Programming?
Need for the subject.
Unit 6 Assignment 2 Chris Boardley.
Software Design Lecture : 9.
Software Design Lecture : 14.
CMPE 135 Object-Oriented Analysis and Design March 21 Class Meeting
Software Design Principles
What Is Good Software(Program)?
A (partial) blueprint for dealing with change
Chapter 8, Design Patterns Introduction
Object Oriented Design & Analysis
Presented by KARRI GOVINDA RAO ,
Presentation transcript:

Notes on software design By: Matt Boggus

Some characteristics of high quality software Simple Readable Maintainable Reusable For more specific qualities/principles, read up on SOLID (object-oriented design)

Simple Composed of a single element; not compound Complexify: to make complex Complect: intertwine; interweave; to combine Related software design principles SOLID: Singular Responsibility Principle SOLID: Interface segregation principle Separation of Concerns Don’t Repeat Yourself Image from https://bagntell.files.wordpress.com/2012/02/four_string_braided-strap.jpg

Cohesion High cohesion Low cohesion int Square(int num) { return num * num; } void DoStuff() { BuyTickets(); MakeCoffee(); DriveToMuseum(); CashLotteryTicket(); }

Readable Function of See blockExample classes Naming conventions Formatting (white space) Control flow (problem decomposition) Reader’s experience with the language See blockExample classes

Maintainable Ease of the following tasks: isolate defects or their cause, correct defects or their cause, repair or replace faulty or worn-out components without having to replace still working parts, prevent unexpected breakdowns, maximize a product's useful life, maximize efficiency, reliability, and safety, meet new requirements, make future maintenance easier, or cope with a changed environment. We’ll come back to this with the Person*.cs examples

Coupling Loose Coupling Tight Coupling IController controller; controller = new KeyboardController(); controller.Update(); if(myGame.KeyboardCotnroller. KeyA.isPushed) { Jump(); }

Reusable Reuse of existing code in other projects Related software design principle Composition over inheritance Identical Panel Gag image from http://tvtropes.org/pmwiki/pmwiki.php/ComicBook/Invincible

Two programming paradigms Object-oriented Programming Focus on readability Objects are an abstraction to be used by client programmers, and should follow a mental model of the actual or imagined object it represents Objects are “nouns” that have fields “adjectives” and methods “verbs” More discussion on why OOP is useful here Entity-Component System Focus on reusability Software should be constructed by gluing together prefabricated components like in electrical engineering Functionality is attached to an object instead of inside its implementation