CS615 – Software Engineering I

Lecture 2


Unified Process Model (Chapter 3, Pressman, 6th ed)

Unified Process—a “use-case driven, architecture-centric, iterative and incremental” software process closely aligned with the Unified Modeling Language (UML)



UP Phases




UP Work Products



Chapter 4 -Agile Development (Pressman, 6th ed)

The 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:

That is, while there is value in the items on the right, we value the items on the left more.” - Kent Beck et al


What is “Agility”?

Yielding …


An Agile Process


Extreme Programming (XP)

The most widely used agile process, originally proposed by Kent Beck


XP Planning


XP Design

XP Coding

XP Testing




Adaptive Software Development



Dynamic Systems Development Method

Promoted by the DSDM Consortium (http://www.dsdm.org/)


DSDM—distinguishing features




Originally proposed by Schwaber and Beedle


Distinguishing features






Proposed by Cockburn and Highsmith


Crystal—distinguishing features


Feature Driven Development

Originally proposed by Peter Coad et al (PDF)


FDD—distinguishing features

total the value of the sale
calculate the interest for the bank account
total the hours worked for the pilot



Agile Modeling

Originally proposed by Scott Ambler  - http://www.agilemodeling.com/


Suggests a set of agile modeling principles



Chapter 5 - Practice: A Generic View

What is “Practice”?

The Essence of Practice


Core Software Engineering Principles


Software Engineering Practices

The generic process framework


Communication Practices





An abbreviated task set


Planning Practices




Questions to ask


Planning Practices

Abbreviated task set


Modeling Practices

We create models to gain a better understanding of the actual entity to be built


Analysis Modeling Practices

Analysis modeling principles


Design Modeling Practices



Elements of the design model


Construction Practices

Preparation principles:

Before you write one line of code, be sure you:


Coding principles:

As you begin writing code, be sure you:


Validation Principles: 

After you’ve completed your first coding pass, be sure you:


Testing Principles

·        All tests should be traceable to requirements


Deployment Practices