Separation of Concerns
|
|
- Cecil Thomas
- 6 years ago
- Views:
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
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 informationIntroduction 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 informationARCHITECTING 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 informationBruno 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 informationPractice 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 informationVisual 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 informationIntro 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 information1 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 informationa 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 informationThe 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 informationApplication 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 informationIntro. 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 informationCYBER 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 informationLearning 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 informationOODA 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 informationObject-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 informationExam 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 informationORB 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 informationWho 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 informationHow 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 informationSimple 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 information1: 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 informationIntroduction 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 informationSass. 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 informationPoulsen, 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 informationEverything 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 informationApplying 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 informationCHAPTER 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 informationPrinciples 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 informationNonprogrammers 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 informationSOLID 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 informationPrinciples 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 informationIntroduction 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 informationProcess 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 informationSoftware 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 informationPlan. 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 informationCOURSE 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 informationLessons 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 informationHTML/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 informationInteraction 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 informationEADS 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 In the world of information technology (IT), hacking is the manipulation of the normal behavior of network connections, systems and computer
More informationMoving 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 informationPart 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 informationExpanding 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 informationDesign 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 informationCAS 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 informationOriginality 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 informationOutline. 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 informationUser-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 informationCognitive 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 informationLecture: 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 informationCSC 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 informationOPEN 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 information6. 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 informationWeb 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 informationIngegneria 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 informationChapter 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 informationGood 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 informationDesign 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 informationCONTENTS: 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 informationHi! 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 informationManaging 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 informationWeb 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 informationCreating 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 informationCase 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 informationtech-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 informationPrincí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 informationRapid 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 informationRead & 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 informationGRASP 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 information08. 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 informationClient 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 informationmismatch 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 informationObject-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 informationFrontend 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 informationScheduling 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 informationCS61A 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 informationTutorial 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 informationSoftware 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 informationEpub 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 informationWelcome 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 informationSeema 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 informationIntroduction. 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 information02291: 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 informationProgramming 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 informationSEO 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 informationWe 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 informationHandy 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 informationData 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 informationSOME 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 informationCONTENTS: 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 informationModule 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 informationAssignment 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 informationSetting 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 informationExsys 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 informationInteraction 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 informationHuman-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)
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 information5. 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