Software Development. Craft or Engineering?



Similar documents
Agile processes. Extreme Programming, an agile software development process. Extreme Programming. Risk: The Basic Problem

Extreme Programming, an agile software development process

Agile processes. Extreme Programming, an agile software development process

Extreme Programming, an agile software development process

Xtreme RUP. Ne t BJECTIVES. Lightening Up the Rational Unified Process. 2/9/2001 Copyright 2001 Net Objectives 1. Agenda

Agile and Secure: Can We Be Both?

Web Application Development Process

Continuous Integration, Delivery and Deployment. Eero Laukkanen T Software Testing and Quality Assurance P

Configurable Workflow Management

EXTREME PROGRAMMING AGILE METHOD USED IN PROJECT MANAGEMENT

Deep Agile Blending Scrum and Extreme Programming. Jeff Sutherland Ron Jeffries

Extreme Programming and Embedded Software Development

XP and TDD. Extreme Programming and Test Driven Development. Bertrand Meyer, Manuel Oriol Andreas Leitner. Chair of Software Engineering ETH Zurich

Extreme Programming. Sergey Konovalov and Stefan Misslinger. May 23, 2006

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

A Discipline for Software Engineering

Topics covered. Agile methods Plan-driven and agile development Extreme programming Agile project management Scaling agile methods

Test Driven Development Part III: Continuous Integration Venkat Subramaniam

Human Aspects of Software Engineering: The Case of Extreme Programming

The National Board for Professional Teaching Standards (NBPTS) was founded in 1987 in order to achieve the following mission:

Technical Writing - Software Engineering Life Cycle Review

Agile and Enterprise Architecture

Project Management. Software Projects vs. Engineering Projects

Preface Agile Testing Review

An Introduction to Extreme Programming

"Bezpieczny Projekt"

The traditional project management uses conventional methods in software project management process.


2. Analysis, Design and Implementation

Should you allow your employees to bring their own technology to work?

How to Pursue a Career in Information Technology A QUICK REFERENCE GUIDE

Agile with XP and Scrum

USAGE OF KANBAN METHODOLOGY AT SOFTWARE DEVELOPMENT TEAMS

06. Create a feedback loop. 01. Create a plan. 02. Improve People skills. 07. Get a tool that supports the workflow. 03. Keep your promises

Why Counting Software Installations is a Waste of Time

How Merchant Services Can Restore Non-Interest Revenue

EXECUTIVE REPORT. 4 Critical Steps Financial Firms Must Take for IT Uptime, Security, and Connectivity

2. Analysis, Design and Implementation

Introduction to Agile Software Development

Agile Development for Application Security Managers

Advanced Test-Driven Development

Software development. Outline. Outline. Version control. Version control. Several users work on a same project. Collaborative software development

How to Obtain the Uptime, Security and Robust Connectivity Financial Services Firms

The future of application outsourcing: making the move from tactical to strategic

Introduction to Agile Software Development. EECS 690 Agile Software Development

White Paper Performance Testing Methodology

Introduction. Motivational Principles. An Introduction to extreme Programming. Jonathan I. Maletic, Ph.D.

Development Techniques. CSE301 University of Sunderland Harry R. Erwin, PhD

Customer Charter. A five star service

The Val Garland School of Make-up PROSPECTUS

White Paper. Are SaaS and Cloud Computing Your Best Bets?

Workshop on Agile Test Strategies and Experiences. Fran O'Hara, Insight Test Services, Ireland

CS4507 Advanced Software Engineering

Agile Development Overview

Launching Extreme Programming at a Process- Intensive Company

XP & Scrum. extreme Programming. XP Roles, cont!d. XP Roles. Functional Tests. project stays on course. about the stories

Web Engineering: Software Engineering for Developing Web Applications

What Can SDN Do for the Enterprise?

Agile for Project and Programme Managers

Management Consulting

Getting to Done The Secret Sauce of High Performing Teams

Your Professional Reputation There is no way to put a price on your professional reputation, its value to you is priceless

Service Definition: Wordpress Content Management System - CMS

AGILE vs. WATERFALL METHODOLOGIES

XP and Design. Paulo Caroli & Sudhindra Rao. ThoughtWorks

Your Software Quality is Our Business. INDEPENDENT VERIFICATION AND VALIDATION (IV&V) WHITE PAPER Prepared by Adnet, Inc.

INSERT COMPANY LOGO HERE

.NET and J2EE Intro to Software Engineering

Selling Windows Azure Projects IT INFRASTRUCTURE

The Convergence of IT Operations Management

Introduction to Software Engineering. 9. Project Management

Interconnection for Financial Services

Reviews on Aralco Retail Systems

cloud Development Strategies - Part 1

Book 3 Cost Estimating in an Agile Development Environment. (early release)

GUIDELINES FOR THE GRADUATE SCHOOL APPLICATION PROCESS

Quality Assurance Software Development Processes

LBSC 690: Information Technology Lecture 12 Software system development and deployment

How To Become A Master In International Communication

Business Value Driven Software Development

Ingegneria del Software Corso di Laurea in Informatica per il Management. Agile software development

Business Solutions Manager Self and contribution to Team. Information Services

4/4/2013. Copyright 2013, Robert Ward

Software Engineering. Introduction. Lecturer: Giuseppe Santucci

Making the hybrid world work for you: Redefining IT operations Frank Casey Group Director, Data Center Solutions & Managed Services

Requirement Gathering for small Projects using Agile Methods

Digital Transformation of the Enterprise for SMAC: Can Scrum help?

software studio software development processes Daniel Jackson

CS435: Introduction to Software Engineering! " Software Engineering: A Practitioner s Approach, 7/e " by Roger S. Pressman

The Future of Networking, and the Past of Protocols

Impact of Source Code Availability on the Economics of Using Third Party Components A White Paper

Implementing Traceability In Agile Software Development

Fall January. February. March. April. May. June & July. August November. December

master of research Digital Health & Care Institute

Test-Driven Development

START TEACHER'S GUIDE

Laboratório de Desenvolvimento de Software

Paper Title: Ubiquitous and Integrated Portfolio management of Federal & State projects

Make the Most of Big Data to Drive Innovation Through Reseach

See what cloud can do for you.

Transcription:

Software Development Craft or Engineering?

Dr. Neil Roodyn Developing software for too long! Founded 5 software companies Teaching and mentoring around the world since 1991 Mission: Increase the value of your Software Business

Aims Review the discipline of software development Examine why software engineering exists Investigate the craftsmanship involved in developing software

Issues in Software Development Why do software projects fail? And the majority of them still do!

Risks Issues in Software Development Slipping deadlines Cancellation System goes out of date Quality Misunderstood business needs

The History of Software Development The Pioneering Era (1955-1965) Machine rooms, development of high order languages, v. few software companies and no packaged software The Stabilizing Era (1965-1980) Big O/S, large demand for programmers, structured programming, standards organisations got serious, a few software vendors emerged The Micro Era (1980-1995) Massive drop in price of computing, GUI becomes prevalent, more tools than ever for development The Internet Era (1996 - Present) Explosion in interconnectivity of computers, software must become internet aware, pace of change increases even more rapidly

Software Methodologies Chaotic 1950 Maths based Code and fix Predictive 1968 Software Engineering monumental methodologies 1990 Rapid Application Development Lightweight Adaptive 1997 extreme Programming Agile

Predictive Emphasis on planning before you build Based on engineering disciplines such as civil or mechanical engineering Predictable schedule that can use people with lower skills Separate design from construction Design the software so that the construction can be straightforward once the planning is done

Planning before you build What does a software plan look like? UML, Object Models, Class Diagrams etc.. Does the design make the coding any easier? Generally not, very hard to validate correctness Cost of design vs. coding Civil engineering design cost is about 10% of total Software engineering design is 50%+ of total cost Construction is 15% of the total cost

So In software: construction is so cheap as to be nearly free all the effort is design, and thus requires creative and talented people Creative processes are not easily planned, and so predictability may well be an impossible target. We should be very wary of the traditional engineering metaphor for building software.

Unpredictable Requirements This project will never succeed the requirements keep changing anonymous developer I have never worked on a project with fixed requirements! From day one to delivery Hardly a surprise that a method fails if it requires fixed requirements

Software Engineering 1968 NATO conference Software crisis Need for high quality, large software applications Primarily for defence departments!

Software Engineering the application of a systematic, disciplined, quantifiable approach to development, operation, and maintenance of software; that is, the application of engineering to software. IEEE

Systems Engineering? These big projects are not purely software based Hardware was often developed specifically for the job Programmers had to wait for the hardware So they start the design process When the hardware is complete the software needs to be available ASAP So the software guys get as much done up front as possible Attempt to make coding automated so: more programmers = more code

Cost of Change Software Engineering Exponential Requirements Analysis Design Implementation Testing Production

Suitable for Large systems involving hardware Mission critical Life support Air craft control Etc Predictable core requirements

Issues Software Engineering Treats all developers as equals Almost as automatons Ignores the pace of change in the business world Believes that more people = more productivity Focuses on the process of development not the actual problems being solved Many developers merely pay lip service to the methods while not actually using them

The world has changed 1968 Software was the cheapest part of the system being developed Now software is often the most expensive part of a system being developed The majority of the software development cost is the people costs Systems need to be developed in weeks (or months) not years

What if? I want a feature rich application On the shelves ASAP I need to beat the competition to market I want to upgrade the application quarterlyyearly I need to change it as my business needs change It needs to be affordable

Adaptive Alternative approaches to the predictive model of software development Understand that the requirements will change Adapt to those changes Focus on people solving problems not processes

Cost of Change Needs to be lower So we can adapt to the changes Time

Craftsmanship Places the craftsman at the centre of the software development Software development is not easy A skilled craftsman is required Just knowing how to program a computer is not the same as being able to develop high quality software

Craftsmen A professional craftsmen Dedicates their working life to getting better at the craft Learns their skills through apprenticeship to a master craftsman Aims for mastery of the craft Teaches others through apprenticeship Builds a reputation based on what they deliver Not what exams they have passed

Working with the customer A Craftsman Works closely with the customer to create what is required Discusses the implications with the customer Has a vested interest in ensure the customer is happy Reputation is at stake

Software: Easy to Copy In the physical world Craftsmanship is too expensive because each item has to be hand crafted In the digital world The craftsman s work can be easily duplicated

Accountability A huge issue in my experience Developers hide behind documents Refuse to be accountable for their work Craftsmanship resolves this A craftsman is proud of their work Signs their name on their work

Building a tiered culture Exploit the difference between developers productivity and experience Do I consider myself a master craftsman? I have over 20 years experience solving software problems I have run 5 software companies Been the development director for 3 other companies Does my earning potential reflect this?

What makes a good developer? Portfolio Like any other craft A history of success stories Some failures in the past You need to earn your spurs

Customer chooses Make a decision of quality vs. cost This is not easy to do right now Customers build longer term relationships with craftsmen

Alignment of Interests With engineering the customer is often pitted against the development team We delivered what you wanted You never said you were going to do that! With craftsmanship the interests are aligned The craftsman wants a happy customer Does whatever is required to ensure this

Enjoy work Craftsman pursue their craft from a love of what they do It is more than a job Choose your attitude

Apprenticeship Once you leave school/college you still have everything to learn The best way to learn is from someone who has done it before Encourages good practices to be passed on Instils lifelong learning Not teaching how to program!

What about extreme Programming? It s an engineering discipline? You must have testable requirements Aims for predictable high quality software It s also a craft You must communicate ideas and discuss the system metaphor You work closely with the customer Pair programming works as apprenticeship

XP best of both worlds Agile methods such as XP focus on: The people doing the development The quality of the software developed Customer happiness Lowering cost of change Increasing use of best practices

Bibliography Robert L. Glass - "In the Beginning: Recollections of Software Pioneers" The New Methodology by Martin Fowler Rapid Development: Taming Wild Software Schedules by Steve C McConnell What is Software Design? by Jack W. Reeves extreme Programming Explained by Kent Beck Software Craftsmanship by Pete McBreen Software Engineering: A Practitioner's Approach by Roger S. Pressman The Mythical Man-Month by Fred Brooks