Software Processes and Agile Development Flashcards
A software process is a structured set of activities to develop a software system, involving four core activities: Specification (defining system functions), Design and Implementation (organizing and implementing the software), Validation (ensuring customer requirements are met), and Evolution (adapting to changing needs). Software process models abstractly represent these processes.
Plan-Driven vs. Agile Processes: Plan-driven processes (like the Waterfall Model) involve detailed pre-planning, while Agile processes promote incremental planning for flexibility in adapting to customer needs. Most professional processes blend both approaches.
The Waterfall Model consists of five sequential phases: Requirements Analysis, System Design, Implementation, Integration Testing, and Operation. Its drawbacks include difficulty in accommodating changes and inflexible phase progression, making it suitable for projects with well-understood requirements.
Incremental Development integrates activities across stages to produce a final system, utilizing prototypes for requirements engineering and design testing, leading to improved usability and lower development effort.
Agile Software Development prioritizes rapid, iterative progress, emphasizing customer involvement and responsiveness to change, with a focus on delivering working software over extensive documentation.
Applicability and Selection Criteria: Agile methods excel in small or medium-sized projects with committed customers, while plan-driven methods are preferred for detailed specifications and larger systems. Team organization and required regulatory documentation also influence the choice between approaches.
Code Refactoring aims to improve system structure and facilitate future changes without immediate requirements, with diverse examples driving clarity and efficiency.
The Scrum Framework features iterative development through defined phases, including Sprints for incremental software delivery, with a Scrum Master facilitating collaboration and progress tracking.