Separation of Concerns

Size: px
Start display at page:

Download "Separation of Concerns"

Transcription

1 Separation of Concerns and its relation to software engineering, process and car bumpers Charles Féval feval.ca

2 About me Dev manager at BuildDirect Not technically a software engineer in Canada. I don't speak Portuguese. If it does not make sense, assume it's my accent. I don't like grated coconut At some point of my life I've coded in PHP and enjoyed it. It's past story. I'm very ashamed. Don't blame me. If it sounds fishy it's probably because I'm a filthy liar. I'm definitely not an expert. Some of this will sound like common sense.

3 > About common sense That what is self-evident to one person can be seen as silly by another should give us pause about the reliability of common sense as a basis for understanding the world. - Duncan J. Watts - Everything is Obvious

4 > My goal today SoC is a simple concept, so why talking about it? SoC is a very versatile tool SoC has to be a conscious process to be effective SoC can bring enormous value when it's applied

5 It all started on a sunny Sunday at Granville Island

6 > But actually, it started on a sunny Sunday at Granville Island

7 Separation of Concerns Attributed to Dijkstra: It is what I sometimes have called the separation of concerns, which, even if not perfectly possible, is yet the only available technique for effective ordering of one's thoughts, that I know of. This is what I mean by focusing one's attention upon some aspect : it does not mean ignoring the other aspects, it is just doing justice to the fact that from this aspect's point of view, the other is irrelevant. The keyword here is focus: deal entirely with one thing.

8 > Applying Separation of Concerns (SoC) SoC is: A thinking pattern (one thing at a time) An improvement process (baby steps) A strategy (divide to conquer) A philosophy (carpe diem) SoC is a disturbingly universal approach

9 > We are wired against SoC We are tempted to infer a cause-and-effect relationship when all we have witnessed is a sequence of events. This is the post-hoc fallacy. - Duncan J. Watts - Everything is obvious Post-hoc fallacy, circular reasoning, attribution bias, hallo effect, anchoring Our brains are wired to see connections where there are none even though it's a simple concept, it has to be applied consciously.

10 > Everything is somewhat connected Brains evolve to match patterns and connect the dots Mixing concerns is the natural state of things (2nd law) Changing natural behaviours is uncomfortable -resistance from ourselves and from others.

11 Customer record When coding When discussing

12 Modularity / decoupling System elements should have exclusivity and singularity of purpose Singularity: it should solve only one concern Exclusivity: it should be the only one solving the concern Rule of thumb: if an element description contains the word and, it's probably addressing two concerns, and it would probably be better off decomposed. System element is a very generic term, should be interpreted at each level of abstraction.

13 > Examples FileSystem: Abstracts the access to filesystem for consumers to perform IO on hard drive FileManager: manages files Person: contact information about a person following RFC 6350 Person: person's contact info and methods to export as JSON PersonSerializer: perform JSON or XML serialization of Person PersonJsonSerializer: perform JSON serialization of a Person /person/{id}: endpoint to retrieve a person's contact info and its purchase history /person/{id}: endpoint to retrieve contact info and avatar

14 > Some technology examples HTML, CSS, JavaScript separate handling of layout, styling and behaviour through three technologies MVC frameworks try to separate handling of data, presentation and logic. Better yet: the onion architecture Databases and webservers separate data storage from code execution

15 > Horizontal SoC - Technical

16 > Vertical SoC - Functional

17 > SoC by aspect

18 > It's a matter of balance Everything should be made as simple as possible, but not simpler. - Albert Einstein Benefits from SoC is a U shaped curve

19 > Outcomes from applying SoC to system design Top-down approach to reasoning which results in: System is easier to understand System is easier to maintain It's an organic way to ensure cohesion Enhance reusability (from both accessibility and genericness) These outcomes are also a good framework to check that SoC was applied correctly

20 Software engineering: SOLID Core engineering principles introduced as the 'first 5' by Uncle Bob Single responsibility principle Open for extension / Close for modification Liskov substitution principle Interface segregation principle Dependency inversion principle Software is better SOLID than DRY See also: composition over inheritance principle

21 > SOLID and SoC All 5 SOLID principles help proper SoC

22 > Single Responsibility Principle Modules should deal with only one concern Principle: A software module has only one responsibility. Rule of thumb applies: it should be possible to describe it using one sentence without using the word and. Lemma: that which has a responsibility should embrace it entirely.

23 > Open Close Principle / Liskov Substitution Principle Principle: One is mirror to the other: OCP: don't let people do stupid things with your class and LSP: don't do stupid things with someone else's classes Focus on solving one problem, prevent it to be mixed with other problems. If an element's conceptual boundaries (a.k.a. the concern it solves) are clearly defined, one will be less tempted to breach OCP and LSP.

24 > Interface Segregation Principle Interface should not cover coffee-making and pea-sorting Principle: keep your interfaces small and focused If multiple concerns need be addressed, then multiple interfaces you should have. The thing that saves your data and the thing that saves your logs do not have the same end so should not have the same implementation. Lemma: your interface shall be whole, File.Open and File.Save are in the same interface because they address the same concern: FileSystem access.

25 > Dependency Inversion Principle Leave it to the higher levels to decide Principle: High-level modules should not depend on low-level modules. Both should depend on abstractions. What and how are two different concerns, they need to be addressed separately. Your class's responsibility is to do its job, not to decide where to log stuff. Except if its job is to decide where to log stuff.

26 Composition over Inheritance Favour code reuse through composition rather than inheritance OCP: The problem of the Flying house Square and rectangle: is square a specialized rectangle, or is rectangle an extended square? different sets of constraints and business rules different modules square might leverage the rectangle implementation they might implement their common rules and methods as a common module (drawrect)

27 > Business rules are evolving Let's consider these rules: 1. All shapes are blue. Rectangles have 4 sides and a 90 angle. Squares have 4 equal length sides and 90 angles. 2. Rectangles are blue, squares are red 3. Squares have a yellow border 4. Rectangles have 5 sides Inheritance makes evolution more complex because it breaks SoC.

28 About quotes If you don't find a quote to support your claim, quote yourself. - Charles Féval... still better than lying.

29 Problem solving If a problem is too complex, it's probably because it's not decomposed enough - Charles Féval Seems common sense, yet consciously applying it is challenging. Why, what, how, whom and when are separate concerns.

30 Organizing work Mixed concerns is the natural state of things Separating concerns is uncomfortable. People

31 Iterations / small batches Separating concerns is the root of iterating. Separating concerns = decomposing & decoupling Decomposing = reducing batch size Reducing batch size reducing cycle time Reducing cycle time reduces chances of interruption Reducing interruptions makes you happy.

32 > Multi-tasking / Focused Delivery Worse than concerns vaguely related being put together: mixing stuff that has nothing in common You guys in the business are punch drunk on projects, taking on new work that doesn t have a prayer of succeeding. Why? Because you have no idea what capacity you actually have. - The Phoenix Project - Gene Kim, Kevin Behr, George S pafford

33 >... Humans are bad at multi-tasking, as much as teams are bad at multi-tasking. Your own capacity is 1. You team capacity is n (where n = count(members)). Read Principles of Product Development Flow

34 > Personal organization: GTD and Pomodoro Getting Things Done is a methodology advocating getting everything out of your mind to achieve a state of flow. Relies heavily on separating several phases to tracking your tasks. Pomodoro is a time management method that relies on splitting your work into chunks doable in 25 minutes sections.

35 SoC & Organization Organizations which design systems [...] are constrained to produce designs which are copies of the communication structures of these organizations - Melvin Conway Clear boundaries decrease the number of communication channels replaces friction and territorial wars by cooperation A cohesive architecture requires a cohesive separation of duty

36 SoC & ToC Theory of constraints is a process improvement process. Its theory is that the global throughput of a system is limited by a single constraint. To increase throughput you need to focus on optimizing the process for the constraint. Iterates on 5 steps: identify the current constraint, decide how to exploit it subordinate the rest of the process to the constraint elevate it iterate on the new constraint

37 Exceptions SoC does not seem to apply for Negotiating, trading, etc. Just be aware that if you're not leading it, it might be that somebody plays on one of your human bias. When stuff is actually hard-linked together (e.g.: CAP theorem), in which case you're still gonna be better of separating concerns, even though they impact each other.... i.e. SoC still usefull (I will not admit that I'm wrong)

38 Conclusion Separating concerns means dealing exclusively and singularly with one aspect of a problem. SoC is universal SoC has to be a conscious process Don't mix getting a PS4 in a discussion about budget. Focus on the PS4, deal with budget later.

39 Thanks?!?

CSC207H: Software Design SOLID. CSC207 Winter 2018

CSC207H: Software Design SOLID. CSC207 Winter 2018 SOLID CSC207 Winter 2018 1 SOLID Principles of Object-Oriented Design How do we make decisions about what is better and what is worse design? Principles to aim for instead of rules. e.g. there is no maximum

More information

Introduction to Testing and Maintainable code

Introduction to Testing and Maintainable code Introduction to Testing and Maintainable code Reasons not to write unit tests 1. I don't know how to write tests. 2. Writing tests is too hard. 3. I don't have enough time to write tests. 4. Testing is

More information

ARCHITECTING IN THE GAPS

ARCHITECTING IN THE GAPS ARCHITECTING IN THE GAPS Eoin Woods www.eoinwoods.info! 2 About Me Software architect & development manager at UBS Investment Bank working on equity swaps systems in Equity Derivatives Software architect

More information

Bruno Bossola SOLID Design Principles

Bruno Bossola SOLID Design Principles Bruno Bossola SOLID Design Principles About me C Developer since 1988 Java developer since 1996 XP Coach during 2000 2001 Lead coordinator and co founder of JUG Torino in 2001 Sun Java Champion since 2005

More information

Practice What You Preach Full Separation of Concerns in CS 1 /CS 2

Practice What You Preach Full Separation of Concerns in CS 1 /CS 2 Practice What You Preach Full Separation of Concerns in CS 1 /CS 2 Hamzeh Roumani Department of Comp Science & Engineering York University, Toronto, Canada CONTEXT SIGCSE, its conferences and activities,

More information

Visual Design. Simplicity, Gestalt Principles, Organization/Structure

Visual Design. Simplicity, Gestalt Principles, Organization/Structure Visual Design Simplicity, Gestalt Principles, Organization/Structure Many examples are from Universal Principles of Design, Lidwell, Holden, and Butler Why discuss visual design? You need to present the

More information

Intro to: Design Principles

Intro to: Design Principles Intro to: Design Principles Pragmatic Programmer: Eliminate Effects Between Unrelated Things design components that are: self-contained, independent, and have a single, well-defined purpose Software Design

More information

1 Software Architecture

1 Software Architecture Some buzzwords and acronyms for today Software architecture Design pattern Separation of concerns Single responsibility principle Keep it simple, stupid (KISS) Don t repeat yourself (DRY) Don t talk to

More information

a career how and Tuesday, November 8, 2011

a career how and Tuesday, November 8, 2011 a career how and why @postwait Hi, I m Theo I ve made a career in @ this stuff Career what s that? A career is a pursuit; a willingness to mature; patience to become exceptional WANTED: Expert: Java APPLICANT:

More information

The Software Design Process. CSCE 315 Programming Studio, Fall 2017 Tanzir Ahmed

The Software Design Process. CSCE 315 Programming Studio, Fall 2017 Tanzir Ahmed The Software Design Process CSCE 315 Programming Studio, Fall 2017 Tanzir Ahmed Outline Challenges in Design Design Concepts Heuristics Practices Challenges in Design A problem that can only be defined

More information

Application Architectures, Design Patterns

Application Architectures, Design Patterns Application Architectures, Design Patterns Martin Ledvinka martin.ledvinka@fel.cvut.cz Winter Term 2017 Martin Ledvinka (martin.ledvinka@fel.cvut.cz) Application Architectures, Design Patterns Winter Term

More information

Intro. Scheme Basics. scm> 5 5. scm>

Intro. Scheme Basics. scm> 5 5. scm> Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if

More information

CYBER SECURITY FOR BUSINESS COUNTING THE COSTS, FINDING THE VALUE

CYBER SECURITY FOR BUSINESS COUNTING THE COSTS, FINDING THE VALUE CYBER SECURITY FOR BUSINESS COUNTING THE COSTS, FINDING THE VALUE Business has always looked to squeeze the maximum possible benefit out of IT resources at the lowest possible cost but measuring return

More information

Learning to Provide Modern Solutions

Learning to Provide Modern Solutions 1 Learning to Provide Modern Solutions Over the course of this book, you will learn to enhance your existing applications to modernize the output of the system. To do this, we ll take advantage of the

More information

OODA Security. Taking back the advantage!

OODA Security. Taking back the advantage! OODA Security Taking back the advantage! About Me Kevin Fiscus Owner Cyber Defense Advisors 24 Years in IT 13 Years in security SANS Certified Instructor GIAC Security Expert Cyber Guardian Red/Blue Team

More information

Object-Oriented Design I

Object-Oriented Design I Object-Oriented Design I SWEN-261 Introduction to Software Engineering Department of Software Engineering Rochester Institute of Technology Single responsibility High cohesion Information expert Low coupling

More information

Exam Ref Programming In HTML5 With JavaScript And CSS3 (MCSD): Programming In HTML5 With JavaScript And CSS3 Free Ebooks PDF

Exam Ref Programming In HTML5 With JavaScript And CSS3 (MCSD): Programming In HTML5 With JavaScript And CSS3 Free Ebooks PDF Exam Ref 70-480 Programming In HTML5 With JavaScript And CSS3 (MCSD): Programming In HTML5 With JavaScript And CSS3 Free Ebooks PDF Prepare for Microsoft Exam 70-480â and help demonstrate your real-world

More information

ORB Education Quality Teaching Resources

ORB Education Quality Teaching Resources These basic resources aim to keep things simple and avoid HTML and CSS completely, whilst helping familiarise students with what can be a daunting interface. The final websites will not demonstrate best

More information

Who am I? I m a python developer who has been working on OpenStack since I currently work for Aptira, who do OpenStack, SDN, and orchestration

Who am I? I m a python developer who has been working on OpenStack since I currently work for Aptira, who do OpenStack, SDN, and orchestration Who am I? I m a python developer who has been working on OpenStack since 2011. I currently work for Aptira, who do OpenStack, SDN, and orchestration consulting. I m here today to help you learn from my

More information

How Rust views tradeoffs. Steve Klabnik

How Rust views tradeoffs. Steve Klabnik How Rust views tradeoffs Steve Klabnik 03.04.2019 What is a tradeoff? Bending the Curve Overview Design is about values Case Studies BDFL vs Design By Committee Stability Without Stagnation Acceptable

More information

Simple AngularJS thanks to Best Practices

Simple AngularJS thanks to Best Practices Simple AngularJS thanks to Best Practices Learn AngularJS the easy way Level 100-300 What s this session about? 1. AngularJS can be easy when you understand basic concepts and best practices 2. But it

More information

1: Introduction to Object (1)

1: Introduction to Object (1) 1: Introduction to Object (1) 김동원 2003.01.20 Overview (1) The progress of abstraction Smalltalk Class & Object Interface The hidden implementation Reusing the implementation Inheritance: Reusing the interface

More information

Introduction to Programming

Introduction to Programming CHAPTER 1 Introduction to Programming Begin at the beginning, and go on till you come to the end: then stop. This method of telling a story is as good today as it was when the King of Hearts prescribed

More information

Sass. The Future of Stylesheets.

Sass. The Future of Stylesheets. Sass. The Future of Stylesheets. Chris Eppstein Follow me @chriseppstein Architect - Caring.com Creator - Compass Stylesheet Framework Core Contributor - Sass A website for caregivers of the sick and elderly.

More information

Poulsen, Kevin Wednesday, November 07, :54 PM Singel, Ryan FW: [hush.com # ] Journalist's query

Poulsen, Kevin Wednesday, November 07, :54 PM Singel, Ryan FW: [hush.com # ] Journalist's query Singel, Ryan From: Sent: To: Subject: Poulsen, Kevin Wednesday, November 07, 2007 1:54 PM Singel, Ryan FW: [hush.com #2012168] Journalist's query -----Original Message----- From: Brian Smith [mailto:sbs@hushmail.com]

More information

Everything you did not want to know about least squares and positional tolerance! (in one hour or less) Raymond J. Hintz, PLS, PhD University of Maine

Everything you did not want to know about least squares and positional tolerance! (in one hour or less) Raymond J. Hintz, PLS, PhD University of Maine Everything you did not want to know about least squares and positional tolerance! (in one hour or less) Raymond J. Hintz, PLS, PhD University of Maine Least squares is used in varying degrees in -Conventional

More information

Applying Machine Learning to Real Problems: Why is it Difficult? How Research Can Help?

Applying Machine Learning to Real Problems: Why is it Difficult? How Research Can Help? Applying Machine Learning to Real Problems: Why is it Difficult? How Research Can Help? Olivier Bousquet, Google, Zürich, obousquet@google.com June 4th, 2007 Outline 1 Introduction 2 Features 3 Minimax

More information

CHAPTER 5: PRINCIPLES OF DETAILED DESIGN

CHAPTER 5: PRINCIPLES OF DETAILED DESIGN CHAPTER 5: PRINCIPLES OF DETAILED DESIGN SESSION II: STRUCTURAL AND BEHAVIORAL DESIGN OF COMPONENTS Software Engineering Design: Theory and Practice by Carlos E. Otero Slides copyright 2012 by Carlos E.

More information

Principles of Design. Alignment

Principles of Design. Alignment Principles of Design Alignment Essential Question: How does alignment affect layout design? Can you imagine how difficult it would be to find your car in a crowded parking lot if everyone ignored the parking

More information

Nonprogrammers Can Build Important Parts of Prototypes

Nonprogrammers Can Build Important Parts of Prototypes Nonprogrammers Can Build Important Parts of Prototypes Abstract: Here is a two-part whole-application model that enables nonprogrammers who understand the client business to participate importantly in

More information

SOLID Principles. Equuleus Technologies. Optional Subheading October 19, 2016

SOLID Principles. Equuleus Technologies. Optional Subheading October 19, 2016 SOLID Principles Optional Subheading October 19, 2016 Why SOLID Principles? The traits of well designed software are as follows Maintainability - The ease with which a software system or component can

More information

Principles of Object-Oriented Design

Principles of Object-Oriented Design Principles of Object-Oriented Design 1 The Object-Oriented... Hype What are object-oriented (OO) methods? OO methods provide a set of techniques for analysing, decomposing, and modularising software system

More information

Introduction to Programming Style

Introduction to Programming Style Introduction to Programming Style Thaddeus Aid The IT Learning Programme The University of Oxford, UK 30 July, 2013 Abstract Programming style is the part of the program that the human reads and the compiler

More information

Process of Interaction Design and Design Languages

Process of Interaction Design and Design Languages Process of Interaction Design and Design Languages Process of Interaction Design This week, we will explore how we can design and build interactive products What is different in interaction design compared

More information

Software Engineering Principles

Software Engineering Principles 1 / 19 Software Engineering Principles Miaoqing Huang University of Arkansas Spring 2010 2 / 19 Outline 1 2 3 Compiler Construction 3 / 19 Outline 1 2 3 Compiler Construction Principles, Methodologies,

More information

Plan. Design principles: laughing in the face of change. What kind of change? What are we trying to achieve?

Plan. Design principles: laughing in the face of change. What kind of change? What are we trying to achieve? Plan Design principles: laughing in the face of change Perdita Stevens School of Informatics University of Edinburgh What are we trying to achieve? Review: Design principles you know from Inf2C-SE Going

More information

COURSE 2 DESIGN PATTERNS

COURSE 2 DESIGN PATTERNS COURSE 2 DESIGN PATTERNS CONTENT Fundamental principles of OOP Encapsulation Inheritance Abstractisation Polymorphism [Exception Handling] Fundamental Patterns Inheritance Delegation Interface Abstract

More information

Lessons Learned. Johnny Bigert, Ph.D., Skype/Microsoft October 26, 2011

Lessons Learned. Johnny Bigert, Ph.D., Skype/Microsoft October 26, 2011 Lessons Learned Johnny Bigert, Ph.D., Skype/Microsoft johnny.bigert@skype.net October 26, 2011 Why do we do the things we do? Software Development Object-orientation, design principles, timeboxing, teams,

More information

HTML/CSS Lesson Plans

HTML/CSS Lesson Plans HTML/CSS Lesson Plans Course Outline 8 lessons x 1 hour Class size: 15-25 students Age: 10-12 years Requirements Computer for each student (or pair) and a classroom projector Pencil and paper Internet

More information

Interaction Design. Task Analysis & Modelling

Interaction Design. Task Analysis & Modelling Interaction Design Task Analysis & Modelling This Lecture Conducting task analysis Constructing task models Understanding the shortcomings of task analysis Task Analysis for Interaction Design Find out

More information

EADS up. stop think connect

EADS up. stop think connect EADS up stop think connect You text, you play games, you share photos and video. You update your status, you post comments, you probably spend some time in a virtual world. Being online connected through

More information

[PDF] Hacking: The Ultimate Beginners Guide To The World Of Hacking

[PDF] Hacking: The Ultimate Beginners Guide To The World Of Hacking [PDF] Hacking: The Ultimate Beginners Guide To The World Of Hacking In the world of information technology (IT), hacking is the manipulation of the normal behavior of network connections, systems and computer

More information

Moving from FrameMaker to Blaze: Best Practices

Moving from FrameMaker to Blaze: Best Practices Moving from Adobe FrameMaker to MadCap Blaze is easy, although to get the best results you need to do some planning before you start. This document discusses suggestions and issues to make the import result

More information

Part II: Creating Visio Drawings

Part II: Creating Visio Drawings 128 Part II: Creating Visio Drawings Figure 5-3: Use any of five alignment styles where appropriate. Figure 5-4: Vertical alignment places your text at the top, bottom, or middle of a text block. You could

More information

Expanding Our Horizons. CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 9 09/25/2011

Expanding Our Horizons. CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 9 09/25/2011 Expanding Our Horizons CSCI 4448/5448: Object-Oriented Analysis & Design Lecture 9 09/25/2011 1 Goals of the Lecture Cover the material in Chapter 8 of our textbook New perspective on objects and encapsulation

More information

Design Principles: Part 2

Design Principles: Part 2 Liskov Substitution Principle (LSP) Dependency-Inversion Principle (DIP) Interface-Segregation Principle (ISP) Design Principles: Part 2 ENGI 5895: Software Design Andrew Vardy Faculty of Engineering &

More information

CAS 703 Software Design

CAS 703 Software Design Dr. Ridha Khedri Department of Computing and Software, McMaster University Canada L8S 4L7, Hamilton, Ontario Other 1 2 3 4 Other Principle of Least Privilege Principle of Fail-Safe Defaults Principle of

More information

Originality is Overrated: OO Design Principles

Originality is Overrated: OO Design Principles Originality is Overrated: OO Design Principles Kenneth M. Anderson University of Colorado, Boulder CSCI 4448/6448 Lecture 13 10/09/2007 University of Colorado, 2007 1 Lecture Goals Review material from

More information

Outline. Design Principles: Part 2. e.g. Rectangles and Squares. The Liskov Substitution Principle (LSP) ENGI 5895: Software Design.

Outline. Design Principles: Part 2. e.g. Rectangles and Squares. The Liskov Substitution Principle (LSP) ENGI 5895: Software Design. Liskov Substitution Principle (LSP) Dependency-Inversion Principle (DIP) Interface-Segregation Principle (ISP) Liskov Substitution Principle (LSP) Dependency-Inversion Principle (DIP) Interface-Segregation

More information

User-Centered Design Data Entry

User-Centered Design Data Entry User-Centered Design Data Entry CS 4640 Programming Languages for Web Applications [The Design of Everyday Things, Don Norman, Ch 7] 1 Seven Principles for Making Hard Things Easy 1. Use knowledge in the

More information

Cognitive Disability and Technology: Universal Design Considerations

Cognitive Disability and Technology: Universal Design Considerations Cognitive Disability and Technology: Universal Design Considerations Clayton Lewis Coleman Institute for Cognitive Disabilities RERC-ACT clayton.lewis@colorado.edu Prepared for AUCD Training Symposium,

More information

Lecture: Modular Design

Lecture: Modular Design Software Engineering Lecture: Modular Design Thomas Fritz Many thanks to Philippe Beaudoin, Gail Murphy, David Shepherd, Neil Ernst and Meghan Allen Reading! For next lecture: (all required) Composite

More information

CSC 443: Web Programming

CSC 443: Web Programming 1 CSC 443: Web Programming Haidar Harmanani Department of Computer Science and Mathematics Lebanese American University Byblos, 1401 2010 Lebanon Today 2 Course information Course Objectives A Tiny assignment

More information

OPEN THE HOTLINE CLIENT

OPEN THE HOTLINE CLIENT OPEN THE HOTLINE CLIENT Everything in the Hotline universe starts with the Client Toolbar; it launches all of the Client s major functions. 1 Double-click the Hotline icon on your desktop. The Hotline

More information

6. The Document Engineering Approach

6. The Document Engineering Approach 6. The Document Engineering Approach DE + IA (INFO 243) - 11 February 2008 Bob Glushko 1 of 40 Plan for Today's Class Modeling Methodologies The Document Engineering Approach 2 of 40 What Modeling Methodologies

More information

Web Design and Databases WD: Class 3: Usability. Dr Helen Hastie Dept of Computer Science Heriot-Watt University

Web Design and Databases WD: Class 3: Usability. Dr Helen Hastie Dept of Computer Science Heriot-Watt University Web Design and Databases WD: Class 3: Usability Dr Helen Hastie Dept of Computer Science Heriot-Watt University Last time Pre-production Navigation Layout Writing Homework Find 3 websites with clear themes/metaphors

More information

Ingegneria del Software Corso di Laurea in Informatica per il Management. Software quality and Object Oriented Principles

Ingegneria del Software Corso di Laurea in Informatica per il Management. Software quality and Object Oriented Principles Ingegneria del Software Corso di Laurea in Informatica per il Management Software quality and Object Oriented Principles Davide Rossi Dipartimento di Informatica Università di Bologna Design goal The goal

More information

Chapter 2 Web Development Overview

Chapter 2 Web Development Overview Chapter 2 Web Development Overview Presented by Thomas Powell Slides adopted from HTML & XHTML: The Complete Reference, 4th Edition 2003 Thomas A. Powell Five Pillars of Sites Web sites have five aspects

More information

Good afternoon and thank you for being at the webinar on accessible PowerPoint presentations. This is Dr. Zayira Jordan web accessibility coordinator

Good afternoon and thank you for being at the webinar on accessible PowerPoint presentations. This is Dr. Zayira Jordan web accessibility coordinator Good afternoon and thank you for being at the webinar on accessible PowerPoint presentations. This is Dr. Zayira Jordan web accessibility coordinator at Iowa State and this is the topic for this week s

More information

Design Principles: Part 2

Design Principles: Part 2 Liskov Substitution Principle (LSP) Dependency-Inversion Principle (DIP) Interface-Segregation Principle (ISP) Design Principles: Part 2 ENGI 5895: Software Design Andrew Vardy Faculty of Engineering &

More information

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics COMP-202 Unit 1: Introduction Assignment 1 Assignment 1 posted on WebCt and course website. It is due September 22nd

More information

Hi! My name is Peter Rushforth. I work for Natural Resources Canada, in the Canada Centre for Mapping and Earth Observation.

Hi! My name is Peter Rushforth. I work for Natural Resources Canada, in the Canada Centre for Mapping and Earth Observation. Hi! My name is Peter Rushforth. I work for Natural Resources Canada, in the Canada Centre for Mapping and Earth Observation. We are the group historically responsible for, among other things, creating

More information

Managing CSS Projects with ITCSS. DaFED Novi Sad, November 2014

Managing CSS Projects with ITCSS. DaFED Novi Sad, November 2014 Hello, Serbia! Managing CSS Projects with ITCSS DaFED Novi Sad, November 2014 #itcss Harry Roberts Consultant Front-end Architect. Products, long-running projects, large teams, big codebases. @csswizardry

More information

Web Host. Choosing a. for Your WordPress Site. What is web hosting, and why do you need it?

Web Host. Choosing a. for Your WordPress Site. What is web hosting, and why do you need it? You ve registered a domain name, and you know you want to use WordPress to create your online presence. The next question is, where are you going to build your website? This report will help you choose

More information

Creating Web Pages with SeaMonkey Composer

Creating Web Pages with SeaMonkey Composer 1 of 26 6/13/2011 11:26 PM Creating Web Pages with SeaMonkey Composer SeaMonkey Composer lets you create your own web pages and publish them on the web. You don't have to know HTML to use Composer; it

More information

Case study on PhoneGap / Apache Cordova

Case study on PhoneGap / Apache Cordova Chapter 1 Case study on PhoneGap / Apache Cordova 1.1 Introduction to PhoneGap / Apache Cordova PhoneGap is a free and open source framework that allows you to create mobile applications in a cross platform

More information

tech-talk HTML Marketing March 30, 2010

tech-talk HTML  Marketing March 30, 2010 tech-talk March 30, 2010 Introduction Andrew Harris - Application Services, Web Team aharris@unimelb.edu.au Welcome to our third 'Tech talk', today we're talking about HTML Email Marketing. http://www.flickr.com/photos/grumbler/532250527/

More information

Princípy tvorby softvéru Dizajnové princípy

Princípy tvorby softvéru Dizajnové princípy Robert Luko ka lukotka@dcs.fmph.uniba.sk www.dcs.fmph.uniba.sk/~lukotka M-255 Analýza a dizajn - úrovne Architektúra Vysokoúrov ový analytický model... Nízkoúrov ový analytický model Implementa ný model

More information

Rapid Software Testing Guide to Making Good Bug Reports

Rapid Software Testing Guide to Making Good Bug Reports Rapid Software Testing Guide to Making Good Bug Reports By James Bach, Satisfice, Inc. v.1.0 Bug reporting is a very important part of testing. The bug report, whether oral or written, is the single most

More information

Read & Download (PDF Kindle) Java: An Introduction To Problem Solving And Programming (4th Edition)

Read & Download (PDF Kindle) Java: An Introduction To Problem Solving And Programming (4th Edition) Read & Download (PDF Kindle) Java: An Introduction To Problem Solving And Programming (4th Edition) In a conversational style, best-selling author Walter Savitch teaches programmers problem solving and

More information

GRASP Design Patterns A.A. 2018/2019

GRASP Design Patterns A.A. 2018/2019 GRASP Design Patterns A.A. 2018/2019 Objectives Introducing design patterns Introduzione ai design pattern Designing objects and responsibilities GRASP design patterns A long corridor A passage room Does

More information

08. DESIGN PRINCIPLES. Originality is Overrated PRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT

08. DESIGN PRINCIPLES. Originality is Overrated PRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT PRINCIPLES OF SOFTWARE BIM209DESIGN AND DEVELOPMENT 08. DESIGN PRINCIPLES Originality is Overrated it s not about doing it your way this week is all about doing it the smarter, faster way. Design principle

More information

Client Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module

Client Code - the code that uses the classes under discussion. Coupling - code in one module depends on code in another module Basic Class Design Goal of OOP: Reduce complexity of software development by keeping details, and especially changes to details, from spreading throughout the entire program. Actually, the same goal as

More information

mismatch between what is maybe possible today and what is going on in many of today's IDEs.

mismatch between what is maybe possible today and what is going on in many of today's IDEs. What will happen if we do very, very small and lightweight tools instead of heavyweight, integrated big IDEs? Lecturer: Martin Lippert, VMware and Eclispe tooling expert LIPPERT: Welcome, everybody, to

More information

Object-Oriented Design I - SOLID

Object-Oriented Design I - SOLID Object-Oriented Design I - SOLID SWEN-261 Introduction to Software Engineering Department of Software Engineering Rochester Institute of Technology Single responsibility Open/close Liskov substitution

More information

Frontend guide. Everything you need to know about HTML, CSS, JavaScript and DOM. Dejan V Čančarević

Frontend guide. Everything you need to know about HTML, CSS, JavaScript and DOM. Dejan V Čančarević Frontend guide Everything you need to know about HTML, CSS, JavaScript and DOM Dejan V Čančarević Today frontend is treated as a separate part of Web development and therefore frontend developer jobs are

More information

Scheduling Mar. 19, 2018

Scheduling Mar. 19, 2018 15-410...Everything old is new again... Scheduling Mar. 19, 2018 Dave Eckhardt Brian Railing Roger Dannenberg 1 Outline Chapter 5 (or Chapter 7): Scheduling Scheduling-people/textbook terminology note

More information

CS61A Notes Week 6: Scheme1, Data Directed Programming You Are Scheme and don t let anyone tell you otherwise

CS61A Notes Week 6: Scheme1, Data Directed Programming You Are Scheme and don t let anyone tell you otherwise CS61A Notes Week 6: Scheme1, Data Directed Programming You Are Scheme and don t let anyone tell you otherwise If you re not already crazy about Scheme (and I m sure you are), then here s something to get

More information

Tutorial 1 Answers. Question 1

Tutorial 1 Answers. Question 1 Tutorial 1 Answers Question 1 Complexity Software in it what is has to do, is often essentially complex. We can think of software which is accidentally complex such as a large scale e-commerce system (simple

More information

Software Engineering /48

Software Engineering /48 Software Engineering 1 /48 Topics 1. The Compilation Process and You 2. Polymorphism and Composition 3. Small Functions 4. Comments 2 /48 The Compilation Process and You 3 / 48 1. Intro - How do you turn

More information

Epub Books Programming PHP

Epub Books Programming PHP Epub Books Programming PHP This updated edition teaches everything you need to know to create effective web applications with the latest features in PHP 5.x. Youâ ll start with the big picture and then

More information

Welcome to Design Patterns! For syllabus, course specifics, assignments, etc., please see Canvas

Welcome to Design Patterns! For syllabus, course specifics, assignments, etc., please see Canvas Welcome to Design Patterns! For syllabus, course specifics, assignments, etc., please see Canvas What is this class about? While this class is called Design Patterns, there are many other items of critical

More information

Seema Sirpal Delhi University Computer Centre

Seema Sirpal Delhi University Computer Centre Getting Started on HTML & Web page Design Seema Sirpal Delhi University Computer Centre How to plan a web development project draft a design document convert text to HTML use Frontpage to create web pages

More information

Introduction. Thank you for picking up Silverlight 1.0 Unleashed! IN THIS CHAPTER. . Who Should Read This Book?. Software Requirements

Introduction. Thank you for picking up Silverlight 1.0 Unleashed! IN THIS CHAPTER. . Who Should Read This Book?. Software Requirements Nathan_Intro_Iss 9/21/07 2:01 AM Page 1 IN THIS CHAPTER. Who Should Read This Book?. Software Requirements Thank you for picking up Silverlight 1.0 Unleashed! Silverlight is changing the way many people

More information

02291: System Integration

02291: System Integration 02291: System Integration Hubert Baumeister hub@imm.dtu.dk Spring 2011 Contents 1 Recap 1 2 More UML Diagrams 2 2.1 Object Diagrams........................................... 2 2.2 Communication Diagrams......................................

More information

Programming Style. Quick Look. Features of an Effective Style. Naming Conventions

Programming Style. Quick Look. Features of an Effective Style. Naming Conventions Programming Style Quick Look An effective programming style helps you write code that is easier to understand, debug, maintain, and port from system to system. This article discusses the general features

More information

SEO According to Google

SEO According to Google SEO According to Google An On-Page Optimization Presentation By Rachel Halfhill Lead Copywriter at CDI Agenda Overview Keywords Page Titles URLs Descriptions Heading Tags Anchor Text Alt Text Resources

More information

We will talk about Alt-Tab from the usability perspective. Think about: - Is it learnable? - Is it efficient? - What about errors and safety?

We will talk about Alt-Tab from the usability perspective. Think about: - Is it learnable? - Is it efficient? - What about errors and safety? 1 This lecture s candidate for the Hall of Fame & Shame is the Alt-Tab window switching interface in Microsoft Windows. This interface has been copied by a number of desktop systems, including KDE, Gnome,

More information

Handy guide for effective EPFL PowerPoint presentations

Handy guide for effective EPFL PowerPoint presentations Handy guide for effective EPFL PowerPoint presentations Hi, I m Pascal. I ll be giving you helpful tips throughout this guide. 1 My first tip is to use a 16:9 format for your slides, not 4:3. 16:9 is more

More information

Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi.

Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi. Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 18 Tries Today we are going to be talking about another data

More information

SOME TYPES AND USES OF DATA MODELS

SOME TYPES AND USES OF DATA MODELS 3 SOME TYPES AND USES OF DATA MODELS CHAPTER OUTLINE 3.1 Different Types of Data Models 23 3.1.1 Physical Data Model 24 3.1.2 Logical Data Model 24 3.1.3 Conceptual Data Model 25 3.1.4 Canonical Data Model

More information

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics COMP-202 Unit 1: Introduction Announcements Did you miss the first lecture? Come talk to me after class. If you want

More information

Module 10 Inheritance, Virtual Functions, and Polymorphism

Module 10 Inheritance, Virtual Functions, and Polymorphism Module 10 Inheritance, Virtual Functions, and Polymorphism Table of Contents CRITICAL SKILL 10.1: Inheritance Fundamentals... 2 CRITICAL SKILL 10.2: Base Class Access Control... 7 CRITICAL SKILL 10.3:

More information

Assignment III: Graphing Calculator

Assignment III: Graphing Calculator Assignment III: Graphing Calculator Objective The goal of this assignment is to reuse your CalculatorBrain and CalculatorViewController objects to build a Graphing Calculator. By doing this, you will gain

More information

Setting the stage... Key Design Issues. Main purpose - Manage software system complexity by improving software quality factors

Setting the stage... Key Design Issues. Main purpose - Manage software system complexity by improving software quality factors Setting the stage... Dr. Radu Marinescu 1 1946 Key Design Issues Main purpose - Manage software system complexity by...... improving software quality factors... facilitating systematic reuse Dr. Radu Marinescu

More information

Exsys RuleBook Selector Tutorial. Copyright 2004 EXSYS Inc. All right reserved. Printed in the United States of America.

Exsys RuleBook Selector Tutorial. Copyright 2004 EXSYS Inc. All right reserved. Printed in the United States of America. Exsys RuleBook Selector Tutorial Copyright 2004 EXSYS Inc. All right reserved. Printed in the United States of America. This documentation, as well as the software described in it, is furnished under license

More information

Interaction Design

Interaction Design Interaction Design 9-12-2012 Overview of Interaction Design Understanding the Problem Space Conceptualizing the Design Space HW#2 posted, due Wednesday 9/19 Activity#3 due Monday, 9/24/12 Select your presentation

More information

Human-Computer Interaction IS4300

Human-Computer Interaction IS4300 Human-Computer Interaction IS4300 1 Quiz 3 1 I5 due next class Your mission in this exercise is to implement a very simple Java painting applet. The applet must support the following functions: Draw curves,

More information

(Refer Slide Time: 00:02:02)

(Refer Slide Time: 00:02:02) Computer Graphics Prof. Sukhendu Das Dept. of Computer Science and Engineering Indian Institute of Technology, Madras Lecture - 20 Clipping: Lines and Polygons Hello and welcome everybody to the lecture

More information

5. Application Layer. Introduction

5. Application Layer. Introduction Book Preview This is a sample chapter of Professional PHP - Building maintainable and secure applications. The book starts with a few theory chapters and after that it is structured as a tutorial. The

More information