22CSC16
OBJECT ORIENTED SOFTWARE ENGINEERING
UNIT 1
UNIT I-SOFTWARE PROCESS AND AGILE DEVELOPMENT
Introduction to Software
Engineering
Software Engineering: Systematic, disciplined approach to software
development.
Solves the software crisis: delays, cost overruns, low quality.
Ensures software is correct, maintainable, efficient, reusable, and
reliable.
Applies engineering principles to software design and development.
Important for building complex and large-scale systems.
Software Process
Software Process = Set of related activities to produce software.
Four fundamental activities:
Specification – Defining system requirements.
Development – Designing and coding.
Validation – Ensuring software meets requirements.
Evolution – Software updates and maintenance.
Provides structure and control to development efforts.
Process models guide these activities.
Specialized Process Models
Component-Based Development – Focus on assembling reusable
components.
Concurrent Model – Activities occur in parallel, not strictly sequential.
Formal Methods Model – Mathematical specifications and proofs.
Aspect-Oriented Software Development – Modularizing cross-cutting
concerns.
Unified Process (UP) – Use-case driven, architecture-centric, iterative.
Introduction to Agility
Agility: Ability to respond quickly and efficiently to change.
Emphasizes individuals, interactions, and customer collaboration.
Agile Manifesto promotes working software over documentation.
Encourages early and continuous delivery.
Focused on flexibility, teamwork, and adaptation.
Agile Process
Lightweight, iterative development approach.
Divides work into small, time-boxed iterations (sprints).
Promotes customer involvement and feedback.
Practices include:
Continuous integration
Simple design
Test-driven development (TDD)
Suitable for dynamic, changing requirements.
Extreme Programming (XP)
Agile methodology focused on technical excellence.
Based on values: Communication, Simplicity, Feedback,
Courage, Respect.
Key practices:
Pair Programming
Test-Driven Development (TDD)
Refactoring
Small Releases
Continuous Integration
Strong customer involvement with an on-site customer.
XP Process
Planning: User stories, Release planning.
Design: Simple design, CRC cards.
Coding: Pair programming, Collective code ownership.
Testing: Unit tests by developers, Acceptance tests by users.
Feedback loop enables quick changes and improvements.
Case Study (XP in Action)
Real project using XP methodology.
Iterative development with weekly releases.
Team followed TDD and pair programming strictly.
Client available for daily feedback.
Observed improved code quality, faster delivery, and user
satisfaction.
Challenges: team discipline, continuous communication needed.