Agile Software Development – Software Engineering
What is Agile? Agile Methodology and Principles
-
What is Agility?
-
Definition:
-
Agility is the unending process, which always accepts specific requirement of the product from the customers or end user then it checks whether the requirements are growth oriented or not?
-
If it is growth oriented then it aggressively changes the existing system.
Principals to achieve Agility.
1. Customer satisfaction by continuous delivery of the software.
2. Always accept changes in requirement though it is late in development.
3. Deliver working software frequently in shorter time span.
4. Business people and developers must work together during complete development of the project.
5. Develop the project from the software project team. It includes;
. Motivate each individual of the project.
. Provide then necessary resources and environment to build the project
. Trust them to get the job done.
6. Do the face to face conversation, if essential or urgent.
7. Primary measure of the progress is the working software
8.Agile process promotes sustainable development. (That means somebody from agile team doing a good task to helpful for development should get promotions)
9. Keeps Continues track to technical excellence and best design increases Agility
10. It collects information about amount of work not done and tries to find out reasons of that.
11. Agile team collects requirement, and fulfil them using best architectures.
12. Continuous thinking about how the performance of team can be increased.
-
What is Agile Process ?
An Agile software process is characterized in a manner that addresses 3 key assumptions of software project.
-
1. It is difficult to predict which requirement is changing and which is not changing?
2. Some type of software, design and construction phase are related with each other, so again it is difficult to predict exactly how much time required to design process.
3. Time required for analysis, design and construction are not predictable.
* This unpredictability can be managed by;
* Agile software development adapts incrementally.
* It accepts feed back from the customer.
* If requires then use prototype approach.
-
Human Factors ?
-
Competence: There should be healthy competition between the team members to achieve knowledge, to acquire a different skill, to improve talent which is helpful for Agile software development.
-
Common focus: Every member of the team performs different task to bring different skill to project but all to do this to achieve only one goal to deliver one working software increment to customer within allotted time.
-
Collaboration: Each member of the software team should not having any communication gap and they are collaborating with each other such that it is help full to develop a success full project.
-
Decision making abilities: Each member of the team should be responsible to have decision making ability which is not only helpful for controlling its own destiny but also controls overall activity of project.
-
Fuzzy problem solving ability: Actually Agile team is always busy in solving problems of customer and customer is always busy to give new requirement for the software. But if software team has capability to write such code, even if it is not helpful today, it may be used in future. That means they should have capabilities of fuzzy..
- Mutual trust and respect:
Agile team members should have respect for each other and have trust on each other to achieve all tasks of the project.
-
Self organization: Team organized by itself for,
Work to be done.
Organizing process to best accommodate its local environment.
To decide schedule.
Distribute works as per the skill sets of other team members.
-
Agile Process Model…
-
The main objective of agile process model is to provide best quality software in allotted time span.
-
It follows conventional approach.
-
It follows philosophy and guidelines suggested in manifesto for Agile Software development.
-
There are many Agile Process models that are XP, ASD, DSDM, scrum, crystal, FDD, AM.
-
Adaptive Software Development (ASD)
-
It is one of the techniques for developing complex software, proposed by Jim Highsmith. ASD focuses on self-organization and collaboration in a team. ASD life cycle consists of following three phases as shown in figure 2.3
-
Speculation: In this phase, the requirements are gathered and plan for iterative and adaptive releases/increments (adaptive cyclic planning) is created for the project. Plan is reviewed and updated as per the feedback in each cycle.
-
Collaboration: People working together must respect individual strengths and weaknesses. People in a team should criticize and assist each other without any resentments. They should work hard together and contribute their skills to achieve the goal. In order to take effective actions, problems faced must be communicated openly. The team works together for the development of components as per the development plan.
-
Learning: In ASD learning is emphasized as much as progress. Learning helps the team to understand and improve their technical skill set, project and process understanding. The team learns through focused groups, technical reviews and project post-mortems
-
Scrum
-
Scrum uses very easy and simple rules of communication and that is why it is adapted by many Agile teams. The three main roles on a scrum project are Product Owner, Scrum Master and team member.
-
The Product Owner together with a team prioritize the requirements, features and functionalities of the system to be build called Product Backlog. In order to accommodate changes, features can be added any time to the product backlog.
-
Software is built in an iterative manner. This iteration is called as Sprint. Sprint cycle is depicted in figure. 2.4. Each sprint consists of set of functionalities from the backlog (sprint Backlog), which has to be implemented within certain time period (usually 30 days). Every sprint begins with sprint planning which involves product owner, scrum master and all the team members.
-
Everyday short Scrum Meetings (Daily scrum, generally up to 15 min.) are conducted by the team in order to assess progress and problems faced during the development. These scrum meetings are led by the scrum master.
-
Dynamic System Development Model (DSDM)
-
This agile software development approach is mainly based on Rapid Application Development (RAD) method. It provides a framework for developing and maintaining the systems under tight time constraints.
-
Main goal of DSDM is early delivery of the software for real benefits to business.
-
The two core techniques used by DSDM are:
1. TimeBoxing: A large project is divided into small portions and each portion is implemented in the form of increment within stipulated time frame and budget.
ii. MoSCow: It is the technique used for requirement prioritization, which is acronym of MUST have, SHOULD have, COULD have, WON’T have.
iii.DSDM tries to ensure transparency and visibility through consistent communication with stakeholder.
The DSDM life cycle consists of three iterative phases which are preceded by two lifecycle activities as follows:
i. Feasibility study: Identifies the basic requirements and constraints related to the system to be built. It assesses whether DSDM process is suitable for the project development.
ii. Business study: This phase identifies the business value of the application to be developed. Architecture and maintainability requirements of the application are also finalized in this phase
-
Iterative phases of DSDM are
1. Functional model iteration: Here the working model/increment of the system is produced. This helps in getting the feedback from the client, which acts as an input for the development of next increment.
ii. Design and build iteration: Design is refined with every iteration in order to accommodate the essential and operational business values.
iii. Implementation: The latest software increment developed is always implemented in the operational environment of the user.
-
Agile Unified Process (AUP)
AUP is a simplified version of Rational Unified Process (RUP). AUP uses ‘Serial in the large’ and ‘iterative in the small’ approach for building software. The Rational Unified Process activities for serial execution are:
1. Inception: In this phase, scope of the project is identified. Architecture of the system is prepared and the acceptance of the stakeholder is obtained for the same.
2. Elaboration: This phase focuses on the design of project. Complete plan for project is prepared
3.Construction: This phase focuses on actual implementation. Here the operational version of the project is prepared incremental basis.
4 . Transition: In this phase, the system is delivered to the stakeholder.
1) Modeling: Models are designed for the system using UML.
2) Implementation: Coding is done for each model
3)Testing: The code is tested to ensure correctness and expected functionalities.
4) Deployment: In agile context, it refers to the delivery of software increment and accepting feedback from the end user for the same.
5) Configuration and Project Management: Configuration refers to managing risk involved and changes required in the product. Project management refers to coordinating overall team activities, keeping track of project progress
6) Environment Management: It refers to coordinating infrastructure i.e. tools and technologies available for development to the team…….