Agile Software Development

Slides:



Advertisements
Similar presentations
Note: Lists provided by the Conference Board of Canada
Advertisements

Agile Software Development Alistair Cockburn Addison Wesley.
ICT IGCSE Expert Systems.
Introduction to Research Methodology
Research Methodology Class. Contents: Concepts of research The need for research Types of research Steps in conducting research.
SE/Agile1 Agile Software Development Alistair Cockburn Addison Wesley.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Agile Software Development Alistair Cockburn Addison Wesley.
IT Job Roles Task 20. Software Engineer Job Description Software engineers are responsible for creating and maintaining software of various different.
Profile and a quick introduction Software Engineering: ) هندسة البرمجيات (in Arabic: is the branch of computer science Designed to develop a set rules.
IT Job Roles & Responsibilities Shannon Ciriaco Unit 2:
MNP1163 (Software Construction).  SDLC and Construction Models  Construction Planning  Construction Measurement.
©Alistair Cockburn 2010 What Makes Agile Work: The New Software Engineering Getting Past “Wimpy” Agile Dr. Alistair Cockburn
Software Design and Development Development Methodoligies Computing Science.
© 2010 Alistair Cockburn Designing in Teams Dr. Alistair Cockburn
 System Requirement Specification and System Planning.
Slide 1 ©Alistair Cockburn 2008 Alistair Cockburn Effective Software Development in the 21st Century: The New Face Of Software.
Manufacturing systems Brian Russell. Exam expectations Issues associated with Manufacturing are regularly tested in the written paper. Questions often.
Research Design
Assessment Early Years Foundation Stage. Assessment  On-going throughout the year  Evidence of independent application of skills and knowledge  May.
WHAT IS THE NATURE OF SCIENCE?
Embedded Systems Software Engineering
Human Computer Interaction Lecture 21 User Support
Agile Software Development
Business Research Methods William G. Zikmund
You and the World of Work
Algorithms and Problem Solving
Agile Software Development
VALIDITY by Barli Tambunan/
Design Process You already know the Scientific Method process. Today we are going to learn about the process engineers use when inventing new products.
Chapter 4: Design and Problem Solving
The Systems Engineering Context
Complexity Time: 2 Hours.
Methodologies By Akinola Soyinka.
Hard-Agile Effective Software Development in the 21st Century
ASSESSMENT OF STUDENT LEARNING
Knowledge Basis for Design Steve Frezza, Ph. D., C.S.D.P.
Employability Skills Unit introduction Ainsley Smith
Session 8 Exam techniques
Teaching with Instructional Software
Tools of Software Development
Unit# 9: Computer Program Development
Analysis and Understanding
Engineering Overview Introduction to Engineering Design
Introduction to Systems Analysis and Design
Agile Process: Overview
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Designing in Teams Dr. Alistair Cockburn
Engineering Overview Introduction to Engineering Design
Teaching the Next Generation Software Engineering
CHAPTER 10 METHODOLOGIES FOR CUSTOM SOFTWARE DEVELOPMENT
Design Process You already know the Scientific Method process. Today we are going to learn about the process engineers use when inventing new products.
Fields of Engineering Principles of EngineeringTM
Algorithms and Problem Solving
Transdisciplinary Skills for Self-management Skills
Engineering Overview.
Engineering Overview.
The Basics of Information Systems
August 22 Bellringer What is engineering?.
YOUR FUTURE AND INFORMATION TECHNOLOGY
Agile Software Development
Extreme Programming.
EDTE 408 Principles of Teaching
Must Computer Systems Have Users ?
Engineering Overview.
Agile Software Development
Lecture 1: General Communication Skills
The Basics of Information Systems
What is a System? A system is a collection of interrelated components that work together to perform a specific task.
The Software Development Cycle
Presentation transcript:

Agile Software Development Alistair Cockburn Addison Wesley SE/Agile

Three Levels of Learning Learning new skills Following: “one procedure that works”, “at least this thing works” Detaching:”when does it break down?” “learn limits of procedure”, “adapt it”, “when is it appropriate?” Survey paper. Fluent:”irrelevant whether following a particular technique”, ”knowledge has become integrated”. SE/Agile

The Three Levels and Methodology Methodology: a series of related methods and techniques (Miriam-Webster) Level 1: processes, techniques and standards in detail. Detailed templates in RUP servel level 1 audience. SE/Agile

Three Levels of Methodology Level 2/3: The Pragmatic Programmer: identifies techniques that a practitioner uses. A useful library of ideas but the beginner finds it lacking specific rules. Avoid level mixup! It confuses. SE/Agile

Shu-Ha-Ri Three levels are known in other skill areas: Aikido (self defense technique) Shu: learn. Build technical foundation for the art. Single instructor. Ha: detach. Understand meaning and purpose; not just repetitive practice. Ri: transcend. Practitioner; original thoughts SE/Agile

A Cooperative Game of Invention and Communication A fruitful way to think about software development. Games used by mathematicians and corporate strategists. Kinds of games: zero-sum, positional, competitive, cooperative, finite, … SE/Agile

Software Development Group game Non-zero-sum: multiple winners and losers. Cooperative Goal-seeking Finite SE/Agile

Infinite Games Infinite games: organizations, corporations and countries, a person’s profession. Do well in one game to be well positioned for the next one. SE/Agile

Software and Rock Climbing Best comparison partner Cooperative and goal seeking How well they climbed together How much they enjoyed themselves Reach the top? Load bearing Climbers must support their weight. Software must run. SE/Agile

Software and Rock Climbing Team Individuals with talent Skill sensitive Training Tools Resource-limited: before nightfall or the weather changes. SE/Agile

Software and Rock Climbing Plan Improvised SE/Agile

A Game of Invention and Communication Software development: group game which is goal seeking, finite and cooperative Team: sponsor, manager, usage specialists, designers, testers and writers Next game: maintenance, build an entirely different system SE/Agile

Cooperative Game of Invention and Communication Measure of quality as a team: how well they cooperate and communicate during game. What are the moves of the game: There is nothing in the game but people’s ideas and the communication of those ideas to their colleages (including the sponsor) and to the computer. SE/Agile

Emotions, wishes and thoughts The task facing the developers: They are working on a problem they don’t fully understand and that lives in emotions, wishes and thoughts and that changes as they proceed. They need to understand. Problem space. Imagine some mechanism in a viable technology space. Express in an executable language which lacks many features of expression to a system that is unforgiving of mistakes. SE/Agile

What is software development? Software Development is a resource-limited) cooperative game of invention and communication. The primary goal of the game is to deliver useful, working software. The secondary goal of the game is to set up for the next game. The next game may be to alter or replace the system or to create a neighboring system. Not many people have articulated this before SE/Agile

Software and Engineering Considering software development as a game with moves is profitable. Gives us a way to make meaningful decisions on a project. In contrast: speaking of software development as engineering or model building does not help. SE/Agile

Engineering People mostly use engineering to create a sense of guilt for not having done enough of something, without being clear of what that something is. Dictionary: The application of science and mathematics by which the properties of matter and the sources of energy in nature are made useful to man (Webster’s Dic.). SE/Agile

What is “doing engineering” In my experience: involves creating a trade-off solution in the face of conflicting demands. Also applies to software development. SE/Agile

Confusing act and outcome Outcome: The factory, which is run while specific people watch carefully for variations in quantity and quality of the items being manufactured. Act: ill-defined creative process the industrial engineer goes through to invent the manufacturing plant. SE/Agile

More like Engineering? When people say: “Make software development more like engineering” they often mean, “Make it more like running a plant, with statistical quality control”. But: running the plant is not the act of doing engineering. SE/Agile

Look up previous solutions The other part of “doing engineering” Civil engineers are not supposed to invent new structures. Take soil samples and use the code books to look for the simplest structure that handles the required load over the given distance building on the soil at hand. Centuries of tabulation of known solutions SE/Agile

Fits marginally This only fits marginally the current state of software development We are still in the stage where there is competition between designs. Technologies are changing fast that few code books exist Today there are more variations between systems than there are commonalities. SE/Agile

Return Return to consider engineering as thinking and making trade-offs. SE/Agile

Software and Model Building Ivar Jacobson: “software development is model building” Leads to inappropriate project decisions SE/Agile

Interesting part not in models If software development were model building, then the valid measure of the quality of the software or of the development process would be the quality of the models (fidelity, completeness) SE/Agile

But successful project teams say The interesting part of what we want to express doesn’t get captured in those models. The interesting part is what we say to each other while drawing on the board. We don’t have time to create fancy or complete models Paying attention to the models interfered with developing the software SE/Agile

Sufficiency The work products of the team should be measured for sufficiency with respect to communicating with the target group. It does not matter if incomplete, incorrect syntax, … if they communicate sufficiently to the recipients. SE/Agile

Modeling as team communication Can be too much or too little. How much modeling to do? Subject of this book. SE/Agile

Programmers as Communications Specialists Game of communication: different light on programmers … Stereotyped as noncommunicative individuals who like to sit in darkened rooms High acceptance of programming in pairs … Programmers thought they would not like it but they like it! (Extreme Programming) SE/Agile

Game of invention So far not as a game of communication Interest of programmers to discuss programming matters gets in the way of them discussing business matters with sponsors, users and business experts. SE/Agile

Universities Can reverse the general characteristics by creating software development curricula that contain more communication-intensive courses Attracts different students (University of Aalborg, Denmark). SE/Agile

Gaming Faster We should not expect orders of magnitude improvement in program production. As much as programming languages may improve, programminvg will still be limited by our ability to think through the problem and the solution. SE/Agile

Analogy Two other fields of thought expression Writing novels Writing laws: Lawyers won’t get exponentially faster at creating contracts and laws! SE/Agile

Diminishing Returns Because a software development project is resource limited, spending extra to make an intermediate work product better than it needs to be for its purpose is wasteful. SE/Agile

What is software development? Software Development is a resource-limited) cooperative game of invention and communication. The primary goal of the game is to deliver useful, working software. The secondary goal of the game is to set up for the next game. The next game may be to alter or replace the system or to create a neighboring system. Not many people have articulated this before SE/Agile

Peter Naur Programming as Theory Building From Computing: A Human Activity (1992, ACM Press) SE/Agile

What goes on in software development? Intro. Most accurate account Quality is related to the match between the theory of the problem and the theory of the solution. The designer’s job is not to pass along the design but the theories that drive the design. SE/Agile

What is programming Should be regarded as an activity by which the programmers form or achieve a certain kind of insight, a theory, of the matters at hand. Not as a production of a program and other texts. SE/Agile

Programming and the Programmer’s Knowledge Programming = the whole activity of design and implementation Programming = building up knowledge What kind of knowledge? A theory: a person who has or posses a theory knows how to do certain things and can support the actual doing with explanations, justifications and answers to queries. SE/Agile

Theory transcends documentation in at least 3 essential ways How are affairs of the world mapped into the program text? For any aspect of the world the programmer can state its manner of mapping into the program text. [AOSD] Can support the program text with some justification. Is able to respond constructively to any demand for a modification. Similarity of new demand to similarities already in the system. SE/Agile

Problems and Costs of Program Modifications Cost savings by modifying existing program rather starting from scratch. Cheaper? Not supported by other complicated man-made constructions: bridges, buildings, etc. Often demolish and rebuild is most economical. Program modification is just text editing? SE/Agile

Program flexibility Build into the program operation facilities that are not immediately demanded. May be expensive. AOSD: extend program by addition not modification. Works best if program is very systematically organized (easier to write pointcuts). SE/Agile

Similarity Similarity: Requirements for existing solution Requirements for new demands To see the similarities we need to understand the “theory” behind the existing solution. Person having the theory must already be prepared to respond to questions that give rise to program modifications (theory stays the same). SE/Agile

Decay Decay of program text if people are making modifications without understanding theory behind the program. We want theory conforming modifications to the program text. Otherwise we get unintegrated patches. SE/Agile

Life cycle of a program Birth: building of theory. Life: programmer team possessing theory remains in active control of the program. Death: programmer team is dissolved. Revival: rebuilding of its theory by a new programmer team. New programmers need to work in close contact with programmers who have theory. Start from scratch? SE/Agile

Method and theory building Set of work rules Which notations/languages Documents to produce Theory cannot be expressed No right method Contradiction? SE/Agile

Software Development Should be based on scientific manners? Are scientific methods helpful to scientists? Debatable. Not contradicted by such works as Polya’s on problem solving (How to solve it and Patterns of Plausible Inference). Does not present a method on how to proceed. A collection of suggestions aiming at stimulating the mental activity of the problem solver. Highly relevant to programming. SE/Agile

Dismissal of method Have methods been successful? Controlled experiments would be very expensive. AOSD Is it a method? Yes, e.g. combined with Extreme Programming. Do we need a controlled experiment? No! SE/Agile