Subscribe by Email


Showing posts with label Delivery. Show all posts
Showing posts with label Delivery. Show all posts

Sunday, May 27, 2012

State the values that underlie the attitude and practices of a healthy XP project?


The date of 6th March, 1996 saw the first use of the extreme programming or XP as it is commonly known as for the development of a software project. Eventually, it gained so much of popularity that no one ever had thought of despite its so many critics. It came to be known as one of the best agile software development practices. 
But what was the reason behind its popularity?
The credit of the popularity of extreme programming among the software developers is given to the values underlying the attitude of the extreme programming. Therefore this article is dedicated to the values that underlie the attitude and practices of a healthy XP project.

Values that underline the attitude & practices of XP



Value # 1:
- The extreme programming has its way of handling projects of all sizes i.e., whether large or small or medium. 

Value # 2:
- The first value that underlies the attitude and practices of a healthy XP project is that it takes care of the customer satisfaction.
- The extreme programming has been able to deliver the product exactly as the customer wants since years.
The extreme programming has proved itself when it comes to empowering the programmers and developers to easily catch up with the requirements of the customers which are always changing even in the later phases of the software development life cycle or SDLC.

Value # 3:
Another positive aspect of the extreme programming is that it emphasizes team work. 
- It provides equality to all the team members i.e., managers, developers, programmers and so on. 
It regulates the collaboration among the team.
- With the extreme programming a simple yet effective environment is created for the development of the project which does not just accelerate the rate of development but also increases the productivity of the whole team.
- The teams are thus imparted the quality of self organization.
- A constant communication is maintained among the team members and their fellow customers. 
- There are 5 ways in which a project is affected by the extreme programming for the good:
  1. Communication
  2. Simplicity
  3. Feedback
  4. Courage and
  5. Respect
Value # 4:
Since the very beginning of the development process, the design is tested and continuous feedback is obtained. 
- This facilitates the early delivery of the software product to the customer with the desired changes incorporated in to it. 

Value # 5:
- The success of the project depends largely up on the individual contributions of the team members which also deepen their respect for each other.
- This enables the extreme programming team to respond with courage to the changing requirements.

More About These Rules


- These rules may appear to be naive for the first time to someone but they are quite effective and sound. 
- During the course of the development of the project one will eventually realize that these values or rules define the goal of the whole process. 
- These rules can be changed to some extent according to the requirements of the organization.
- The customers enjoy the privilege of being a part of the development process and the developers and programmers contribute to their fullest even if they are not so experienced. 
- The communications and the relationships are managed by the managers. 

All the above mentioned 5 values maintain the discipline of the extreme programming and keep the whole team together. 
With the extreme programming the whole system can be kept under a running condition and integrated. The code is written by the programmers in pair (pair programming) and the code is written in such a way that everybody is able to understand it and suggest for making improvements to it. 


Saturday, May 26, 2012

Some detail about usage of work products in extreme programming?


Extreme programming or XP gained popularity as one of the most effective agile software development practices in the late nineteen’s. This methodology came in to existence for the purpose of the implementation of the software projects using the 12 predefined practices.

These practices are a refinement of the best practices of the software engineering. The whole process is intended in making improvements to the quality of the software system and its ability to respond to the needs of the customer. 

The frequent releases of the software system or application are regulated by the iterations or the short development cycles. There are certain elements of the extreme programming which include:
    1. Pair programming
    2. Extensive code reviews
    3. Unit testing of the whole code
    4. Avoiding programming of the features and functionalities that are not required at the moment.
    5. Keeping a flat maintenance structure.
    6. Maintaining clarity as well as the simplicity in the code.
    7. Expecting changes in the requirements of the customers.

The above mentioned elements make the whole development process all better. During Kent Beck’s work on his C3 (Chrysler comprehensive compensation system) pay roll project, he developed this agile software development methodology. 

Extreme is nothing but as the name suggests, a process of implementing the best practices of the software engineering to the highest levels possible. Extreme programming has always been surrounded by a lot of buzz regarding the environments in which it was used and is being used. 
Its practices always demands high discipline making them appear to be so rigid. On the other hand if an approach is quite flexible and less rigid, schedule makes it easy to incorporate complex features in to a fully developed software system or application. 
The practice continuously integrating the whole software system helps a big deal in keeping the whole development on the right track. With its 4 activities (namely coding, testing, listening and designing) the extreme programming is aimed at achieving the below mentioned goals:
  1. Organize the people to produce software products with high quality and productivity.
  2. Reduce the cost of the changes in the customers’ requirements with the multiple short development cycles.
  3. Define changes as the natural and desirable aspect of the software projects.

About Work products in Extreme Programming


This article is focused up on the work products of the extreme programming. In one research it was found that the extreme programming helped in many of the projects in reducing the costs and time to market the software products and improved the productivity.  
- Describing the work products of a software methodology helps in checking out the problems of the interpretation.
- Extreme programming is not a small methodology therefore it involves a large number of intermediate work products. 
- But to say as a whole, the work products are quite necessary.
- People who are just beginning with the extreme programming need to know what are actually acceptable work products. 
- The stake holders need to know what they are entitled to ask for. 
- Three work products are mentioned that are typical to an extreme programming development process. 
- The number of the work products depends on how they are counted. 
- In the extreme programming the work products are distributed across the roles i.e., to say they are light. They are:
  1. System architecture
  2. Common domain model
  3. Screen drafts
There are dozens of the work products and doing each of them might be a hectic work! But on the other hand if you skip out many of them your project will lose its visibility as well as its alignment.
- You cannot pick some core work products since even lose of one product can hamper the whole project development. 


What are the core practices of extreme programming?


Over the time the extreme programming has proved itself to be a great helping hand as an agile practice in improving the overall quality and productivity of the software products according to the ever changing requirements of the customer.
Being an agile practice it frequently releases software products with the short development cycle which is achieved through time boxing. During the whole process several check points are introduced in to the development cycle where the new customer requirements can be easily incorporated in to the software system.


Elements of Extreme Programming


There are several elements of the extreme programming like:
1. Pair programming
2. Extensive code review
3. Unit testing
4. Maintain simplicity and clarity of the code
5. Providing a flat management structure and so on.


Values of Extreme Programming


The extreme programming is guided by values, rules and principles! There are 5 values namely:
1. Communication
2. Simplicity
3. Feedback
4. Courage
5. Respect


Principles of Extreme Programming


The rules of the extreme programming govern its all time activities. Three basic principles have been defined for the extreme programming as mentioned below:
1. Feedback
2. Assuming simplicity
3. Embracing change


core Practices of Extreme Programming


The extreme programming is said to be composed of 12 practices which is what we going to discuss in this article. The 12 practices have been grouped into sets of four:

1. Fine Scale Feedback: This area involves 4 following practices:
(a) Programming in pairs: This agile practice involves 2 programmers working side by side one of which is a driver and other is an observer. The driver is suppose to type in the code while the observer holds the duty to review each line of the code typed.

(b) Planning game: This is the most important practice in the extreme programming. The game here is the name given to a meeting that is held once for every iteration of the development process with the purpose of guiding the product in to delivery. It has 2 parts:
- Release planning: It has 3 phases:
    + Exploration phase
    + Commitment phase
    + Steering phase
- Iteration planning: It too has got the same phases as the release planning.

(c) Test driven development or TDD: This is another agile practice relying on the iterative and incremental approach and refactoring of the code for improving its overall design.

(d) Whole team: Extreme programming forces the need of the customer availability at all the times for questions.

2. Continuous Process: This process is constituted of the following 3 practices:

(a) Continuous integration: In extreme programming it is required that only the latest version of the software system or application is worked up on.  The current version of the software that is available with the different team members must be uploaded to the code repository in every few hours since this avoids delays in the project cycle.

(b) Design improvement or re-factoring of the code: Since only the required functionalities are implemented, this may cause the system to hang. This may require dual maintenance then. In such cases changes in one part of the program affect the other parts of the code. At such times the refactoring of the code is needed.

(c) Small releases: The software is delivered via the frequent releases of the live functionalities. With these small releases the customers gains the confident about the progress of the development and the concept of the “whole team” is also maintained. The customer as well is able to come up with the suggestions regarding the development of the software.

3. Shared Understanding: This involves the following 4 practices:
(a) Coding standards
(b) Collective code ownership
(c) System metaphor
(d) Simple design

4. Programmer Welfare: It involves development at a “sustainable pace”.


Saturday, April 14, 2012

What is meant by incremental and evolutionary delivery?

After the software system or application product is complete, it has to be delivered to the client or the owner of the product. There are several types of delivery methods that are followed by the organizations like the incremental delivery and the evolutionary delivery.

Here in this article we are going to discuss about the above mentioned delivery types i.e., the evolutionary delivery and the incremental delivery. These days the software design is considered to be a major factor in deciding how successfully the software product can be delivered to the client being the end goal of the software project.

As we all know the below mentioned factors are known to impede a software project:
1. Over design
2. Under design
3. Wrong design etc.

For the efforts of a development team to be successful the design of the software system or application has to be good and efficient. It has been quite often observed that the best designs are a result of the emergent or evolutionary design or continuous design rather than just being a result of the efforts that are employed to make the design follow the up front approach.

About Incremental Delivery Method


- The continuous design involves starting up with a modicum of the up front approach and the technical directions are not followed for as long as possible.

- Following this approach, one can strive to apply lessons that one has learned from the software project for making continuous improvements in the software system or application design instead of just getting trapped in to design which is erroneous and has been developed too early.

- Apart from all this, the incremental delivery helps in creating as well as improving the business values rather than just focussing up on the structure of the build of the software system or application.

- With incremental delivery a project team can happen to deliver the best business value.

- In incremental delivery it is not necessary to follow the continuous design though it helps in making the delivery more efficient and creating software systems and applications with better designs.

Advantages of Incremental Delivery Method



1. It helps in keeping the business priority i.e., you get a better chance in developing the features most valuable to the business.

2. It helps in regard to the risk mitigation since most of the times either the business value is not delivered or the wrong system is delivered. Demonstrating the working features to the client as early as possible an help you out of such harsh traps.

3. It helps in regulating early delivery. The production can start with the completed features.

4. It facilitates flexible delivery. Quite often the business priorities are changed by the clients. In such cases, working with a way that assumes changes in priorities is the best option. The likeliness of the efforts being wasted is reduced.

Disadvantages of Incremental Delivery Method


1. It is very hard to do.
2. Requires high quality code structure.
3. Much time is wasted in the architectural concerns.

About Evolutionary Delivery Method


Now coming to the evolutionary delivery, it has been observed that many a times the focus is up on the evolution and the delivery is neglected.

- Evolutionary delivery is all about what is to be delivered and when and how the deliveries are to be achieved and in whose name the delivery is to be made.

- All these questions imply a frame work of activities which are to be pursued during the development course of a project.

- The basic principle of evolutionary delivery method is that the product delivery is started early since the user is interested in the system.


Saturday, January 28, 2012

What are different aspects of Game Testing?

Today’s world is fantasized with games. Children and youth both are addicted to games. With the cutting edge technology, gaming technology has reached new heights. Now games have become so exciting with their real world technologies. With the growing demand for games, there always a tough competition between the games developing companies. They struggle with technology to deliver the best quality games. So like software programs and applications, games also have to be tested for quality and performance.

Therefore, game testing is considered to be an important part of game development.

OBJECTIVE OF GAME TESTING
1. Game testing can thought of as a kind of software testing which aims at testing the quality of the games.
2. The main objective of game testing is to find all the errors and bugs in the gaming software and preparing their documentation.
3. Games require very high technology and thus call for the need of analytic competence.
4. It is developed using computer expertise and endurance.
5. There are some critical evaluation skills on which it is based.

WHY GAME TESTING BECAME NECESSARY?

1. In the era of early video games, all the development and testing process was carried out by the developer of the game only since the games were small and primitive technology was used.
2. But, today the games are becoming very lengthy and complex due to the advent of high technologies.
3. So, there is a need for qualitative and quantitative assessment of the games which can be achieved by game testing.
4. Today’s game companies have separate expert game testers.
5. The main aim of game testers is to find note any problems that they discover in the documentations and reports.
6. They should have the skills to finish the games at the most difficult level. Game testing is carried out on the program before releasing its alpha version.

HOW GAME TESTING IS PERFORMED?
A critical component of a game is quality even though there are no standard methodologies to judge the video quality.

1. Different testers and developers have their own methodologies.
2. There is a separate quality assurance staff in game companies to judge the quality of the game.
3. Starting is commenced as soon as the first code of the game is written and it continues till the whole program is completed.
4. The progress of the game is monitored by the QA staff.
5. When the whole program is completed, a test plan is written and test cases are prepared and the testing is carried out accordingly.
6. This is done before alpha stage.
7. As the beta stage approaches, one of the aspects of the game is daily testing according to the plan.
8. List of the features is prepared which are to be included and which are to be excluded.
9. Beta stage testing includes contribution from volunteer testers.
10.The game is played and tested.
11.The discovered glitches are noted down.
12.The game play should be creative since then only most of the bugs will be discovered.
13.There is a time period before the deadline which is termed as crunch time.
14.In this period the features that were added later are tested.
15.The bugs discovered are ranked according to the severity they can cause:

- Critical bugs/ A bugs: that can cause the game to crash.
- Essential problems/ B bugs: bugs that require attention even though the game runs well.
- Obscure problems/ C bugs: these bugs are small but require to be corrected.


The following people are involved in testing of a game:
- Game producer
The person sets the deadlines for testing based upon quality assurance and marketing.
- Lead tester
The person manages list of bugs and most responsible for the quality of game.
- Testers
The person checks the working of the game.
- Software development engineer in test
The person builds automated frame works and test cases.


Facebook activity