Subscribe by Email


Showing posts with label Agile Development Methodologies. Show all posts
Showing posts with label Agile Development Methodologies. Show all posts

Friday, October 10, 2014

What are some of the limitations / challenges of Adaptive Software Development (ASD)?

The Adaptive Software Development (ASD) culture is the result of efforts of Sam Bayer and Jim Highsmith in the field of rapid application development. The methodology aims at developing software that is capable of adapting continuously to the changes in the working environment. In ASD, in place of the waterfall approach, we have cycles of speculating, collaborating and learning. It is because of this dynamic cycle that the software is able to adapt to changing state of the requirements and learn through it. The cycle is very much tolerant to changes, driven by the risk, timeboxed and works in iterations.
Throughout the process the ASD life cycle remains focussed on the mission. Since adaptive software uses the information available from the environment for improving its working pattern, with the increasing complexities it becomes difficult for it to gather usable information. The effectiveness of the adaptive software development is reduced by the complexities of the environment. Today we expect more from the software and in such critical situations in which we never expected earlier. Thus complex environments pose a great challenge. There are three dimensions that contribute to this complexity:
> Increasing number of users: Now not only professionals, everyone uses software.
> Increasing number of systems: More number of systems means more number of interactions between them. Most of the system networks that we have now are heterogeneous. Maintaining homogeneous networks is easy.
> Increasing number of resources and goals: The most common trade off that programmers make is between time and space. Now there are several other things to worry about including security, bandwidth, money, quality, resolution and so on.

These three dimensions make it even hard for the designers to design a system. It is impossible to predict about these factors and therefore always right decisions can’t be made. This results in a product with a short lifetime. Every now and then upgrades will be required for modifying the software. Other factors related to complex environment that pose a challenge for adaptive software are:
> uncertainty
> hidden inputs
> non – deterministic
> unique
> continuity
> real world

Other things that put limitations on adaptive software development are following 4 myths:
> The traditional belief is that the specifications must be determined first. But this is not the case always. One specification can be taken at a time and refined in later stages. The aim should be combining several components together successfully and not developing a single app.
> People usually believe by maintenance that program code has degraded. The truth is that it remains the same while its environment changes. So maintenance involves evolution of the code to satisfy these changing needs. When programmers view this through a maintenance perspective, they tend to preserve the old program structure.
> It is undeniable that abstraction has an important role to play in the development process. But when we treat a process as a black box object we are actually ignoring the practical problem it faces of resource usage. In adaptive software development we take a new approach called open implementation. Here the modules have two interfaces – one for input/ output and the other checking performance. These two interfaces are perpendicular to each other. ADS also adds a feedback mechanism to this orthogonal interface system making it much better.
> While designing software we consider all the possible alternatives. The desired one is kept and the others are rejected. This means that once a requirement changes, we again have to see what alternatives are available and which one can be implemented. This might require changing all of the program structure. The best thing here to be done is programming the system such that it reconfigures itself.


Sunday, June 10, 2012

What are the strengths and weaknesses of scrum?


Even though a lot of programmers and developers have been opting out for using scrum for the development of their projects, they had always faced some problems when implementing the scrum processes. These problems more or less are a consequence of the weaknesses of the scrum development method. 

However, in comparison to the weaknesses, the scrum has more number of strengths or plus points and this is what that makes the scrum so popular among the programmers and developers in spite of its weaknesses. 

According to a research, scrum was find to be weak in scrum training and certification. As we all know the scrum has always been looked up on as one of the best ways to implement the agile principles in the development process. All these modern agile software development processes like the waterfall, spiral and iterative models are quite different from the traditional approaches to software development. 

Problems and Misconceptions faced by Scrum Methodology


- One thing that really makes the scrum implementation weak is that programmers and developers think that implementing scrum itself is equal to agile implementation which is absolutely wrong! 
- Any software development process on a whole cannot be considered to be a complete agile process until and unless all the disciplines and rules of the agile management have been incorporated in to the development process.
- When one takes the scrum process to be equal to the agile process, then the agile disciplines go missing from the development process without the knowledge of the developer. 
- The developer thinks that he had implemented all the aspects of the agile management via the scrum which is a very false perception. 
- Many people do not understand that scrum is a software development process meant to achieve the goals of agility. 
- Scrum is a means and not a goal in itself. 
- Implementing the scrum without knowing about it in depth is like drawing up an empty process which takes you nowhere except that your time and efforts are wasted.
- When the scrum is simply thought of as a process so many formal activities that are carried out are a total waste. 
- There is another aspect to this weakness! This weakness in some cases becomes the strength of the scrum process making several problems visible to the developers. 
- But this is not the usual case since some developers may identify the problems found, themselves. 
- Plus if such problems are discovered during the implementation of the scrum then one more thing is obvious that the communication between the team members is not fluent and effective. 

Some developers and programmers may also blame the scrum for such problems. Here below we have summarized all the strengths and weaknesses of the scrum:
      
        1. Strengths:
a)  Encourages team work.
b)  Maintains transparency of the development process.
c)   Breaks down hierarchies.
d)  Keeps a focus on user features. (this is a weakness also in some cases)
e)  It is adaptive.
f)   Encourages visibility of the development.

      2.Weaknesses:
a)  Keeps a focus on user features: Focus on user features to some extent is ok but what if the process is totally in to it? A slow and clean approach always seems difficult to a team! Non functional requirements can be ignored since they don’t have any direct impact on the user.
b)   With scrum every team member needs to forget about his/ her area of expertise.
c)   Scrum is more useful to the companies that are product based rather than other aspects.


What is a scrum process and how does it work?


To implement the scrum development process, it is important to know how it actually works. Most of the errors in the development occur because of the lack of knowledge about the working process of the scrum. 

Scrum works on the principle of iterative and incremental development and it operates with the help of two types of roles namely:

  1. Core roles:
(i)                Scrum master
(ii)              Development team
(iii)            Product owner

  1. Ancillary roles:
(i)                Stake holders and
(ii)              Managers

What is a scrum process?


- The scrum process deals in terms of sprints which are usually called iterations for the other agile software development processes. 
- In a typical scrum, a sprint may have duration of a week to a month. 
- Scrum is facilitated by various meetings which have been mentioned below:

1. Daily scrum: 
This meeting is held during the sprint and is based up on the project status. Usually the core roles participate in this meeting. This meeting is time boxed to 15 minutes.

2. Story time (back log grooming): 
This process involves the estimation of the existing backlog and the acceptance criteria for the user stories is also refined. These meetings are time boxed to an hour.

3. Scrum of scrums: 
This meeting follows after daily scrum and is somewhat same.

4. Sprint planning meeting: 
This meeting is held before the beginning of every sprint and the tasks that have to be completed within that sprint are selected.

5. Sprint review meeting: 
It reviews the status of the sprint and also the tasks that could not be completed.

Principles on which working of scrum depends


The scrum follows the following three principles throughout its working:

  1. Working software is more valuable then the documentation.
  2. Response to the changes in requirements is more important than the plan.
  3. Team collaboration is important than contract negotiation.

How does a scrum process work?


- Usually the first few weeks of the scrum are spent working out the high level requirements including business needs and system architecture. 
- After this, the team produces the product backlog and sprint backlog. 
- These two backlogs together make the scope of the software project by the end of the week. - All the team member themselves take up the responsibilities and operational activities from each other during the daily meetings. 
- At the end of some sprints, it happens that some of the tasks could not be completed as planned so they have to be included in the next sprint in addition to the other tasks. 
- One of the reasons for such situations is the “scope creep”
- However, this does not turns out to be a real issue especially when the team is working closely with the business owners who have good understanding of the development process going on. 
- It should be understood that the scrum is a framework rather than just being a full methodology. 
- A detail of everything that is to be done is not provided by the client since it is decided by the team itself.
- At the end of the sprints the coding, testing, integration of the features is done. 
- In the sprint review, the newly added features to the software are demonstrated to the product owner. 

Reasons why scrum works well


There are several reasons why scrum works and few of them have been mentioned below:
  1. Iterative nature.
  2. Re assessment of priorities between iterations.
  3. The old check points are discarded when the team is doing something new.
  4. Availability of the product owner.
  5. The development team works on a single project at a time.
  6. The team has a chance to co- locate the entire development process.


Saturday, June 9, 2012

What are different scrum controls?


It happens in some of the cases that the whole scrum process comes on the verge of the collapsing! In such cases it is required that the management controls stay in order, undisturbed and firm all the times. 
There are many scrum controls; however the risk assessment continues to be the most valuable one with its impacts as well.

What are different Scrum Controls?


The below mentioned are the effective scrum controls:

1. Issues: 
Issues can be thought of as the obstacles that do not pose any major risk, defect or bug but cannot be considered to be a positive aspect for the software project.

2. Risk assessment: 
This is the most influential scrum control also as it influences the other scrum controls quite much. The success of the project depends largely up on this scrum control as well its impacts.

3. Packets: 
These are product elements pending for the modification in order to facilitate the implementation of the product backlog items in to the working software that is to be released at the end of the sprint.

4. Backlog: 
This backlog consists of all the details of the bugs, defects and the requests of the customers that could not be implemented in the current release and have to be incorporated in to the next release. In addition to all these, the backlogs also consist of the technology and functionality upgrades.

5. Solutions: 
These are the scrum controls occurring between the risks, problems and changes.

6. Release and Enhancement: 
After the risk assessment, this is the second most valuable scrum control for the entire development cycle. This scrum control at any point of time represents a viable release based up on the requirement variables.

How does these scrum controls help?


- Most of the above mentioned scrum controls are employed for the management of the product backlogs and the sprint backlogs. 
- These scrum controls are used for the following purposes:
  1. Managing issues
  2. Obtaining better solutions
- Even these controls are reviewed from time to time and modified or reconciled if and whenever required during the sprint planning meetings. 
- These scrum controls help control chaos that occurs during the development process. 
- All the above mentioned scrum controls play a great role in the following stages of the scrum:
  1. Defined processes
  2. Project cost
  3. Final product
  4. Responsiveness to the environment
  5. Completion date
  6. Knowledge transfer
  7. Team flexibility creativity
  8. Probability of success

Scrum, we can say is an enhanced version of the iterative and incremental object oriented development cycle. 
The software releases in a scrum are planned according to the below mentioned variables:
  1. Time pressure: Time frame required to make most of the competitive advantage.
  2. Quality
  3. Resource: It includes staff availability and funds.
  4. Vision (system vision)
  5. Competition: What is required to gain the competitive edge?
  6. Customer requirements: How the current system can be enhanced?
All the above mentioned can be modified according to the development plan during the project. But any processes carried out further should take these changed variables in to account. A system that requires a complicate and complex development process require appropriate control and maximum and efficient control.



What is a Scrum Framework?


Many a times you might have heard, “scrum is a framework rather than a full methodology or process”! Why scrum is said to be a framework and not a process? 
This article explains the scrum framework in detail and answer the above mentioned question to the best of my understanding.

Scrum Overview


- Scrum is an iterative as well as incremental process and has its foundation laid up on the principles of the agile software development. 
- The agile foundation of the scrum helps it to focus up on keeping the code as simple as possible, testing the code quite often and delivering the working releases of the software system or application as soon as possible when they are ready. 
- The goal of the scrum lies in the philosophy of building a small client approved release as the team continues to develop the project rather than delivering one whole large completed software system or application with many undesired aspects at the end of the development process. 

What is a Scrum Framework?


The scrum frame work is developed with the help of 3 core roles out of which first one is the “development team”. 
- When the scrum process is implemented for the development of a project, the development team is supposed to answer the following three questions:

  1. What they had accomplished since the last scrum?
  2. What they will do before the beginning of the next scrum?
  3. Did they encounter any stumbling blocks or hindrances?
- After the answers to these three questions are obtained, the sprint burn down chart is updated. 
- Next comes the role of the “product owner”, the person who holds the vision for the software project. 
- He/ she hold the responsibility for defining the software product and preparing a product backlog based up on the user requirements. 
- This product backlog is constituted of the user requirements listed in the order of their priority of the business values. 
- The product owner has the authority to accept or reject the work that has been done and change the priority of the features that are to be implemented in a sprint. 
- The scrum master has to supervise all these processes and remove impediments if any. 

Benefits of Scrum Framework


- The scrum framework works well with a team that has abilities like that of self organizing and cross functionality. 
- The frame work allows the development team to do everything to achieve the sprint goals but staying within the boundaries of the scrum principles. 
For the frame work to be properly implemented it is necessary that the sprint burn down chart should be high with the updates on a regular basis i.e., daily after the sprint review meeting. 
- The scrum frame work demands commitment to the sprint goals and the results are demonstrated to the product owner at the end of every sprint.

There are certain artifacts associated with the scrum framework which have been defined as follows:

  1. Product backlog: Ordered log the user requirements based on the priority level of the business values. Created by product owner.
  2. Sprint backlog: Created by the development team. Log of the tasks that are to be accomplished during the sprints. Obtained from the user stories.
  3. Increment: Sum of all backlog items completed in the current sprint + backlog items completed in the previous sprints.
  4. Sprint burn down chart: This chart provides the project stats.
From all the above discussion it won’t be wrong to conclude that scrum forms a type of “inspect and adapt” frame work.  Scrum is a quite easy to understand consisting off just 4 ceremonies, 3 core roles and 4 artifacts. 


Friday, June 8, 2012

What are the values involved with scrum?


Since the invention of the scrum software development process, it gradually became popular among the programmers and developers because of its values. 
In this article we are going to discuss about the values that made the scrum development process quite popular in the field of the software engineering. 

Values associated with Scrum Methodology


The scrum is known to support the values of:
  i) Commitment
 ii) Focus
iii) Respect
iv) Openness and
 v) Courage
The scrum is said to be powered by the above mentioned values. It may seem like following so many of the values might be so difficult! But to be honest there is nothing like that in scrum and this is what makes the scrum as one of the best agile software development methodology. You just have to follow these values to the maximum extent you can and later on it is taken care of by the development process itself.

1. Commitment
- Commitment as we know is an art in itself i.e., it is the art of binding oneself with the task at hand. 
- According to the philosophy behind the scrum software development process,  a person can only act if he/ she can commit himself/ herself to the task or work whatever the case may be. 
Normally, it happens that we work in a state of inaction, which means we work quite unwillingly. 
- Scrum helps you to commit to the tasks. 
- For a genuine scrum process usually high levels of commitment have been observed. 
- The authenticity of a scrum process is maintained by the level of commitment of the members of the development team towards the whole development process.

2. Respect
- Respect is a value that is considered to inculcate a feeling of self esteem in a person for others as well as for oneself and also towards the work that is being done.
- There is no doubt regarding whether the scrum supports this value or not! Of course it does. 
- According to the philosophy of the scrum, no positive communication can be developed without a feeling of respect towards one’s and towards all.
- Due to a lack of respect there are possibilities of misunderstandings developing among the team members which in turn may hurt the sentiments of the people. 
- This is another value that plays an important role in maintaining the authenticity of the scrum process. 
- Respectful iterations are needed.

3. Focus
- By focusing on a particular task you concentrate all your attention on a task. 
- This value is encouraged by the scrum since according to its philosophy without focus, you cannot pay attention to any task in any meaningful way. 
- Without focusing, learning cannot be done in a meaningful way either.
- For a scrum process to be quite genuine and authentic, high levels of effective focus are required.

4. Openness
- Openness is a value of the character or behaviour of an individual defining one’s attitude of ready accessibility.
- It means one’s actions do not speck of secrecy and concealment. 
- Scrum has a habit of dealing only with openness. 
- Scrum involves extensive sharing of information among the team members. 
- This value increases the transparency of the whole development process. 
- In a genuine and authentic manner, everyone knows everything about the process and the project.

5. Courage
- Courage is strongly supported by the scrum because the truth about the reality becomes obscured when nobody speaks out regarding it. 
- Often it happens that many of the team members feel very insecure while describing the reality, they fear they might get fired. 


When should scrum be used and when should it be avoided?


There are conditions and situations encountered while the development of a software system is in process in which only one specific development methodology can be implemented! 
It does not mean that any software development methodology can be implemented any time and any where! This holds true for all the software development methodologies and so for scrum too! 
In the recent years of the use of the scrum development method, it has been observed that many developers and programmers have faced problems while implementing the scrum in the development process of their software product, project or application etc. The nature of the scrum development methodology should always be kept in mind while implementing it. 

What is Scrum Methodology?


- Scrum represents a light weight agile process frame work that primarily finds it use in the management of the software development process. 
- The scrum has been recognized under the category of light weight agile process frame works since it involves the use of very few elements, 3 core roles (namely the scrum master, development team, product owner) and three main artifacts (namely sprint backlog, product backlog and burn down chart). 
- With scrum, the rate of response to the ever changing needs of the customers is improved. 
Scrum cannot be called as a mere process but a frame work since it is composed of several concepts and practices that together can be used to build several combinations of processes.  
The iterations in a scrum process are cyclic in nature i.e. the iterations are repeated in every few weeks. 
- The requirements are supplied by the product owner as the user stories. 

When should scrum be avoided?


There are cases in which the scrum should be avoided! They have been mentioned below:
Case I: 
Implementing scrum in a problem for whose domain it is not compatible and
Case II: 
Implementing scrum in a development processes whose processes are against that of the scrum principles.
Case III: 
When the development processes of an organization works actively or passively against the principles of the scrum, then the scrum cannot be fully used here. 
Case IV: 
The scrum spirit is also threatened whenever a faux scrum is implemented by the company.
Case V:
Scrum can go wrong when the company involves too many people in the development process of so many projects! This phenomenon is called matrixing.
Case VI:
When the teams cannot commit to a fixed scope of work during a week, the scrum can not be implemented for that project since the scrum processes demand commitment. 

When should scrum be used?


There are cases in which scrum is used. 
Case I:
Scrum can be used well till the company is not bothered about the process that is being used at the team level and is not against the scrum values. 
Case II:
Also implementing scrum in a holistic way is itself an art and requires faith in scrum development process. 

Matrixing at the level of the scrum master is somewhat ok but may pose as a hindrance in the way of scrum. Matrixing is ok as far as the people involved in it have high knowledge and IQ levels. 

Usually teams like production support, network support and so on encounter this kind of problem with scrum. You should be careful while fixing the scope since if it’s too much for the team than your team can experience some serious dysfunction. In some cases if you are advocating for scrum, it may prove to be a disaster for you lest you know how to embrace it! 


Facebook activity