Understanding Software Development: Challenges, Models, and Agile Approaches, Study notes of Computer Science

An overview of software development, including common problems, the impact of software failures, and various software development models such as waterfall, unified, and agile (extreme programming). It also discusses the importance of software engineering and the challenges of creating and maintaining software, especially as it becomes more complex and integrated into our infrastructure.

Typology: Study notes

Pre 2010

Uploaded on 02/13/2009

koofers-user-hud
koofers-user-hud 🇺🇸

10 documents

1 / 20

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
1
CMSC 132:
Object-Oriented Programming II
Software Development I
Department of Computer Science
University of Maryland, College Park
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14

Partial preview of the text

Download Understanding Software Development: Challenges, Models, and Agile Approaches and more Study notes Computer Science in PDF only on Docsity!

CMSC 132:

Object-Oriented Programming II

Software Development I

Department of Computer Science

University of Maryland, College Park

Overview Software Development Problems Impact of Software Failures Why is Software So Difficult? Software Size Software Life Cycle Waterfall Model Unified Software Life Cycle Model Agile Software Development Model Extreme Programming (XP)

Software Development Problems

Software is expensive

Cost per line of code increasing(while hardware costs drop)

Software is late (schedule overruns) Software cost more (cost overruns) Software is difficult to use Software is difficult to understand Software is missing features Software is too slow

Software Projects Fail

Anywhere from 25-50% of custom software fail Latest example

Jan 13, 2005, LA Times “A new FBI computer program designed to helpagents share information to ward off terroristattacks may have to be scrapped, forcing a furtherdelay in a four-year, half-billion-dollar overhaul ofits antiquated computer system… Sources saidabout $100 million would be essentially lost if theFBI were to scrap the software…”

Impact of Software Failures Increasing

Software becoming part of basic infrastructure

Software in cars, appliances Business transactions moving online

Computers becoming increasingly connected

Failures can propagate through internet Internet worms Failures can be exploited by others Viruses Spyware

Why Is Software So Difficult?

Complexity

Software becoming much larger Millions of line of code Hundreds of developers Many more interacting pieces

Length of use

Software stays in use longer Features & requirements change Data sets increase Can outlast its creators

SLOC

SLOC – Source lines of code (SLOC)

Software metric that measures the amountof code in a program

According to Gary McGraw:

Win 95 – 15 Millions SLOC Win 98 – 18 Millions SLOC Win XP – 40 Millions SLOC

Software Size

Small software projects

Can keep track of details in head Last for short periods What students learn in school

Large projects

Much more complex Commonly found in real world Why we try to teach you Software engineering Object-oriented programming

Components of Software Life Cycle

Problem specification

Program design

Algorithms and data structures

Coding and debugging

Testing and verification

Documentation and support

Maintenance

“Waterfall Model” of Life Cycle

Simple model

Proceed fromone step to next Result of stepflow into next

In reality

May need toreturn toprevious step Steps may bemore integrated Steps may occurat same time

Unified Software Life Cycle Model Iterative development (iteratively add incrementalimprovements) Takes advantage of what has been learned duringearlier versions of the system Development divided into phases (iterations)

Inception

Elaboration

Construction

Transition During each phase Multiple iterations of software development Development treated as mini-waterfalls Emphasis gradually shifts from specification to testing

Unified Software Life Cycle Model

Extreme Programming (XP) One of the best-know examples of an Agile Process Appropriate for environments with: Small teams Rapidly-changing requirements

Extreme Programming (XP) Some of the principles XP is based on are: Small Releases

  • Software developed in stages that are updated frequently Simple Design - Implement code needed to achieve customer’s results without emphasis on future versions Testing - Done throughout the whole development process. Tests are design first, before writing the software Pair Programming - Code written in pairs working at the same computer 40-Hour Week - Ensures team remains well-rested and alert On-Site Customer - Customer is available at all times to answer questions