Software Engineering (2160701)

BE | Semester-6   Winter-2019 | 14-12-2019

Q2) (C)

Explain Extreme Programming (XP) in detail

Extreme Programming

·       The most widely used approach to agile software development

·       A variant of XP called Industrial XP (IXP) has been proposed to target process for large organizations

·       It uses object oriented approach as its preferred development model

·       Communication: To achieve effective communication, it emphasized close & informal (verbal) collaboration between customers and developers

·       Simplicity: It restricts developers to design for immediate needs not for future needs

·       Feedback: It is derived from three sources the implemented software, the customer and other software team members, it uses Unit testing as primary testing

·       Courage: It demands courage (discipline), there is often significant pressure to design for future requirements, XP team must have the discipline (courage) to design for today

·       Respect: XP team respect among members

·       It considers four framework activities

1.    Planning

2.    Design

3.    Coding

4.    Testing

Planning

·       User Stories

o   Customers assigns value (priority)

o   Developers assigns cost (number of development weeks)

·       Project velocity

o   Computed at the end of first release

o   Number of stories implemented in first release

o   Estimates for future release

o   Guard against over-commitment

Design

·       Keep-it-Simple (Design of extra functionality is discouraged)

·       Preparation of CRC card is work project, CRC cards identify and organize object oriented classes

·       Spike Solutions, Operational prototype intended to clear confusion

·       Refactoring

·       Modify internals of code, No observable change

Coding

·       Develops a series of Unit test for stories included in current release

·       Complete code perform unit-test to get immediate feedback

·       XP recommend pair-programming, “Two heads are better than one”

·       Integrate code with other team members, this “continuous integration” helps to avoid compatibility & interfacing problems, “smoke testing” environment to uncover errors early

Testing

·       Unit test by developers & fix small problems

·       Acceptance tests - Specified by customer