1 Design and Integration: Part 1. 2 What’s a metaphor? Ward Cunningham cites George Lakoff’s book, Metaphors We Live By: Lakoff argues that the assumptions.

Slides:



Advertisements
Similar presentations
Attention (your target market) !. Are you (their problem) ?
Advertisements

Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Why Software.
(nothing to see here). First thing you need to learn is that sysadmin is about people, not technology If youre a sysadmin so you dont have to deal with.
Applying evo to a project An Agile and EVO Workshop Based on the article Measuring Agile Value in Overload 89, by Ryan Shriver, and used with his permission.
Use specific reasons and examples to support your opinion.
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
Agile Planning Dealing with Reality. Reality Basic agile principle – don’t expect static plans to hold, be flexible and expect changes.
Agile Planning. The problem with documentation Argument: “Heavy” documentation too much for most business-style projects.
(c) Andy Berry ( SOA – Benefits and Risks Presentation to ESUG 2005 Conference Andy Berry –
Debugging Introduction to Computing Science and Programming I.
Duality of Patterning  “It is virtually impossible for us to conceptualize time without metaphor” (Lakoff & Johnson, 1999: 139)  “Very little of our.
Finance, Financial Markets, and NPV First Principles.
EXtreme.NET Dr. Neil Roodyn. eXtreme.NET Who is Dr. Neil? MISSION: To increase the value of your Software Business Working with software for way too long.
Finance, Financial Markets, and NPV
CPSC 875 John D. McGregor C20 – Technical Debt. Value-based SE SCS – success-critical stakeholder.
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Maintenance Framework Steve Chenoweth CSSE 375, Rose-Hulman Based on Don Bagert’s 2006 Lecture Ref M 2.
Test Driven Development Derived from Dr. Fawcett’s notes Phil Pratt-Szeliga Fall 2009.
Chapter 9 – Software Evolution and Maintenance
Software Reliability: The “Physics” of “Failure” SJSU ISE 297 Donald Kerns 7/31/00.
From 3 weeks to 30 minutes – a journey through the ups and downs of test automation.
1 KAN’S INTRO AND OVERVIEW MODELS Ch1 & 2 in his book Steve Chenoweth, CSSE.
1 Testing – Part 2 Agile Testing In which we talk about nothing, because having unit tests solves all problems forever. Really. It’s not a subtitle balance.
Test Driven Development An approach to writing better code Jimmy Zimmerman Intel Corporation.
1 Design and Integration: Part 1 Nuggets about Design vs Project Management.
Agile Contracts? AgilePrague 2012 Johannes Brodwall, Principal Architect Steria
BEFORE AGILE METHODS Other Engineering fields development models were used, ie: Waterfall Method: Intensive planning and refactoring before coding is actually.
Copyright (c) 2003 CPTTM 1 Common fears of a software development manager Common fears of a software development manager: –Deadline.
Agile Contracts? SDC 2012 Johannes Brodwall, Principal Architect Steria
1 Conceptual Metaphor Topics in Linguistics © 2007 Juno Lin.
1 SPMH: When things go wrong - And a preview of tomorrow -
Could You Use More Traffic?. If you’re like most marketers, the answer to this question is… YES!
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
1 Extreme Programming Practices The Planning Game Small Releases System Metaphor Simple Design Continuous Testing Refactoring Pair Programming Collective.
Unit 1 – Improving Productivity Instructions ~ 100 words per box.
1 Today’s Plan In Class Exam – Quick Review Thoughts on your Junior Projects, cntd People and Roles on Projects.
The Dealer Welcome! So you’ve located the right car for you and your budget and are now ready to take on the car dealer. Negotiating with a car dealer.
Are We Wasting Our Time?. In 2009, our average Front Line employee received over 40 hours of training. More than half of that training was… unnecessary.
LECTURE 38: REFACTORING CSC 395 – Software Engineering.
1 Planning – Agile Style Highsmith, Ch 7 All kinds of iterations! CSSE579 Session 3 Part 1.
Debugging Strategies from Software Carpentry. Agan's Rules Many people make debugging harder than it needs to be by: Using inadequate tools Not going.
A Practical Guide To Unit Testing John E. Boal TestDrivenDeveloper.com.
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
Extreme Programming (XP) XP is an agile methodology: –aims to be responsive to change Theme running through XP is the importance of communication –amongst.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
1 Design and Integration: Part 3 To prepare for today’s class, visit Cookie Clicker and plan with it for a few minutes:
Extreme Programming Based on and
Lecture 4 – XP and Agile 17/9/15. Plan-driven and agile development Plan-driven development A plan-driven approach to software engineering is based around.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Extreme programming (XP) Variant of agile Takes commonsense practices to extreme levels © 2012 by Václav Rajlich1.
Technical Debt and What to do about it. Kane Mar Certified Scrum Trainer and Coach (CST and CSC) Kane Mar Certified.
Guided Lesson.  In this lesson, you will learn how to modify the line and paragraph spacing in various ways.
The Last Lecture CS 5010 Program Design Paradigms "Bootcamp" Lesson © Mitchell Wand, This work is licensed under a Creative Commons Attribution-NonCommercial.
Computer/Human Interaction Spring 2013 Northeastern University1 Name of Interface Tagline if you have one (80 chars max, including spaces) Team member.
Continuous Improvement. Start Simple and Continually Improve E.g., Gmail Labels 1.
1 Punishment Through Continuous Delivery If it hurts, do it more often…
MAY 19 th 2016 Jovan Poljački
Benjamin Day Get Good at DevOps: Feature Flag Deployments with ASP.NET, WebAPI, & JavaScript.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
1 Testing A little terminology you’re surely familiar with… Black Box White Box Integration Acceptance Regression.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Continuous Delivery and Quality Monitoring 1 iCSC2016, Kamil Henryk Król, CERN Continuous Delivery and Quality Monitoring Kamil Henryk Król CERN Inverted.
Software Development.
Extreme Programming.
What do you need to know about XP?
Get Good at DevOps: Feature Flag Deployments with ASP
Software Testing and Maintenance Maintenance and Evolution Overview
Agile Development – a new way of software development?
Product Development & Planning
Presentation transcript:

1 Design and Integration: Part 1

2 What’s a metaphor? Ward Cunningham cites George Lakoff’s book, Metaphors We Live By: Lakoff argues that the assumptions we make in normal discourse are heavily influenced by metaphors embedded in our language. For example, “arguments are war,” because we talk about arguing like: – He won the argument. – Your claims are indefensible. – He shot down all my arguments. – His criticisms were right on target. – If you use that strategy, he'll wipe you out. If we used different ways of talking, we’d think about it differently. Cunningham borrowed this idea to invent “Technical Debt” as a framework to think about progressive, agile software development. George Lakoff

3 Another Lakoff metaphor… “Time is money”: You're wasting my time. This gadget will save you hours. I don't have the time to give you. How do you spend your time these days? That flat tire cost me an hour. I've invested a lot of time in him/her. 1 don't have enough time to spare for that.You're running out of time. You need to budget your time. Put aside aside some time for ping pong. Is that worth your while? Do you have much time left? He's living on I borrowed time. You don't use your time, profitably. I lost a lot of time when I got sick. Thank you for your time. On projects, is this metaphor entirely accurate?

4 Technical Debt An intentional metaphor! It’s “shortcuts” – – All the stuff you don’t do now, Intentionally or unintentionally, – Which will add time and cost to future development Because of being deferred. – Like having to redesign or refactor later on. – Like not putting “test first” in place at the start. – Like not taking time to share design knowledge. It’s not the cost of delayed features, per se. It’s not the cost of doing “bad code,” because Cunningham doesn’t approve of that under any circumstances! – Seconded by Bob Martin – See technical-debt Ward Cunningham

5 The exact situation The scenario Ward Cunningham describes in the video: When we started, we didn’t know that much about the domain. As we delivered iterations, we discovered some of our design decisions were wrong. – This was the technical debt. – Things they had to do later required redesign. If we couldn’t fix them right away, we paid interest on this technical debt.

6 Martin Fowler’s Quadrants Martin Fowler

7 Technical Debt – A Useful Metaphor What causes technical debt? What is the interest on technical debt? (hint: it’s not refactoring itself – that’s something that reduces technical debt) Why do you want to take on technical debt? Why do some groups refuse to take on technical debt?

8 YAGNI and technical debt Typical scenario: Sprint 1 Sprint 5 Sprint 8 “Allow for touch pads? You aren’t going to need it!” “Uh oh, we ARE going to need it! Let’s work around it for now…” “Time to refactor – we’ve gotta fix it!” Wrong - Incur the technical debt Pay interest on the technical debt Pay back the technical debt

9 Technical Debt and Cost of Change Unlike Cunningham, Highsmith sees technical debt as increasing over time. Highsmith is talking about long- lived products. The product becomes more “fragile” or “brittle” over time, even using agile methods. – Why? Highsmith’s Figure 9-7, p 216 This means your responsiveness to customers!

10 Design approach makes a difference! Main causes of technical debt in a project with a lot of up- front design: – You think you can get clear requirements from the client without showing them a progressive product. – The complexity inevitably implies embedded errors. – Delayed exposure to users hides these errors. Main causes of technical debt in project with simple design: – Your thinking isn’t mature when you start. – Need to refine everything as you learn more. – Could be way off, too. Pay “interest” on what was wrong. Avoid this with Highsmith’s approach – do an overall design before first sprint.

11 Continuous Integration What is the corresponding old-school practice for continuous integration? Why is testing (ideally automated testing) so important in continuous integration? When does continuous integration fail?

12 How would you integrate this? --We’ll do tomorrow Imagine you’re working with a company that’s building a deployment process. You’ve got several “services” each of which maintains content. The deployment consists of 3 steps: 1.Prepare 2.Deploy 3.Rollback (maybe) Managed by a “Deployment Manager” (DM) service. Both the services and the DM are under development. The final deployment can’t be tested unless every service has correctly deployed. Say each service and the DM are developed by a different person. How do you handle integration? Say each service and the DM are developed by a different team. How would you handle integration?

13 Build repeatability Crucial for continuous integration – Requires that multiple people know how to build, and – You can avoid subtle bugs Can you “build any version” as you come out with new ones? – E.g., existing features customers are using How to patch these? They used an old version of the operating system

14 Related to continuous integration Continuous delivery Harder Typical desired scenario – Code – build – test today – Deliver tonight Gives you a continuous flow of features to your customers Works a lot better with SOA’s

15 Opportunistic Refactoring What do you refactor your code to do?  Rule 1: Enable whatever you know best comes next!  Rule 2: Make your code easy to use: Reduce duplication Be more explanatory (note: agile equivalent of documentation here) Improve the “smell” Improve the design is of course the goal, but this can be a tricky business We’ll have a full look at refactoring in CSSE 375…