AGILE SOFTWARE DEVELOPMENT UNIT-I NOTES




 UNIT - I

                 Question :- Explain the Agile Software Development Life Cycle (SDLC)? 

Answer----> Software development life cycle (SDLC) is a phenomenon to design, develop and, test high-quality software. The primary aim of SDLC is to produce high quality software that fulfills the customer requirement within times and cost estimates. 


Agile Software Development Life Cycle (SDLC) is the combination of both iterative and incremental process models. It focuses on process adaptability and customer satisfaction by rapid delivery of working software product. Agile SDLC breaks down the product into small incremental builds. These builds are provided into iterations. 




In the agile SDLC development process, the customer is able to see the result and understand whether he/she is satisfied with it or not. This is one of the advantages of the agile SDLC model. One of its disadvantages is the absence of defined requirements so, it is difficult to estimate the resources and development cost. 


Each iteration of agile SDLC consists of cross-functional teams working on various phases: 

1. Requirement gathering and analysis 
2. Design the requirements 
3. Construction/ iteration 
4. Deployment 
5. Testing 
6. Feedback 

Requirements gathering and analysis 

In this phase, you must define the requirements. You should explain business opportunities and plan the time and effort needed to build the project. Based on this information, you can evaluate technical and economic feasibility. 

Design the requirements 

When you have identified the project, work with stakeholders to define requirements. You can use the user flow diagram or the high-level UML diagram to show the work of new features and show how it will apply to your existing system.

Construction/ Iteration 

When the team defines the requirements, the work begins. The designers and developers start working on their project. The aims of designers and developers deploy the working product within the estimated time. The product will go into various stages of improvement, so it includes simple, minimal functionality. 

Deployment 

In this phase, the team issues a product for the user's work environment. 

Testing 

In this phase, the Quality Assurance team examine the product's performance and look for the bug. 

Feedback

After releasing of the product, the last step is to feedback it. In this step, the team receives feedback about the product and works through the feedback. 



Question :- Discuss the Agile SDLC Process Flow? 
Answer----> 
       1. Concept: Project are imagined and prioritized. 

        2. Inception: Team members are created, funding is put in place, and basic                               environments and requirements are discussed. 

        3. Iteration/Constriction: The software development team works to deliver working               software. It is based on requirement and feedback. 

       4. Release: Perform quality assurance (QA) testing, provides internal and external                    training, documentation development, and final version of iteration into the product. 

       5. Production: It is ongoing support of the software. 


Question :- What are the Advantages of Agile SDLC? 
Answer-----> 
      1. Project is divided into short and transparent iterations. 

      2. It has a flexible change process. 

      3. It minimizes the risk of software development. 

      4. Quick release of the first product version. 

      5. The correctness of functional requirement is implemented into the development                      process. 

      6. Customer can see the result and understand whether he/she is satisfied with it or not. 


Question :- What are the Disadvantages of Agile SDLC? 
Answer-----> 
     1. The development team should be highly professional and client-oriented. 

      2. New requirement may be a conflict with the existing architecture. 

      3. With further correction and change, there may be chances that the project will cross                the expected time. 

      4. There may be difficult to estimate the final coast of the project due to constant                        iteration. 

      5. A defined requirement is absent. 


Question :- Discuss the Agile Project Management? 

Answer----->Agile project management is an interactive approach to manage software development. The agile project management focuses on continuous releases and covers customer feedback with every iteration. 

Traditionally the agile project management is classified into two frameworks: scrum and kanban. The scrum framework focused fixed-length project iterations, whereas kanban framework focused on continuous releases. After competition of project first iteration (or steps) project management activity immediately moves on to the next. 


Question :- What is the History of Agile Project Management? 

Answer-----> Agile project management is rapidly rising in the 21st century. It is used for software development projects and other IT initiatives. 

However, from the mid-20th century, the concept of continuous development has taken various forms. For example, there was James Martin's Rapid Iterative Production Prototyping (RIPP), an approach that served as the premise for the 1991 book Rapid Application Development (RAD).

The agile project management framework which has emerged in most recent years is known as Scrum. This methodology features works on the development team to create a product backlog. It also creates a prioritized list of the features, functionalities, and fixes required to deliver a successful software system. The scrum team offers the pieces of a task in rapid increments. 


Question :- How Agile Project Management works? 

Answer----->  The agile project management calls for teams to regularly evaluate cost and time as they move through their work. They use velocity, burnup and burndown charts to measure their work, rather than Gantt charts and project milestones to track progress.

The agile team practices to continuous development and continuous integration using technology that automates steps to speed up the release and use of products.  

The presence and participation of the project manager are not required in agile project management. Although the presence of the project manager is essential for success under the traditional (waterfall model) project delivery. The role of the project manager is to distribute task among team members. However, the project manager is not obsolete in agile project management, and many organizations use them in a large, more complex project. The organization mostly places them in the project coordinator role. 

Agile Project Management demands that team members know how to work in this new agile methodology. The team member must be able to coordinate with each other, as well as with users.


Question :- Discuss Traditional vs. Agile Software Development Methodologies? 

Answer----->  Most companies today focus on delivering quality and gaining customer satisfaction and in order to accomplish this, the challenge lies in choosing between traditional development methodologies and agile development methodologies.
 
Though both these approaches have positives and negatives, making the right choice plays a crucial role while starting a new project. The main points to consider while choosing your development methodology are as follows: 

• Business Need – Impact of implementing specified requirements, on customers’ business 
• Customer Perception – Customer perspective of business impact 
• Project Timeframe – Defined timeframe for the real-time implementation of the project 

Question :- What are the Traditional Software Development Methodology? 
 
Answer----> Traditional software development methodologies are based on pre-organized phases/stages of the software development lifecycle. Here the flow of development is unidirectional, from requirements to design and then to development, then to testing and maintenance. In classical approaches like the Waterfall model, each phase has specific deliverables and detailed documentation that have undergone a thorough review process.

Traditional approaches are suited when requirements are well understood – for example, in industries like construction, where everyone clearly understands the final product. On the other hand, in rapidly changing industries like IT, traditional development procedures might fail to achieve project goals. Below are the major disadvantages of traditional SDLC methods. 

• Problem statement / business need has to be defined well in advance. The solution also        needs to be determined in advance and cannot be changed or modified. 

• The entire set of requirements have to be given in the initial phase without any chance of      changing or modifying them after the project development has started. 

For example:-  the user might have given initial requirements to analyze their products in terms of sales. After the project has begun, if the user wants to change the requirement and analyze the data on the region-wise movement of products, the user can either wait till the completion of initial requirements or start another project.
 
• The user cannot conduct intermediate evaluations to make sure whether the product              development is aligned so that the end product meets the business requirement. 
• The user gets a system based on the developer’s understanding and this might not always       meet the customer’s needs. 
• Documentation assumes high priority and becomes expensive and time consuming to            create. 
• There are less chances to create/implement re-usable components. 

These disadvantages hinder project delivery in terms of cost, effort, time and end up having a major impact on customer relationships. 

• Testing can begin only after the development process is finished. Once the application is       in the testing stage, it is not possible to go back and edit anything which could have an         adverse impact on delivery dates and project costs. 
• Occasionally, projects get scrapped which leads to the impression of inefficiency and             results in wasted effort and expenditure. 

Traditional development methodologies are suitable only when the requirements are precise i.e., when the customer knows exactly what they want and can confidently say that there won’t be any major changes in scope throughout the project development. It is not suitable for large projects such as maintenance projects where requirements are moderate and there is a great scope for continuous modification. 

Question :- What are the Agile Software Development Methodology? 

Answer----->  Unlike the traditional approaches of SDLC, Agile approaches are precise and customer friendly. Users/Customers have the opportunity to make modifications throughout project development phases. The advantages of Agile over traditional development methodologies include: 

• Though the problem statement/business need and solution are defined in advance, they           can be modified at any time. 

• Requirements/User Stories can be provided periodically implying better chances for               mutual understanding among developer and user. 

• The solution can be determined by segregating the project into different modules and can       be delivered periodically. 

• The user gets an opportunity to evaluate solution modules to determine whether the               business need is being met thus ensuring quality outcomes.
 
• It is possible to create re-usable components. 

• There is less priority on documentation which results in less time consumption and                 expenditure. 

Agile proposes an incremental and iterative approach to development. Consider Agile Scrum Methodology to get good understanding of how Agile processes work. Scrum Master plays an important role in Agile Scrum Methodology. 

 A Scrum Master interacts daily with the development team as well as the product owner to make sure that the product development is in sync with the customer’s expectations. The following diagram illustrates the lifecycle process in Agile methodologies. 





During project inception, the customer splits the initial set of requirements into User Stories. The Scrum Master or Product owner organizes these User Stories and segregates them into different Sprints. In general, Sprint contains 3-4 User Stories to be delivered in 4 to 5 weeks, these are approximate figures and they will be decided based the complexity of user stories. 

 Once the Sprint planning is done, the selected User Stories are once again split into Tasks so that the developer can have a clear roadmap to deliver quality output. At the end of each Sprint, the customer gets a chance to review and predict the final outcome and can propose changes if any. 

The main difference between traditional and agile approaches is the sequence of project phases – requirements gathering, planning, design, development, testing and UAT. In traditional development methodologies, the sequence of the phases in which the project is developed is linear where as in Agile, it is iterative. Below picture illustrate this difference.




The main project variables like cost,time,quality etc.., can be compared as shown in the following picture.




Things like project scope and requirements change during the project which make IT projects different from construction or engineering projects. Agile methodology like Scrum is preferable in projects involving large teams where we can expect frequent changes in requirements. As development phases like requirement gathering, design, development and testing can start in parallel, the entire team can be engaged in respective areas which increases productivity and speeds up the development process. 

Question :- What are the Key points while making the transition from Traditional to Agile methodologies? 

Answer---->
  • Identify the factors which made the transition necessary 

  • Everyone, including the user, should be clear about the reasons which lead to the                  transition 

  • Identify whether it is a small project or big project 

  • Note the current stage of the project to be transitioned, whether development has started        or is yet to start 

  • Make sure the team has a good understanding of the new approach and have adapted to        their respective roles as per the new approach 

  • Arrange necessary training for the team 

Question :- What are the agile Team Role Interactions? 

Answer----> Here are the three common roles found on an agile team: 
  
1. Cross-functional team member–in keeping with the non-hierarchical structure of the            agile team, the cross-functional team member is mentioned first, and NOT the product          owner or team facilitator.  They are professionals who deliver potentially releasable              product on a regular basis.  They need to deliver work in the shortest possible time, with        higher quality, without external dependencies. 

2. The product owner interacts with the customer and stakeholders as well as the team, and they pay attention to the highest value for the customer. They typically have a business background and have deep subject matter expertise.   They create the backlog for and with the team, in a way that delivers the highest value without creating waste. 

3. This role can be called various names, such as a project manager, scrum master, as well as a team lead, couch, or facilitator.  The servant leader, no matter what he or she is called, needs to focus on facilitation of the work done by the team, impediment removal, and coaching.   If the servant leader feels their internal coaching capability is not yet fully developed, then they may invite external agile coaches. 

Question:-How do they interact with each other, with the customers for whom the project is being done, and the organization which is doing the project?
 
Answer---> Well, bear with me on this, but an analogy came to me yesterday while I was taking a shower–it’s like how soap works to get things clean.   A soap molecule must combine water and the substance that is being cleaned, including if it is covered in something oily like grease, and essentially have the water molecules carry away the dirt off the surface being cleaned. 

One problem with this is that water and oil do not normally mix.   The soap molecule has a special structure which is that at one end, it attracts water (it is hydrophilic to use the technical term).   

 The other end repels water but is compatible with oil because it is itself composed of fatty acids.   The soap molecule, by combining these two properties in the same molecule, can therefore make water and oil mix, causing the oily dirt to be carried away when the water is washed away. 

The product owner faces the customers and communicates their requirements to the cross-functional team members.   The cross-functional team members are the ones who are trying to create a solution, so they are, like water molecules, trying to break apart the problems being handed to them by the product owner, who gets them from the customers.  The customers and the cross-functional team members are like the “oil” and “water” that have to work together to get the solution done. 

And what causes them to be able to work together, when their roles are so different?   That is the team facilitator (who may also be called a project manager, scrum master, or other designation)– he or she holds the team together by facilitating, coaching if necessary, and removing impediments that would prevent them from working cohesively. 

So the team facilitator has to face both the team AND the product owner in order to make sure that the solutions that the team come up with are communicated to the customer so that the customer is pleased with the product. 
 

Question :- Explain the Ethics in Agile Teams ? 
Answer---->  You should consider adopting agile because it is the ethical option. This is not to say that non-agile methods are unethical, nor is it to say that all agile teams are working ethically. Instead this ethical choice is about embracing a method that is value-driven—both in the promise of providing value to the customers and in the promise of the ways we choose to work together to provide that value. 

The Merriam-Webster definition of ethics is "the discipline dealing with what is good and bad, and with moral duty and obligation." If we examine our moral obligation as software developers, our first task is to provide value to our customers. That is why we were hired, and that is what the customers are paying for. We have a responsibility to deliver. Agile approaches provide a framework that enables frequent delivery of precisely what the customer needs with as little waste as possible. 

While we are obligated as professionals to provide a valued product to our customers, it should not be at the expense of those doing the work (or those supporting the people doing the work). Our second obligation is to treat the team humanely. If we do not create and maintain an environment that allows the team to do challenging and fulfilling work at a sustainable pace, then we are failing to treat these knowledge workers with respect. This also affects our first duty in that an overworked, demoralized team may not be able to give its best effort at creating a valued and quality product. Review the Agile Manifesto and its twelve principles to see the set of values that drive behavior in a positive and sustainable fashion. 

In addition to the Agile Manifesto, two of the most popular agile approaches, Extreme Programming (XP) and Scrum, advocate specific values. (Again, this is not to say that other software development approaches do not have values—just that XP and Scrum explicitly spell them out.) 

Ken Schwaber identified the following five Scrum values in his book Agile Software Development with Scrum: commitment, focus, openness, respect, and courage. Kent Beck identified these five XP values in his book Extreme Programming Explained: communication, simplicity, feedback, courage, and respect. While many trainers focus on the practices to get new agile teams up and running, it is the values that will keep the team truly agile long after the trainers and coaches leave. 

Commitment: It's not enough to be assigned to a team and agree to try this new agile thing, and it's not enough simply to be dedicated. One must also be committed to doing whatever is necessary to meet the goals outlined and to take the authority to do so to heart. It means "to carry into action deliberately" (Merriam-Webster) or, as Yoda says, "Do, or do not. There is no try." 
 
Focus: Don't get sidetracked. Remember what you committed to do, and focus your energies on fulfilling that promise. Distractions are not limited to the obvious things like email and unrelated meetings. They may also be things like creating documentation because "we've always done it that way" instead of creating documentation because it truly provides the customer with something of value. 
 
Openness: Openness is about keeping the project status highly visible to everyone all the time. Anyone who is interested should be able to look at a wall, a wiki page, or a dashboard in an agile project management tool and see how many features have been completed, what's currently being worked on, and the goals of the iteration and release. 
Communication: People on the team must talk to each other. This gets harder to do the more geographically separated the team is, but with tools like Skype, teams can talk to one another easily and cheaply. The point is that team members must not rely on email and documentation alone. Verbal communication is required to clarify ideas, solve complex problems, answer questions quickly, and help team members coordinate work efforts. 
 
Simplicity: Beck says the XP coach should ask the team, "What is the simplest thing that could possibly work?" Then they should do that thing. Because agile approaches develop code in increments each iteration, the thought is that it is better to develop something simple that may have to be expanded later if needed, rather than spend a large amount of time now developing a solution that's more complicated and may, in fact, not be necessary. 
 
Feedback: As stated earlier, our number one obligation is to provide value to the customer. In order to do that, we must obtain frequent feedback from the customer or customer representative in order to make sure that the product we are building is meeting their expectations. And if it is not, we have the information we need now in order to make corrections. Beck extends this meaning of feedback to include feedback from the system itself in the form of unit, functional, and performance tests run frequently in each iteration. 

Courage: In order to accept the authority and accountability for the delivery of the product, the team members all need courage. From the courage to make decisions to the courage to say no, this is a foundational value that gives rise to all the others. 
 
Respect: Each team member must begin by agreeing that everyone deserves to be treated with respect. Many teams clarify this with working agreements that outline ways in which they choose to work together. And, as a result of working together to adhere to all the other values outlined here, team members grow to respect one another beyond their shared humanity to the ways each valued colleague contributes to the whole. 
 
Adhering to a set of values that drive positive, collaborative behaviours and result in frequent software delivery helps us to work in an ethical manner.
  
This is what agile is all about! Yes, agile also allows companies to decrease their time to market, increase quality, and eliminate waste in the process to provide a greater ROI to the organization. And you'll find plenty of articles about these benefits as well. But the realization of these benefits is not based just on the adoption of a set of practices; the value system must also be adopted if the approach is to work properly. So, as you consider adopting agile, also think about whether or not your organization's values match those of agile—and what you may want to do if they don't. 

Question :- Discuss the complete Agile Design? 

Answer---->  Design plays a vital role in any software development process. The agile team also focuses on "what to do about design" because of the following four factors: 

o Many crucial factors focus on loyal designs during the planning process. Design forces         towards waterfall culture throughout product implementation. 

o Designers also interact with a cross team for a limited time. 

o Designers don't always have an easy way to report feedback to the engineering team. 

o The presentation and logic layers are not still transparent. They are not separated clearly       in the code base, making style changes difficult. 

The product design process and customer interview 

The agile is divided into several methodologies and processes. These methodologies and processes keep the iterative and free-flowing nature of the technique at their core.  

The agile design and development methodology used especially in engineering development, and this process called Scrum. 
 

Customer interviews can be an informative part of the project design phase. We will have several of those "light bulb" movements during interviews. It encourages the people who are interviewing with other members of the team (engineering, marketing, design, etc.) 

There are several resources that are available on which we conduct an interview- the logistics, methods, and techniques. 

The customer interview pyramid 

Atlassian is a simple framework that helps in building the customer interview pyramid. This pyramid looks like as 
 


Communication Observation: At the bottom of the pyramid, we will get the very minimum. We should all come back from an interview and be able to list observations as we don't need any experience to regulate what you've seen. 

Interpret problems: Above the Communication Observation, it is an interpret problem. It is explaining the user's behavior and grouping them with an over-arching problem statement. 
 
Connecting opportunities: This is the peak of the pyramid where the most value comes in combining the problem with potential opportunities or related patterns. This helps influence a roadmap and make decisions about what to tackle next. 
 

 
UNIT -1   END.................
Written by- Salman Khan


Post a Comment

2 Comments

  1. nice informative post. Thanks you for sharing.
    We are an experienced team in one of the Best software company and product specialist for software development and implementation. Sovereign provides Website Design, Wordpress Development and Mobile App Development, Digital marketing and SEO Services.
    Wordpress Development
    Agile Development

    ReplyDelete