Agile Development Methodology
Agile development is a software development methodology that uses process iterations during development, planning and deployment steps in meeting the needs or requirements of a given users (Admin, 2017). This methodology enhances faster production of the intended software or applications by developing prototypes that are upgraded during the development process to form a complete application. This software development approach enhances teamwork, leadership, self-organization and accountability by ensuring that every person involved in the project takes part in the formulation of the requirements and the final solution obtained depict the contribution of each and every member of the development team.
Iteration on the other hand involves dividing a software application development into modules. Each module is designed, developed and tested in a repetitive cycles until it satisfies the laid down requirements before it is integrated to the final solution. It is during these iterative testing cycles that new features can be designed, developed and added to the module after testing and later integrated into the final solution to make a full operational software application. The iteration methodology also works hand in hand with the incremental methodology in dividing the larger development process into smaller parts that are interrelated. These two methodologies therefore acts as the main foundation in which agile development is built on.
There exist different methodologies under agile and iteration development (McLaughlin, 2018) that share the same practices and similarities. Some of these methodologies are discussed below.
This is one of the agile development lightweight methodology that is considered to be efficient, flexible, has low risks and predictable (Wells, 2018). Extreme programming meant to address specific requirements of the software development process by small teams by considering vague and changing requirements (Richter, 2010). This methodology provides software development values and principles to guide the behavior of the development team. The five values provided by extreme development methodology include: communication, simplicity, feedback, courage and respect. The development process also provide the core practices the development team should embrace during the development process (Kukhnavets, 2018). The practices used for this method are; the use of planning game , on-site customer, regular small releases, use of metaphor, creation of simple design, testing, collective ownership, continuous integration, working 40 hours a week, refactoring, use of pair programming and adherence to coding standards. An example of extreme programming can be shown in the chart below.
These practices provides a clear guideline to the development team on how they should conduct or tackle the development of a given software applications.
Iteration and Incremental Development
Advantages of extreme programming
- It saves time and money. This methodology ensures that final solutions are delivered fast in minimum time and it also ensures that the budget is favorable by not using a lot of documentation that is a bit costly.
- The programming style is simple and easy to understand and upgrade or change.
- It enhances feedback from any member of the development team including the customers hence leading to low development risks.
- Extreme Programming is visible. That is the development team can show progress and modules developed at any given time of the development process.
- It enhances customer satisfaction since it gives an opportunity for customers to provide their feedback during the development process.
Disadvantages
- Has poor code quality assurance since it does not check this.
- Characterized with poor design since most of the developers concentrate more on the coding part than the design part.
- Not suitable when developers are working from different places geographically.
This is an agile development methodology that divides the development process into four phases. These phases consists of business modeling, business design and analysis, development, testing and deployment (Powell-Morse, 2017). The four phases are as discussed below.
Inception
This is the first phase where the idea of developing a given application is conceived. A thorough analysis is carried out to determine if the intended project is worth implementing and what requirements are needed.
Elaboration
In this phase an in-depth analysis is also carried out to evaluate the requirements and the project architecture. It is also in this phase where cost analysis is also carried out and the developers given an opportunity to consider different possible ways in which the software can be developed.
Construction/Coding
This phase involve coding and development of the intended software to its completion, testing of the modules functionalities and design and the entire application.
Transition
Once the software has been evaluated and approved to satisfy the user’s requirements, it is deployed or commissioned for production in this phase and update are carried out regularly based on the user’s feedback.
Rational unified process therefore provides a structural development process for the software developers and the customers involved by providing a clear plan of the development process.
Advantages
- This methodology enhances reusability of components hence reducing on development time.
- Less time is required for the integration process of the software application.
- It is easy to make changes and updates based on the user’s requirements
Disadvantages
- It needs developers with great expertise in development process.
- The regular integration throughout the process can bring in conflict with other development processes such as testing.
- This development methodology is complex and complicated as it involves too many processes such as best practices, iterations, milestone criteria, building block and workflow.
This is one of the agile development methodology with a capabilities of managing and controlling incremental and iterative solutions of all type (Techterms, 2018). The methodology is supported by its productivity ability, simplicity and it covers various engineering practices that employs other agile development methodologies. With this development methodology the customer works hand in hand with the development team to identify the intended software application functionalities and create a priority of how the functionalities should be implemented (James, 2013). This development process usually takes a month to complete, hence once the customer has prioritized the functionalities the development team works on estimation of the delivery time after a number of successive iterations. The team can only add any extra feature once the iteration product has been committed. It is then that the next range of the functionalities priorities are made after the sprint has been delivered.
Advantages
- Customer involvement throughout the development process ensures quality productivity of the final product.
- With this process customer feedback is constant and this helps in ensuring that the product is of low risks
- Easy to adapt changes due to frequent feedback
- There is clarity of the development process since it is easy to manage the methodology hence making it easy to make regular updates as per the customer requirements given during the frequent meetings.
Disadvantages
- Not suitable for larger projects since it only functions well with development team of few members.
- Inaccurate time and project cost in the case where the requirements are not well described.
- High risks of project failure in the case where the team members lack commitment.
This is an agile development methodology that focuses on human and their interactions during the software development process (Santos, 2017). This development methodology also focuses on the most critical issues of the business and the priorities made for the system functionalities under development as shown below.
Extreme Programming
Contrary to the traditional software development methodologies, crystal method does not focus on fixing tools and techniques but rather keeps humans at the center of the development process (haikalhasbi, 2013). There are three practices implemented by crystal methodology as discussed below.
Iteration and incremental development. This practice ensures that the project is developed in a series of iterations which are time-based (SCRUMstudy, 2013). The module developed during iteration process is later integrated into the overall system. The next iteration is planned based on the customer feedback received at the end of the iteration.
Active User Involvement. Since the methodology is so human-centered, it ensures that users are involved and informed of every development step taken.
Commitment Delivery. The development team is given a mandate to ensure that a product based on the client values and functionalities is delivered frequently.
Advantages
- It ensures customer satisfaction by ensuring that customers are involved throughout the process.
- Crystal method saves on software development time.
- Testing is carried out regularly in ensuring that the product produce meets all the user requirements.
- It is suitable for fixing changing requirements.
Disadvantages
- This method is not suitable for projects with complex dependencies.
- It is characterized with risks of sustainability, maintainability and extensibility.
- The scope, functionalities and adjustments decisions are made by strict management in attempt to meet deadlines.
Having analyzed various agile development methodologies, extreme programming development is therefore recommended for the Australian Fashion Design (AFD). This is because the methodology ensures that there is regular user involvement hence supporting frequent feedback, continuous planning, close teamwork and continuous testing. With extreme programming, the final product is likely to satisfy almost all the user requirements if not all due to involvement of the users throughout the process. This therefore will translate to very minimal or no risks at all hence improving AFD services and increasing the company’s sales.
Events Table
Event |
Event Type |
Trigger |
Source |
Activity/Use Case |
System Response/ Output |
Destination |
Customer Registers on the CRM system |
Ext |
Customer registration |
Customer |
Filling in customer details |
Successful registration |
Customer |
Customer login |
Temp |
Sign in |
Customer |
Login in to the system |
Successful login to the system |
Customer |
Customer wants to check if clothe is available |
Ext |
Item inquiry |
customer |
Checks clothes availability |
Displays clothe availability details |
customer |
Customer places an order |
Ext |
New order |
customer |
Creation of new order |
Automatic Order and Order transaction details confirmation |
Customer Shipping Bank |
Customer cancels or changes an order |
Temp |
Changing order request |
customer |
Order Update |
Change confirmation Order change details Transactions |
Customer Shipping Bank |
Checking or order status by Customer/ Management |
Temp |
Inquiry of order status |
Customer/ Management |
Check order status |
Show details of Order status |
Customer/ Management |
Fulfills shipping details for an order |
Ext |
Order status fulfillment |
Shipping |
Save order fulfillment |
Show Shipping Status |
Customer |
Identification of back order by shipping |
Temp |
Back order notice |
Shipping |
Save back order |
Produce notification for back order |
Customer |
Return of clothe by customer |
Temp |
Order return notification |
Customer |
Create new order return |
Confirm returned order |
Bank Customer |
Update of account details by customer |
Ext |
Customer account update notice |
Customer |
customer details updated |
Update details |
customer |
Name of the use case |
Create new order |
|
Scenario |
Customer makes an order via phone call |
|
Triggering event |
Customer makes calls for clothe purchase clothes on catalog from AFD |
|
Brief Description |
Verification of customer details is done, the order created, clothes ordered, payment made and the order transaction is done before the process is finalized. |
|
Actors: |
Telephone, sales person, and customer |
|
Stakeholders |
Sales department – provides customer details. Shipping department – checks information fulfillment of where the item is to be delivered. Marketing department – Collects market statistics for analysis. |
|
Preconditions |
Customer existence is mandatory, there must be catalog, clothes, and inventory for the ordered clothe |
|
Post conditions |
Creation of the order and its transaction for the payment must be done and the quantity of the items on the inventory updated. Every order created must be related to a given customer. |
|
Activities flow |
Actor |
System |
1. Sales person – Receive phone calls and talk to the customer |
||
2. The sales person – verifies AFD’s customer information |
Shows AFD’s customer information |
|
3. Sales person – processes new order creation |
Create a new order |
|
4. Customer makes request for addition of an item to the order |
||
5. Sales person verifies the availability of a given item |
5.1 Shows item information |
|
6. Sales person – process addition of an item to the order |
6.1 adds an order item |
|
7. Repeat steps 4, 5, and 6 until all items are added to the order |
||
8. Customer – marks the end of an order |
8.1 Completes order 8.2 calculate totals |
|
9. Customer submits payment, sales person enters amount |
9.1 Does payment verification 9.2 Creates an order transaction 9.3 Completes an order |
References
Admin (2017). Agile Methodology. [online] Agilemethodology.org. Available at: https://agilemethodology.org/ [Accessed 6 Jun. 2018].
Bloomington, I. (2018). Human Computer Interaction Design: Informatics: Degrees & Certificates: Graduate: Home: Indiana University. [online] Sice.indiana.edu. Available at: https://www.sice.indiana.edu/graduate/degrees/informatics/hcid/index.html [Accessed 6 Jun. 2018].
CARROLL, J. (2013). Human Computer Interaction – brief intro. [online] The Interaction Design Foundation. Available at: https://www.interaction-design.org/literature/book/the-encyclopedia-of-human-computer-interaction-2nd-ed/human-computer-interaction-brief-intro [Accessed 24 May 2018].
cprime (2018). What is Agile? What is Scrum?. [online] cPrime. Available at: https://www.cprime.com/resources/what-is-agile-what-is-scrum/ [Accessed 5 Jun. 2018].
EP (2013). Extreme Programming: A Gentle Introduction.. [online] Extremeprogramming.org. Available at: https://www.extremeprogramming.org/ [Accessed 5 Jun. 2018].
Foundation (2018). What is User Centered Design?. [online] The Interaction Design Foundation. Available at: https://www.interaction-design.org/literature/topics/user-centered-design [Accessed 6 Jun. 2018].
haikalhasbi (2013). What Is Crystal Methodology (Agile). [online] haikalhasbi. Available at: https://haikalhasbi.wordpress.com/2013/11/09/what-is-crystal-methodology-agile/ [Accessed 5 Jun. 2018].
James, M. (2013). An Empirical Framework For Learning (Not a Methodology). [online] Scrummethodology.com. Available at: https://scrummethodology.com/ [Accessed 5 Jun. 2018].
Kukhnavets, P. (2018). Disadvantages and Advantages in Extreme Programming. [online] Hygger. Available at: https://hygger.io/blog/disadvantages-and-advantages-of-extreme-programming/ [Accessed 5 Jun. 2018].
McLaughlin, M. (2018). Agile Methodologies for Software Development. [online] VersionOne. Available at: https://www.versionone.com/agile-101/agile-methodologies/ [Accessed 6 Jun. 2018].
Powell-Morse, A. (2017). Rational Unified Process: What Is It And How Do You Use It?. [online] Airbrake Blog. Available at: https://airbrake.io/blog/sdlc/rational-unified-process [Accessed 5 Jun. 2018].
Reynosa, J. (2018). Agile Methodology: The Complete Guide to Understanding Agile Testing – QASymphony. [online] QASymphony. Available at: https://www.qasymphony.com/blog/agile-methodology-guide-agile-testing/ [Accessed 5 Jun. 2018].
Richter, L. (2010). What Are the Advantages of Extreme Programming?. [online] Brighthub Project Management. Available at: https://www.brighthubpm.com/methods-strategies/87839-advantages-of-extreme-programming/ [Accessed 5 Jun. 2018].
Rouse, M. (2018). What is HCI (human-computer interaction)? – Definition from WhatIs.com. [online] SearchSoftwareQuality. Available at: https://searchsoftwarequality.techtarget.com/definition/HCI-human-computer-interaction [Accessed 5 June 2018].
Santos, J. (2017). XP, FDD, DSDM, and Crystal Methods of Agile Development. [online] project-management.com. Available at: https://project-management.com/xp-fdd-dsdm-and-crystal-methods-of-agile-development/ [Accessed 5 Jun. 2018].
SCRUMstudy (2013). What is Crystal? | SCRUMstudy Blog. [online] Blog.scrumstudy.com. Available at: https://blog.scrumstudy.com/what-is-crystal/ [Accessed 5 Jun. 2018].
Techterms (2018). RUP (Rational Unified Process) Definition. [online] Techterms.com. Available at: https://techterms.com/definition/rup [Accessed 5 Jun. 2018].
Techopedia (2018). What is Human-Computer Interaction (HCI)? – Definition from Techopedia. [online] Techopedia.com. Available at: https://www.techopedia.com/definition/3639/human-computer-interaction-hci [Accessed 6 Jun. 2018].
Tutorial (2018). Extreme Programming Introduction. [online] www.tutorialspoint.com. Available at: https://www.tutorialspoint.com/extreme_programming/extreme_programming_introduction.htm [Accessed 5 Jun. 2018].
Usability.gov (2018). User-Centered Design Basics | Usability.gov. [online] Usability.gov. Available at: https://www.usability.gov/what-and-why/user-centered-design.html [Accessed 6 Jun. 2018].
Wells, D. (2018). What is Extreme Programming (XP)?. [online] Agile Alliance. Available at: https://www.agilealliance.org/glossary/xp/#q=~(filters~(postType~(~’post~’aa_book~’aa_event_session~’aa_experience_report~’aa_glossary~’aa_research_paper~’aa_video)~tags~(~’xp))~searchTerm~’~sort~false~sortDirection~’asc~page~1) [Accessed 5 Jun. 2018]