Modern software development methodologies software projects are often considered pale due to Inability to cater to changing user requirements. Iteration: Modern software methodologies encourage using shorter iterations, an Iteration Is a single development cycle that delivers a limited set of features which is usually done in 1-2 weeks. Agile software methodologies: A group of software methodologies and practices that enable to accommodate frequent changes in user requirements during the project time period. They are based on Iterative and incremental development.
Examples: Scrum Dynamic systems development method Feature driven development Accepting changes In requirements anytime Customer centric software development Light weight software development (less prominence to documentation) small teams of experts Agile manifesto Manifesto site Good for Agile manifesto Is a formal declaration of 4 key values and 12 principles to guide an Iterative an people centric approach to software development 4 key values to Agile Individuals and Interactions are valued over processes and tools Working software is valued over detailed documentation
Customer collaboration is valued over a contract negotiation Responding to change is valued over tolling a preset plan Extreme Programming (XP) An agile methodology which is intended to improve software quality and responsiveness to changing customer requirements. XP specialized in quality, XP specialized to adapt to change Risks of XP: Schedule slips Business changes Staff turnovers New technologies 4 control variables of XP projects: Scope Resources Time Quality External parties (clients, managers etc) can decide the values of any 3 variables the
XP team get to pick the value for the 4th variable. Deciding the values for the 4 variables is done in a transparent manner. The 12 practices that define XP: The planning game Small releases Metaphor Simple design Testing Rarefaction Pair programming Collective ownership Continuous integration 40-hour workweek On-site customer Coding standards 1 Planning game A meeting attended by both IT and business tea that is focused on choosing user stories for one iteration. User stories are provided by the end users. 2. Small releases
XP releases are small in terms of functionality (1-2 features per iteration) 3. Metaphor XP encourage using a naming concept for classes and methods that make it easy for a team member to guess the functionality of a class or method Just by its name. This supports stand-up meetings A stand up meeting is held every morning to communicate problems, solutions an promote team focus each member has to tell: What was accomplished yesterday What will be attempted today What problems are causing delays It is a time-boxed meeting where everyone stands up in a circle 4.
Simple design Do as little as needed. Only the basic features the customer wanted. Avoid unnecessary complexity, abstractions, expand ability in the design. 5. Testing Unit test- test small code unit 6. Rarefaction Changing the internal structure of software time to time to make it easier to understand and cheaper to mod without changing I TTS observable behavior 7. Pair programming Two developers are assigned to code one module. One person concentrates on completing the coding (driver) while the other person checks the code. (Observer) 8. Collective ownership
The idea that all developers own the code 9. Continuous integration New features and changes are integrated into the main code immediately. One piece of code is not worked on without being integrated for more than a day 10. 40-hour week Work week is limited to overtime. Regular overtime is considered as a symptom off problem 11 . On-site customer Representatives from the customers are available on site to give quick and continuous feedback to the developer team. 12. Coding standards All code should look the same it should not be possible to determine who coded what part based on the coding