Subscribe by Email

Thursday, May 31, 2012

What is an Agile Process?

Agile process is a process that is taking up the field of software engineering for the good. In this article the topic of the agile process has been taken up in depth. 
Agile processes or agile software development processes constitute a group of processes that are based up on the principles of the agile values and principles and follow up the idea of the iterative and incremental development for developing the software products. 

Here the solutions to the software problems are meant to be evolved via the collaboration between the development teams having characteristics like:
     1. Self organization and
     2. Cross functioning

The agile process are known world wide for the promotion of the following features:
     1. Adaptive planning
     2. Evolutionary development
     3. A time boxed iterative approach
     4. Flexible and rapid response to the change in requirements.


What is an Agile Process?

- Agile processes can be thought of as a conceptual frame work promoting the above mentioned aspects plus the foreseen interactions that take place throughout the development cycle. 
- The term “agile processes” came in to existence by the virtue of the agile manifesto in the year of 2001. 
- The concept of the agile processes is not so new to the software industry. 
- The incremental software development aspect of the agile development can be dated back to the year of 1957.  
- The category of the light weight software development methodologies houses all the agile software development methodologies. 
- The agile processes were first mentioned in the “manifesto for agile software development”. 

Principles that govern Agile Process

There are 12 principles that govern the agile processes as mentioned below:
1. Rapid delivery of the software that is useful to the customer.
2. To accept the changes in the requirements in all the phases of the development process.
3. Frequent delivery of the working software.
4. A principal measure of the progress is the working software.
5. The development takes place at a constant pace known as the sustainable development.
6. Daily co- operation takes place between the developers and the clients.
7. Face to face conversation is maintained.
8. The project is centered around the motivated individuals who are trust worthy.
9. Regular attention is paid to the design and the technical excellence.
10. Simplicity is maintained.
11. Self organizing teams.
12. Ability to adapt to the changing circumstances.

Till date so many agile software development methods have come up and they are known to promote the following elements:
1. Team work
2. Collaboration
3. Process adaptability

- These elements are promoted all along the development process and throughout the development cycle of the software project.
- The main methodology of the agile processes is that the problem is broken down in to small increments or iterations and is developed according to the short term planning rather than using the long term planning. 
- These iterations are nothing but kind of short frame works having duration of development ranging from one to four weeks. 

Activities in Agile Process

Full agile software development iteration includes the following activities:
1. Planning
2. Requirements analysis
3. Design
4. Coding
5. Unit testing and
6. Acceptance testing

More about Agile Process

- The agile processes are known for their typical strategy that works on minimizing the risk to a great extent. 
- The documentation is produced by the stake holder as and when required.
- The goal here is develop a release that is available as a sample but not for market release. 
- A market release is facilitated by multiple iterations.
- The work burden is divided by the individual team members among themselves. 
- For the agile development the team needs to be in the same region and size of the team is typically small at the most ten members. 

What are the differences between waterfall, spiral, iterative and scrum processes?

The waterfall, spiral, iterative and scrum are all agile software development models! At a glimpse of them, they may all seem like similar software development processes. But this is absolutely wrong! At surface they may appear to be one and the same but when you go in to the depths of the understanding of these processes you will come to know that there is a “considerable” difference among them. 
In this article we are going to discuss among all these processes. Let us go through these processes one by one:

1. Waterfall Model: 
- Waterfall model follows a sequential design rather then following a haphazard order of processes. - By the name itself you can make out the flow of the development is downwards like a water falling down an actual waterfall. 
- Most of the agile software development models have same number and types of phases, but the way they are implemented is different.
- The waterfall model can only be implemented in the software projects that require highly structured development environments. 
- This is the only agile development process that can be adapted for both the hardware and software projects. 
- If you have implemented waterfall model for the development project you cannot move on to the next phase before completing the previous one.
- However, in some very extreme cases, the developers hold the privilege to modify it to suit their needs. 
- The water fall model is based up on the philosophy that if you spend more time in the early phases looking for the errors and faults, the less time and effort will be spent in the later stages which are quite complex too.

2. Spiral Model:
- This software development model is a resultant of the combination of prototyping in stages and designing and thus possesses the combined advantages of both the top down and bottom up concepts. 
- Unlike the other software development processes, the spiral model is intended for use in the projects that are quite large, expensive and complicated. 
- Prototyping is nothing here but the iterative development combined with the controlled aspects of the waterfall model.
- It does allow for the incremental releases of the software at the end of every refinement. 
- Unlike the waterfall model, the spiral model is inclusive of the risk management for the identification of the major risks whether managerial and technical and determines how to lessen it. 
This model evolves around the idea of the continuous refinement of the requirements definition, requirements analysis, implementation and software design and so on. 
- This model makes use of the same stages as the waterfall model but they are separated by risk assessment, planning and building of prototypes and simulation. 
- Documentation is produced whenever needed and not unnecessarily.

3. Iterative and Incremental Development: 
- This software development model was developed as a means to overcome the minus points of the waterfall model. 
- Unlike the other software development processes, this one starts with a lot of initial planning and continues with many cyclic interactions and finally ends with deployment.
- This software development model in turn forms a very important part of many other agile software development process like RUP and extreme programming. 
- The iterative and incremental development model is known to follow plan- do- check- act cycles of the business process improvement.

4. Scrum: 
- Scrum is so contrasting with all the other software development processes. 
- The waterfall model is intended to complete the project in one discipline one step at a time and goes for the next discipline in next step. 
- It delivers the business value at the end itself but this is not the case with the scrum!
- Here with every iteration a business value is delivered.

Wednesday, May 30, 2012

Explain the concepts of URL manipulation?

Today in this internet savvy world, I guess almost everybody is familiar with what is an URL or uniform resource locator. 
If you see an URL, you can make out that it is nothing but a string of characters. These characters add up to mark up a reference string which points to a source from internet. A uniform resource locator was previously known as uniform resource identifier.
The URLs came in to existence in the year of 1994 along with the introduction of the World Wide Web by Sir Tim Berners – Lee along with the contributions from the internet engineering task force. 
The format of a typical URL consists of the domain names along with the file paths and the forward slashes are used to distinguish between the different file names and folders. Name of the servers are preceded by a double slash. 

Components of URL

Let us now list the components of a typical URL in the order in which they are lined up in the URL:
  1. The scheme name which is usually a protocol.
  2. The scheme is followed by a colon
  3. Two slashes
  4. Name of the domain (if any depending on the scheme).
  5. A port number
  6. CGI (common gateway scripts) scripts
  7. Query string
  8. Fragment identifier (optional)

Categories of URL

- The URLs are categorized under two categories namely relative URLs and absolute URLs. 
- The relative URLs are used whenever the references contained in the resources refer to another resource. 
- These relative URLs are often conceived from the absolute URLs. 
- The URLs locate a resource based on their primary access mechanism. 
- There are various issues related to URLs like URL normalization, URL manipulation etc. 

What is meant by URL Manipulation?

- URL manipulation is just another name for URL rewriting.
- As the term itself suggests it is all about altering the parameters of the URL.
- The URL manipulation is used for good purposes also and for bad ones also. 
- It is a technique that is usually employed by the web server administrator for convenience and is often used by the hackers for nefarious purposes. 
- The original URLs of the resources are quite complicated and complex. 
- Therefore, a purpose of this technique is also to make it easy for the user to access a web resource by providing a simple URL. 
- URL manipulation technique is used so that the user does not require cutting, copying or pasting long and arcane string of characters. 
- This technique is also employed since remembering complex URLs is a difficult task and they are quite lengthy which makes it quite a tedious task for the users to remember or store it and use. 
- Therefore, using the technique of URL manipulation they are modified in to simple and short URLs which are comparatively easy for the users to remember. 

Wrong Use of URL Manipulation
- A nefarious use of URL manipulation is to use the URL of a legitimate site or web resource without the prior permission or knowledge of the site owner or administrator to redirect the users to an illegitimate web site or web resource. 
- Such illegitimate sites then may install malicious code on the hard drive of the user’s system.
- This may also have an intended purpose of increase the traffic on the attacker’s illegitimate web site or application.
- There is a term similar to the term URL manipulation called URL poisoning. These two terms may sound similar in meaning, though they are not. 

What is URL Poisoning?

- URL poisoning is a technique that is employed to track the activities of the user on the web. 
- This technique involves the addition of an identification number to the current URL of the web browser when that particular web site is visited by the user. 
- This URL with the ID number is then used for tracking the visits of that user on the sites.

What is a Unified Process? What are key practices and guidelines for unified process?

What is Unified Process?
- Unified process is actually the short name for the USDP or the unified software development process.
- This software development process has recently emerged as a very popular incremental and iterative software development process frame work. 
- There are some methodologies defined under the category of the unified process and the one that is most commonly implemented and extensively documented in the rational unified process known as RUP in the abbreviated form. 
- The concept of the unified process is very vast and it cannot be merely called as only a process! Rather it can be thought of as an extensible frame work which is customizable according to the needs of the software project or the specific organizations. 
- Concluding from this, the rational unified process can also be called a customizable frame work. 

However the name “unified process” in quite opposing to the rational unified process generally marks the generic processes that include the elements that hold common for most of the refinements. 
In addition to this this name also avoids the potential issues of the trade mark infringement that arise since the RUP and the rational unified process are the trademarks of the IBM. 
The unified process was first mentioned and described in detail in a book by Ivar Jacobson, James Rumbaugh and Grady Booch called “the unified software development process” in the year of 1999.

Six Practices of Unified Process

The unified process deploys the following 6 key practices of software development:
  1. Development of the software in iterations: Increases understanding of the problem through successive refinements. An effective solution is achieved over several increments.
  2. Management of requirements: Involves elicitation, organization and documentation of the required constraints and functionalities, trade offs and so on.
  3. Implementation of component based architectures: A robust executable architecture is subjected to baselining first and then resources are deployed for full scale development. Promotes resiliency of the architecture.
  4. Visual modelling of the software: This practice helps capture the behaviour of the architectural components of the software system.
  5. Verification of the software quality: Poor reliability and poor performance are the factors that weigh down the quality of the software system or application. This practice reviews the software quality.  
  6. Controlling changes that are to be made in the software: This practice ensures that the changes to be incorporated are acceptable and won’t hamper the performance. 
Developers often want the answer for the question, "how do I know if I’m implementing the unified process properly?" There is no certain answer for this question but there are certain guidelines which if followed properly can keep the process on track:
  1. Figure out the major risks early and regularly or they will hamper the performance of your software system.
  2. Ensure the value that you are going to deliver to your customer.

Tuesday, May 29, 2012

When should Extreme Programming be used?

Extreme programming or XP as it is commonly called as has been known to be a very effective and reliable agile software development methodology having its foundation laid up on the principles of agile development. 
The first ever project that made use of extreme programming was done in the year of 1996 in the month of March. The project was quite successful and since then many companies of different sizes began using the extreme programming software development methodology for developing their software products all over the world. 

The extreme programming works out successfully every time since it stresses the satisfaction of the customers. The extreme programming does not makes promises that it will deliver the software with all the possible ways you expect it rather it delivers the software product with all the features that you require the most. 
The developers are empowered in a way to confidently respond to the ever changing needs of the customers in whichever stage of the development cycle required. 

How Extreme Programming improves the quality of software?

5 ways have been defined in which the extreme programming helps in improving the quality of the software and its productivity:
1.     Communication
2.     Simplicity
3.     Feedback
4.     Courage and
5.     Respect

When the Extreme Programming should be used?

- A software development process does not suit for all the types of the software projects.
- Extreme programming must be employed for the complex projects which require a clean and simple design void of any bombastic jargon. 
- The simple rules of the extreme programming make it easy to be implemented in most of the software projects.
- Extreme programming elements individually do not make any sense but do make sense when put together. 
- These elements and rule may seem to be very awkward at first but they are based up on sound principles and are guided by sound rules. 
- The extreme programming makes the whole development process very collaborative and works well with the projects in which the active participation of the customer is required. 
- In extreme programming once the product team work is achieved, its rules can be modified to fit the requirements of the company. 
- The activities which show less productivity are trimmed to reduce the budget of the development process. 
- The need for extreme programming grew out of the demands for short productive cycles which could satisfy the rapidly changing requirements of the industry. 
- The extreme programming has always attracted controversy whenever an environment different from its original one has been used. 
- The extreme programming demands for high discipline and hence some of the practices involved in the extreme programming are thought to be very rigid to be reduced or left unfinished. 
- But the extreme programming works according to a very relaxed schedule which can be designed by the developers. 
- This prevents frustration and creation of stubs to pass the end of day testing. 
- Thought the schedule is very lenient, a periodic integration is always required. 
- It is needed to detect the work being done in non compatible efforts before too much of the efforts are wasted in the wrong directions.

However, apart from all these positive there are a few negative aspects of the extreme programming which should always be kept in mind before you implement it for the development of your software project. 
- It lacks structure and documentation and requires senior level developers. 
- It calls for frequent meetings with a great exposure to the customers. 
- You can even land in much difficult contractual negotiations. 

What are the elements and rules of extreme programming?

Since the advent of extreme programming as a very popular iterative and incremental development process, it has been used for continually making quality software products and increasing the responsiveness to the ever changing needs and requirements of the customers and clients. 
Being an agile software development process it involves releasing of the software product in the form of “frequent releases” with all the short development cycles. It employs other techniques like the time boxing technique. 
The whole of the extreme programming has been aimed at increasing the productivity of the development cycle. Throughout the development cycles so many check points are introduced where the changes in the customer requirements or any other new requirements can be successfully and easily be included in the software development cycle. 
There are certain elements and rules of the extreme programming that we are going to discuss in this article. 

Elements of the Extreme Programming

  1. Programming in pairs
  2. Extensive code reviews
  3. Subjecting the code to unit testing
  4. Pair negotiation
  5. Avoiding programming the features that are presently not required by the software system or application.
  6. Stand up meetings
  7. Acceptance tests
  8. Flat management structure
  9. Iteration plan
  10. Simplicity of the code
  11. Clarity of the code
  12. Release planning
  13. Expecting changes in the requirements of the customers and clients.
  14. Frequent and effective communication among all the stake holders and the customers.
The process no doubt has got a lot of criticism because of the following problems:
  1. Unstable requirements
  2. Non documented compromises of the user conflicts
  3. Lack of an overall documentation or specification

Rules of Extreme Programming

The rules that are followed by the extreme programming, were first stated in the year of 1999 by Don Wells at the official web site of the extreme programming. In total there are 29 rules that have been stated under different categories as mentioned below:
  1. Planning
  2. Managing
  3. Designing
  4. Coding and
  5. Testing
1. Planning:
 (i) Writing the user stories
(ii)  Creation of the release schedule
(iii) Making frequent releases
(iv)  Dividing the project into iterations
 (v)   Iteration planning
2. Managing:
 (i)  Providing a open work space
(ii)  Setting a sustainable pace
(iii) Stand up meeting
(iv) Measuring the project velocity
 (v)  Moving people around
(vi)  Fixing XP
3. Designing:
 (i)  Simplicity
(ii)  System metaphor
(iii) Using CRC cards
(iv)  Creating spike solutions
 (v)   Re-factoring
4. Coding:
 (i) All time customer availability
(ii) Agreeing with the standards
(iii) Coding the unit test first
(iv)  Pair programming
 (v)  Frequent integration
(vi)  Using collective ownership
5. Testing:
 (i)  Unit tests
(ii)  Code must pass all unit tests
(iii) Acceptance tests

The first three categories are carried out explicitly since it was claimed by the critics that these are not supported by the extreme programming. 

Another set of rules was kept forward by the Ken Auer in the agile universe in the year of 2003. Ken Auer thought that the extreme programming is some what defined by its rules rather than being defined by its practices since they are subjected to ambiguity and variation. He had set out the rules under two different categories as mentioned below:
  1. Rules of engagement: Rules under this category are known to dictate the environment in which the software development is carried out effectively.
  2. Rules of play: Rules under this category are meant for defining all the activities whether be minor or major and rules that define the frame work for the development of the software under the rules of engagement.

Facebook activity