Non-Technical Issues in Software Development

Similar documents
Software Development Life Cycle (SDLC)

INTERNATIONAL JOURNAL OF ADVANCES IN COMPUTING AND INFORMATION TECHNOLOGY An International online open access peer reviewed journal

A Capability Maturity Model (CMM)

6. Software Lifecycle Models. A software lifecycle model is a standardised format for planning organising, and running a new development project.

SE464/CS446/ECE452 Software Life-Cycle and Process Models. Instructor: Krzysztof Czarnecki

Lifecycle Models: Waterfall / Spiral / EVO

Software Life Cycle Processes

Software Engineering. Objectives. Designing, building and maintaining large software systems

A Comparison between Five Models of Software Engineering

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Software Life Cycle. Main issues: Discussion of different life cycle models Maintenance or evolution

Life Cycle Models. V. Paúl Pauca. CSC Fall Department of Computer Science Wake Forest University. Object Oriented Software Engineering

Outline. The Spiral Model of Software Development and Enhancement. A Risk-Driven Approach. Software Process Model. Code & Fix

Software Process for QA

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Software Development Processes. Software Life-Cycle Models

SOFTWARE PROCESS MODELS

PROCESS OF MOVING FROM WATERFALL TO AGILE PROJECT MANAGEMENT MODEL

Software Development Process Models and their Impacts on Requirements Engineering Organizational Requirements Engineering

Software Development Process

Software Development Processes. Software Life-Cycle Models. Process Models in Other Fields. CIS 422/522 Spring

In the IEEE Standard Glossary of Software Engineering Terminology the Software Life Cycle is:

Software Development Process Models

(Refer Slide Time: 01:52)

Software Processes. The software process. Generic software process models. Waterfall model. Waterfall model phases

Software Development Life Cycle Models - Process Models. Week 2, Session 1

WHY THE WATERFALL MODEL DOESN T WORK

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Introduction to Agile Software Development

Life-Cycle Model. Software Life-Cycle Models. Software Development in Theory. Software Development in Practice

Software Development Life Cycle

Software Processes. Coherent sets of activities for specifying, designing, implementing and testing software systems

An Assessment between Software Development Life Cycle Models of Software Engineering

ASSESSMENT OF SOFTWARE PROCESS MODELS

Software Process. Process: A sequence of activities, subject to constraints on resources, that produce an intended output of some kind.

Agile Projects 7. Agile Project Management 21

CSE 435 Software Engineering. Sept 16, 2015

And the Models Are System/Software Development Life Cycle. Why Life Cycle Approach for Software?

Introduction to Software Project Management. CITS3220 Software Requirements & Project Management

Unit 1 Learning Objectives

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)

Software Engineering. Software Engineering. Software Costs

Process Models and Metrics

Software Development Process and Activities. CS 490MT/5555, Fall 2015, Yongjie Zheng

SEEM4570 System Design and Implementation Lecture 10 Software Development Process

An Overview of Quality Assurance Practices in Agile Methodologies

AGILE vs. WATERFALL METHODOLOGIES

Software Engineering. What is a system?

A Comparison Between Five Models Of Software Engineering

In today s acquisition environment,

Agile development of safety-critical software while meetings standards' requirements

The software process. Generic software process models. Waterfall model. Software Development Methods. Bayu Adhi Tama, ST., MTI.

Software Engineering

Unit I. Introduction

Modelli di sviluppo software. Enrico Giunchiglia

Software Development Methodologies

A Process Programmer Looks at the Spiral Model

Advanced Software Engineering. Software Development Processes

Software Life-Cycle Management

Software Life Cycle Models

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

Objectives. The software process. Basic software process Models. Waterfall model. Software Processes

Cost Estimation Strategies COST ESTIMATION GUIDELINES

Agile-Fall Process Flow Model A Right Candidate for Implementation in Software Development and Testing Processes for Software Organizations

Software Engineering. An Introduction. Fakhar Lodhi

2. Analysis, Design and Implementation

Agile So)ware Development

Agile Software Engineering, a proposed extension for in-house software development

Web Applications Development and Software Process Improvement in Small Software Firms: a Review

Software Development Under Stringent Hardware Constraints: Do Agile Methods Have a Chance?

Challenging ALM: What really matters when picking tools? Share this Ebook

Object-Oriented and Classical Software Engineering

Assessing Your Business Analytics Initiatives

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

UC Santa Barbara. CS189A - Capstone. Christopher Kruegel Department of Computer Science UC Santa Barbara

Applying Lean on Agile Scrum Development Methodology

IV. Software Lifecycles

Software development lifecycle

Business Analysis Essentials

Agile Models. Software Engineering Marco Scotto Software Engineering

Software Process and Models

CPSC 491 Lecture Notes Fall 2013

Why the Traditional Contract for Software Development is Flawed

CS4507 Advanced Software Engineering

Selecting a Software Development Methodology based on. Organizational Characteristics. Adrienne Farrell

Software Quality Assurance: II Software Life Cycle

1. Software Process Models (Sommerville Chapters 4, 17, 19, 12.4)

Rapid Development & Software Project Survival Guide Steve McConnell Dave Root (Developed with Mel Rosso-Llopart)

Software Development Lifecycle. Steve Macbeth Group Program Manager Search Technology Center Microsoft Research Asia

Hamid Faridani March 2011

Agility in Fixed-Price Projects

Agile Software Development

Test Cases Design for Software Database Provisioning Development

Umbrella: A New Component-Based Software Development Model

2. Analysis, Design and Implementation

Chapter 2 Software Processes

Computer Science Department CS 470 Fall I

Transcription:

Non-Technical Issues in Software Development David E. Kieras! University of Michigan 1 Introduction Question: Why isn't software of higher quality?! More useful, more usable, more reliable?! Many large software projects fail (~50+%).! Over budget, behind schedule, abandoned, unusable, or simply don't work when delivered.! Answer: There are problems in how software is developed.! Organizational and social rather than technical.! Frequently a disconnect between the developers and the users.! Developers don't build what users actually want.! How software is typically developed makes the situation worse, not better.! Players:! Users - people who actually interact with the software.! Customers - people who choose to buy the software.! Developers - people who design and write the software.! Managers, administrators - people who make decisions about what will be developed or purchased.! Describe in terms of two aspects of software development:! Processes - how to organize the development process.! Contexts - the kind of organization developing the software. 2

Software Development Processes - how development is organized Topic in Software Engineering:! Standard stage or waterfall model.! Evolutionary model.! Spiral model.! Agile development and other newer ideas.! If a software development organization doesn't have some kind of process in place, it is either:! Very small - developers keep it all in the heads;! Likely to fail, probably sooner rather than later, due to the 50+% failure rate. 3 Software Development Contexts - the kind of organization Contract development organization! Customer specifies the system, contractors design and build it in response to contract specifications.! Product development organization! Products developed for discretionary purchase in a large market.! In-house development organization! One group in an organization develops software for another group in the organization.! The processes originally developed in the contract organization.! Present this organization first and summarize how processes developed, then on to the other forms of organization. 4

Contract Software Development Until relatively recently, most software was custom-developed for the needs of a single customer.! Today's "applications" did not exist - everything was one-of-a kind.! While machines were expensive, so was programmer time!! Software was written under contract - deliver a program for specified cost.! Earliest software development process was code-and-fix.! Hack some stuff out and then try to make it work - nothing formalized.! Better process developed in response to government (especially military) procurement of very large systems.! U.S. Government is the original large computer purchaser and user.! Accountability required to counter tendency toward corruption.! Customer specifies the system, then contractors design and build it in response to contract specifications.! Users known initially, developers identified when contract awarded.! Driven from specification documents.! Emphasis on controlling development process.! Problems are much more expensive to fix after the code has been written.! So try to figure everything out beforehand.! Developer's success depends on adherence to specifications. 5 Contract Development Led to Defined Processes for Software Development Need for accountability led to a well-defined development and procurement process.! Administrative Process:! Customer prepares specifications! e.g. Naval Bureau of Personnel wants a new personnel records system.! Navy officials write specifications for the system.! Government solicits bids for design, coding, other phases of project.! Contractors bid for each phase.! Not necessarily the same contractor for different phases.! Information available to contractors is normally restricted to paper documents.! May have in-house or consultant experts, but often no access to actual users - might even be illegal to talk with them.! Big premium on the products of each phase being documented.! Enables "throwing it over the wall" to the next phase, which might be a different contractor.! Helps customer avoid getting "locked in" to a single contractor. 6

User organization:! Establish feasibility.! Specify requirements - usually in terms of functional capabilities.! Usefulness and usability might be mentioned, but only in general terms.! E.g. "The system shall be easy to operate efficiently."! Contractors can't really adhere to such vague specifications, so tend to be ignored in favor of hardware/software specifications.! Contractor or Contractors:! Design system.! Do detailed design.! Write code.! Test system.! Integrate & Install system.! Operation.! Maintenance.! Overall Contract Process Emphasis is on doing complete design before coding.! Prevent costly errors from having to change design during coding.! Stage & waterfall models of software development.! Stage model - 1956! Waterfall model - about 1970 - current industry standard.! A major advance over earlier hacking-it-out, code-and-fix approach. 7 The Waterfall Model for Software Development System feasibility Validation Requirements Validation Product design Verification Detailed design Verification Code Unit test Integration Product verification Implementation System test Operations and maintenance Revalidation A series of stages, with limited feedback back to previous stage. 8

Why Contract Development Often Fails Design must be "signed off" on before any coding is done, so no testing of design concepts is possible prior to completion!! Whole point is to avoid design iteration, so there is no test-modify loop for the choice of functionality and user interface testing.! If usability and functionality is not adequately captured in system specifications, then not likely to be designed into the system!! Little opportunity for contact between developers and users.! Anything specified about the interface or system, no matter how bad, has to be supplied! "Green suit" principle.! Quote from Boehm (one of the gods of software engineering):! "[The waterfall model] does not work well for many classes of software, particularly interactive end-user applications. Document-driven standards have pushed many projects to write elaborate specifications of poorly understood user interfaces and decision-support functions, followed by the design and development of large quantities of unusable code."! Change coming only very slowly.! It would help if the specifications included even a little user task information.! "Concepts of use" document - or use cases - still not normally supplied!! Need different model of software development! 9 Concept of Boehms's "Spiral" Model Driven by repeated identification and resolution of risks: A cycle of! Determine objectives, alternatives, constraints.! Evaluate alternatives, identify, resolve risks.! Analyze risks, construct prototypes, models, etc to resolve risks.! Develop, verify products at each level, depending on cycle.! Includes waterfall model stages at the end.! Plan next phase.! Risks and resolution approaches - descending priorities:! Personnel shortfalls.! Staffing with top talent, pre-scheduling key people, etc.! Unrealistic schedules & budgets.! Detailed cost & time estimation, design to cost, incremental development, etc.! Developing the wrong software functions.! Organization analysis, mission analysis, operations-concept formulation, user surveys, prototyping, early users' manuals.! Developing the wrong user interface.! Task analysis, prototyping,scenarios,user characterization.! Gold plating.! Continuing stream of requirement changes.! Real-time performance shortfalls.! Straining computer-science capabilities. 10

Determine objectives, alternatives, constraints Boehms's "Spiral" Model Cumulative Cost Progress through steps Evaluate alternatives, identify, resolve risks Risk Analysis Risk Analysis Risk Analysis Risk Analysis Review Commitment partition Requirements plan life-cycle plan Development plan Prototype Concept of operation Requirements validation Prototype Software requirements Prototype Simulations, models, benchmarks Software product design Operational Prototype Detailed design Code Integration and test plan Design validation and verification Integration and test Unit test Plan next phases Acceptance test Implementation Develop, verify next-level product Risk identification/resolution at beginning, waterfall at end. 11 Agile Development Process A relatively new and still-developing approach.! Began to develop in the late 1990s, announced in the 2000's.! A variety of techniques and ideas, but no single overall process description. 12

Manifesto for Agile Software Development We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan 2001! That is, while there is value in the items on the right, we value the items on the left more. http://www.agilemanifesto.org/! 13 Agile Development Process Basic concept: Requirements change frequently, so adapt to changes rapidly instead of wasting time planning everything in advance.! Deprecate role of written design and planning documents.! Requirements change too rapidly - you could be revising code instead of the documents!! Emphasize role of getting software written, tested, and revised rapidly.! Frequent, fast iterations each creating small pieces of functionality.! OOP techniques make it possible.! Rely on small teams of expert programmers in direct contact with customers and each other - a craft workshop, not a factory.! Means excellent programmers are more important, but need more skills than just programming - e.g. able to understand domains & users.! Example techniques - good ideas!! Pair programming - review and fix the code as it is written.! Test-driven development - the tests are the specifications.! Frequent refactoring to maintain high code quality. 14

Agile Development Process - Current Status Controversial, concepts and practices still in flux, still under debate.! Some tendency for Agile Development to become:! A set of buzzwords.! Another programming religion.! A business for consultants to sell training and advice to clueless managers.! Another set of rigid processes for clueless managers to impose.! Appears to work very well for smaller low-risk projects with highly capable programmers in charge.! Let s just get this built!! Does not work well for large, complex, long-lived mission-critical projects.! Example: Accounting software for a large corporation that must meet government regulatory standards.! Example: Affordable Care Act websites.! Can t just hack this up and expect it to work or be sustainable.! Must be carefully planned to meet complex, detailed requirements.! Must have documentation to support future modification, transparency.! Must be built and maintained with ordinary programming talent.! A non-genius developer must be able to learn about a huge code base so he or she can work on it.! Combination of plan-based and agile methods can work well. 15 Evolution of Software Development Process From Boehm (2006) 16

Pop Up: Software Development Contexts - the kind of organization Contract development organization! Customer specifies the system, contractors design and build it in response to contract specifications.! The processes originally developed in the contract organization.! Present this organization first and summarize how processes developed, then on to the other forms of organization.! On to other forms of organization!! Product development organization! Products developed for discretionary purchase in a large market.! In-house development organization! One group in an organization develops software for another group in the organization.! 17 Product Development Organization Context Products developed for discretionary purchase in a large market.! Organization identifies potential products, develops and markets them.! E.g., almost all personal computer software vendors.! Developers known immediately, users identified at time of purchase.! Driven by perception of market:! Historical shift in emphasis from functionality-only to quality user experience.! Success depends on whether there are enough users "out there" who buy the product. 18

Problems in the Product Development Organization Context Product development organizations adopted the waterfall model, although situation was actually quite different from Contract Development.! Management need to control, routinize, development process.! No preexisting specifications.! Actual users of product are not really known until they buy the product.! Developers have to guess who the users will be, and must develop their own product specifications.! Have all of the disadvantages of contract development, with none of the advantages.! Can't just play it safe by writing to customer's specification, and own specifications might be wrong or poor choices.! Many failed products because there were not enough customers.! Constant competitive pressures from other companies - no bid winners!! Slow feedback from the market.! Often distorted because feedback is through customer (e.g. administrator) who actually makes purchase, but is not the user.! Situation is changing in product development organizations.! Typically are continually revising and improving products, so have an iterative process already.! Tend to be market driven, so quality can get considered at least somewhat. 19 In-house Development Context One group in an organization develops software for another group in the same organization.! Characteristic of many information-intensive organizations.! E.g. manufacturers, banking, University of Michigan.! Both developers and users known from the beginning.! Driven by needs of user group.! Success depends on whether the user group accepts the software.! Advantages and Problems for Usability in In-House Development! Since users & developers are under the same roof, user contact is easiest.! Users often participate in the design.! Also, developers often "paid" by the users, so users often have to be consulted and satisfied.! Schedules are usually more flexible.! But conflicts can arise over roles and jurisdiction:! Software development group may have its own agenda.! E.g. really interested in Unix, wants to use a particular web techniology, etc.! Customer may not be the same as the user:! Users may not be empowered to insist that developers meet their needs.! E.g. UM administrative software - we don't get to choose.! Management can default to inappropriate process like waterfall model.! Administrative advantages.! Relieves some conflict situations, temporarily. 20

Concluding Remarks Software development is difficult!! For both technical and non-technical reasons.! Possibly the most difficult activity the human species has created for itself.! We don't really know how to do it well!! What kind of organization are you in?! What control does it have over what gets built?! What kind of development process is being followed?! Do you know what it is?! If things are going well, or going poorly, why is that?! Could the process be inappropriate for the job or the organization?! It might help if you understand what's going on.! What constraints apply in your professional situation?! Should you keep your resume up to date? 21 Selected References Boehm, B. W. (1988). A spiral model of software development and enhancement. IEEE Computer, 21, 5, 61-72.! Boehm, B.W. (2006). A view of 20th and 21st century software engineering. ICSE 06 Proceedings, May 20-28, 2006, Shanghai, China.! Grudin, J. (1991). Interactive systems: Bridging the gaps between developers and users. IEEE Computer, 24, 59-69! Grudin, J. (1991). Systematic sources of suboptimal interface design in large product development organizations. Human-Computer Interaction, 6, 147-196. 22