Subscribe by Email


Showing posts with label Developer. Show all posts
Showing posts with label Developer. Show all posts

Sunday, December 16, 2018

Able to report defects in an agreed format

During the course of a software development project, one of the most critical workflows is the defect workflow. The software coding team releases features and code to the testing team, which tests these features against their test cases and if there are defects, these are typically logged in a defect tracking system where their progress can be monitored and they can be tracked to closure (either with the defect being closed and an upgraded feature released, or with the defect having been closed as not to be fixed or not even being a defect at all).
However, this is an area that leads to a lot of dispute. There can be significant discussions and disputes between  the coding team and the testing team over what the severity and priority of a defect can mean, and from my experience, what I have seen tells me that even if one were to define a sort of standard for these terms across the organization, individual teams still need to work out their own precise definition of what these terms mean. Even more critical is the fact that individuals coders and testers also understand these terms and even though these can be subjective criteria, they also have developed a level of understanding with their counterparts in the different teams so that even though there may be some dispute over these terms when applied to a specific defect, the individuals can work it out.
Even though I stated some easy solutions in the above paras, there are many complications that come  about during the course of a software development project. For example, there can be senior coders who have a lot of heft and hence can speak with a lot of authority to members of the testing team. I remember a case where a senior developer called a new tester and asked him to explain the defect he had raised - it was marked as a very high severity and the developer felt that it was a side case and should not have been marked as a very high severity. This discussion ended with a conclusion, but there have been other cases where the tester felt that they were right and resented the fact that the developer used his / her seniority to try and talk them down. These issues can become serious if they happen many times, and it may become necessary for a defect review committee or the respective team leads/  managers to resolve these kind of issues. Because human nature being what it is, there  will be teams where you will have some individuals who get into these sort of disputes and they need to be resolved quickly.
For the above case, I remember one team which took a more drastic approach. They had set up an defect review committee that met once every few hours and every new defect that was created had to be reviewed by the committee before it could be taken up for any action. Without trying to criticize, it did seem odd because it meant the senior members who were part of the committee had to spend their time even on trivial defects that could be in most cased discussed and resolved between the developer and the tester.
Another problem that seemed to be happening at regular intervals was when a new member would come into the team, whether through new hiring or through a transfer from another team. People from another team could sometimes cause more challenges since they would have their own conceptions of the defect workflow and would find it hard to understand why this team may have a different version of the same. In these cases, some amount of hand holding by a more senior member of the team would really help. 
These cases can go on and on, but the basic idea is that there needs to be a spirit of discussion and cooperation between team members that will help to understand these workflows and follow them in a manner that reduces disputes.


Saturday, May 16, 2015

Using videos to explain features to other team members

One of the most important processes during the entire product development process is to explain the features to the other members of the team. The product manager coordinates the requirements and the feature flow, the experience designer then converts these into a actual feature flow (screen by screen, and UI element by UI element), and then finally this is converted into an actual working application (whether this be a desktop or web or mobile application). Now, even though the different team members can be an integral part of all the discussions that have happened, and well aware of how the developer is delivering the software, there are still grounds where there can be discrepancies in the understanding between the developer and the tester (there was a case where I was deeply involved where the product requirements researcher and the developer had been interacting daily for the feature, and yet, after around a month, when the feature was developed and the researcher had a chance to look, the features were off by around 5%). I am not for a minute suggesting that such things can get down to 0% deviation, but we should all be doing steps that help in reducing the possibility of such deviations.
These were simple cases. There can be more complex features, where the feature work forms the background of another feature, or the feature needs to be tested by multiple testers, or the Help document writer has to write about the screen and element by element flow in the application, and needs to understand everything in detail (and not being involved since the beginning, I could understand why in many cases, the documents so produced led to frustration among the team and needed multiple iterations), and in the worst case, the testers are in a different time zone and different geography from the developer.
This is one idea that I saw a developer doing. He had figured out that these kind of problems above can be very frustrating, and even though he would be frustrated, and his development manager would back him up, there would be multiple times when he would have to explain the same screens (in a particular workflow that he done, there were many UI elements in the screen and some UI elements were dependent on the values entered in the other UI elements); he almost dreaded the explanations he would have to do to multiple people. What he ended up doing was, during the unit testing he was doing, he would have a screen recording application running and he would provide some running commentary while doing this. In the end, he would have videos that essentially ran through the entire gamut of options for the screen workflow and it required much less effort after that to make them run in an order that was relevant for somebody else trying to understand. He would also have explicitly budgeted for the time required for this, and was able to show the advantages of doing this (although there were always some developers who were against the idea altogether, maybe more of their personal feeling that they would end up spending too much time on the video part).


Wednesday, May 6, 2015

Keeping some capacity of the superstar developers free for quick resolution

In every development team, you will always have a mix of people of different technical capabilities. This may not be for lack of trying; a person may try real hard and put in a lot of effort but may still not be able to work as quickly and as efficiently as another developer who seems to have the knack of being much more skilled. The better developer will eventually get more rewards and sail through appraisals much quicker, just as long the person also puts in the hard work, besides the skill.
Because of the skill levels of the more skilled developer, in a lot of organizations, such a person would be used for more difficult technical work and yet not one that could end up to be boring or repetitive (sounds very obvious, but it can happen that the work that is assigned is not interesting enough and i have known such a skilled developer to want to join other teams when they start feeling that the work they are doing is not really interesting).
One area in which such a developer is used is for new work, or for some new feature where there are expected to be technical challenges and is also critical for the project / schedule. In such a case, one would want the best resources on the team to be on these investigations, since the actual work on these features depend on how well the initial prototype / technical research is done. Once the initial work is done, it might be feasible to hand over the actual detailed work to other members of the team and utilize the more skilled developer for other similar projects.
However, if you want to plan for amount of risk mitigation for the project, one risk that comes up again and again is about serious defects coming up during the cycle, especially near the middle to the end of the schedule. If there is a serious defect coming up in such a phase, it gets more problematic since such a defect needs to be evaluated with a lot of care. While fixing any defect, one needs to be very careful that the fix is done completely and no other problem is caused by the fixing of the defect, and it can and most likely will happen that fixing of a defect will cause some problem (the percentage of such events is low, but not zero, and will happen).
When such serious defects are found near the middle to the end of the project cycle, one really needs to be very careful that these defects are evaluated properly, risks enumerated, and any possible complications reduced or brought down to zero. And as one advances in the schedule, the time period available to do these evaluations reduces. In such a case, it is necessary that the most skilled person in the team either looks at such defects, or reviews the work done by other developers in order to reach the same conclusion.
For this to happen, some amount of time needs to remain free for the skilled developer so that he / she can be put on such defects. Else, if the developer is working full time for some other feature (and it would be an important feature), pulling aside for defect evaluation may not be possible, or may impact the other feature negatively, which has its own impact.


Sunday, January 27, 2013

Explain Eggplant (GUI testing tool)? What is the approach behind Eggplant?


- Eggplant is an automation testing tool developed exclusively for carrying out black box approach based GUI testing. 
- This test automation tool came in to market in the year of 2002 and the developer was the Redstone Software. 
- Later, in the year of 2008, TestPlant – a UK based company took Redstone software in it’s under. 
- Basic technology used here is the image matching technology. 
- This is seen as quite contrary to examining the application under test (AUT) at the object level. 
- This helps in automation of the whole system under test (SUT) rather than focusing up on the application – specific solution.
- This implies another thing which is that the system on which the AUT runs and the technology used for developing the AUT do not matter at all. 
- The eggplant operates up on two computer systems. 
- The purpose of these two systems can be defined as follows:
  1. Controller machine: The purpose of this computer system is to author the scripts and execute them accordingly
  2. SUT or system under test: The purpose of this computer system is to run the VNC server.
- A connection is established between the eggplant and the VNC server through a built in viewer that operates on the internet protocol suite. 
- Any system that has a dedicated VNC server can be used as the System under test. 
Earlier, the controller environment IDE was available only for Mac but now it is available for various platforms including linux and windows.
- The controller machine authors the scripts via sense talk that is a proprietary scripting language. 
- This language is quite similar to English and therefore too easy to use. 
- This proprietary language is used along with the guided record mode. 
- By guided record mode, we mean that the navigation through the system and the verification of the test steps is taught to the eggplant by the script-er.
-  In the year of 2011, an announcement to launch a more advanced version of the then successful eggplant was made by the TestPlant. 
- This new version saw the integration of the optical character recognition (OCR) with the eggplant and was supported by ABBY. 
- It could be run in compatibility with the linux, windows and Mac versions of the eggplant. - In the same another eggplant product was launched that sought to improve test environments provided by the eggplant and was called the eggplant manager. 
- The characteristic features of the eggplant that make it so distinct from the other GUI test automation tools:
  1. Guided record mode
  2. Debugging
  3. Code completion
  4. Can be integrated with the other quality management software
  5. Execution only mode
- Technology behind the eggplant is image recognition algorithms.
- These algorithms let view the screen of the system under test. 
- The US patent was secured by the eggplant to be ability to monitor the GUI on a second computer screen from the previous computer screen. 
- This made it possible to run the tool without requiring any manual intervention. 
- With this, the product came in to the eyes of the UK trade and investment, especially the DSA (defense and security arm).
- Any operating system, browser or technology is fit for running the eggplant.


Monday, January 21, 2013

Explain FitNesse testing tool? What are principles of Fitnesse?


- FitNesse is an automated testing tool that has been developed to serve as a wiki and a web server for the development of software systems and applications. 
- This testing tool is entirely based up on the frame work for integrated testing that has been developed by Ward Cunningham. 
- It has been designed to support acceptance testing more than unit testing. 
- It comes with the feature of facilitating the description of the system functions in detail.
- With FitNesse testing tool, the users using a developed system can enter the input when it has been specially formatted i.e., non – programmers are able to access this format. 
- FitNesse tool interprets this input and automatically creates all the tests. 
- The system then execute these tests and returns the output to the users. 
- The main advantage of following this approach is that a very fast feedback can be obtained from the users. 
- Support in the form of classes called ‘fixtures’ is provided by the developer of the SUT i.e., system under testing. 
- The credit of writing the code for the fitNesse tool goes to Robert C. Martin and his colleagues in java language. 
- Since the program was developed in java, therefore initially it supported only java but now over the time it has got versions in a number of languages such as Python, C++, Delphi, ruby, C# and so on. 

Principles of FitNesse Testing Tool

This software works on certain principles which we shall discuss now:

FitNesse as a testing method: 
- Originally, it was designed as an interface using the fit frame work and it proved to be highly usable. 
- As such it is known to support the regression tests and black box acceptance tests in an agile style.
- This style of testing involves all the functional testers working in collaboration with the software developers in a software development project in an effort of developing a testing suite. 
- FitNesse testing revolves around the notion of black box testing.
- This involves considering the system to be a black box and testing it in the terms of the output that is automatically generated by the tool in accordance with the given inputs. 
- The responsibility of the functional tester is to design tests in a sense of functionality and expressing the same in the fitNesse tool. 
- On the other hand, the responsibility of the software developer is to connect the tool to the SUT so that tests can be executed and the actual output can be compared to the expected one. 
- The idea that drives this tool is forcing the functional testers and software developers to come up with a common language for an improved collaboration which will eventually lead to an improved mutual understanding of the SUT.

Fitnesse as a testing tool:
- Fitnesse defines the tests as inputs and outputs coupled together. 
- These inputs and outputs coupled together are expressed as variations of a decision table. 
- It supports a number of variations that range from tables that execute queries to tables for literal decision and to tables that express the testing scripts. 
- A free form table is the most generic variation that the designers can interpret in any way they like. 
- However, some sort of table is always used to express the tests. 
- The primary focus of FitNesse is on the easy creation of the tests, thus allowing the testers to maintain a high quality for the tests rather focusing on how the tests are to be executed. 
- Three factors are involved in the creation of the tests through fitNesse:
a)   Easy creation of the tables.
b)   Easy translation of the tables in to calls to SUT.
c)   Maintaining flexibility in the documentation of the tests. 


Wednesday, July 25, 2012

What is the value of a testing group? How much interaction with users should testers have, and why?


The software testing is quite a tedious work and therefore cannot be performed by a single person alone lest he is working on a very small project. A software testing team may consist of any number of software testers. Till the year of 1980 the term “software tester” was a general term and it was after that only that the software testing evolved as an individual profession. 
Software testing requires for various kinds of roles as mentioned below:
  1. Manager
  2. Test lead
  3. Test designer
  4. Tester
  5. Automation developer
  6. Test administrator
All these above mentioned roles constitute a complete software testing team. In this article we shall discuss about the value of the software testing team and also how much interaction with users should testers have and its need. 

Value of a Testing Group/Team


- A testing team should be independently empowered otherwise it won't be effective. 
- Managing a testing process without the use of any separate test plan and test strategy is quite a tedious job. 
- One of the typical features of an independent testing team is that it does not perform white box testing.
Only when the defects are logged, the value of a testing team is realized by the whole development process and people involved in it. 
- A good testing team always makes sure that the software testing life cycle of the software system or application flows through the following stages:
  1. Planning
  2. Specifications
  3. Execution and
  4. Completion
- A typical testing team does not bothers itself with the quality of the code i.e., whether it is poorly written or well written as long as the required functionality is addressed by it.

Interaction of testing team with users


-For a testing team interacting with the users is quite a difficult job.
-Generally, when a detailed documentation of the software system or application is present, a very less interaction is required with the users. 
- On the other hand, when there is a lack of documentation a great user tester interaction is required. 
- However, irrespective of the availability of the documentation, a user interaction is always recommended since the actual usability, need and the functionality of the software system or application can be known only through the users.
- Most of the testing teams enforce user tester interaction and thus it is becoming quite common these days. 
- One more reason for the rise in the user tester interaction is that the more and more testing teams are following the trend of carrying out UAT or user acceptance test which involves a vigorous interaction among the testers and users and therefore increasing the margin of user tester interaction. 
- Also, it is important for the better development of a software system or application that the thoughts of the testers work in sync with the users.
- There are testers working in different situations out of which some cause problems. 
- Good testers usually have a habit of conversing in terms of the user’s thinking like:
         1. What goals they might be having? 
         2. What tasks they might want to perform? 
         3. How they might perform those tasks? And so on.

- When good testers look at a feature, user’s reaction is the first thing that comes to their mind.
- A good tester understands quite well that how the software system or application is exploited by the user, how the program will be affected by whatever the user does and what affect it will have on the user’s habits.


Tuesday, June 12, 2012

Explain the concepts of Domain Analysis Process?


Domain analysis is one of the three phases of the domain engineering and is the first one. Domain engineering makes re- use of all the domain knowledge in the development of new software systems and applications. It forms a key concept of the software re- use. 

Application domain provides a key idea in the systematic software re- use of the software system or application. In this article we have discussed the process of domain analysis. The process of domain analysis involves sub processes like:
  1. Identification of domains
  2. Bounding of the identified domains
  3. Discovering commonalities and variabilities among all the systems in a particular domain.
The knowledge obtained in the above mentioned activities is captured in the models which are then later used in the third phase of domain engineering i.e., domain implementation for the creation of the artifacts such as:
  1. Domain specific language
  2. Re- usable components
  3. Application generators

Concepts of Domain Analysis


All the above mentioned artifacts can be used to develop new software systems or applications within that particular domain. 
- Domain analysis is one of the three primary phases of the domain engineering and focuses up on multiple systems within a domain. 
- In the phase of domain analyzation, the system domain is defined with the help of feature models. 
- Earlier these feature models were considered to be a part of the so called method: feature oriented domain analysis.
- One of the main aims of the domain analysis is to identify the common points as well as varying points in a particular domain. 
- The domain analysis has greatly helped in improving the development of the system architectures as well as the configurable requirements. 
- Apart from this, the domain analysis also helps with the development of static configurations.
- Most of the people confuse the domain analysis with requirements engineering, this is a mistake not to be made! 
- Domain analysis proves to be an effective technology for the development of the configurable requirements as compared to the traditional approaches since they are ineffective in domains. 
- The domain engineering tends to be effective only if the re-use of the already existing software artifacts is considered in the early stages of the development of the software system or application. 
- In the domain analysis, the features that can be re- used in the new software systems or applications are selected earlier and later are worked throughout the development life cycle. 
The entire process of the domain analysis is driven by the past experience produced from the artifacts on a primary basis. 
- There are many potential sources of the domain analysis few of which have been mentioned below:
  1. Artifacts of the existing systems.
  2. Requirement documents
  3. Design documents
  4. Standards
  5. User manuals
  6. Customers and so on.
- It is not necessary that the domain analysis should consist of the collected and formalized information rather it is the presence of a creative component that matters more.
- This thing distinguishes the domain analysis from the requirements engineering. 
- During the domain analysis what actually happens is that the developers try to extend their knowledge of the domain beyond what is already known. 
- This is done basically to categorize the similarities and differences of the domains so that the re-configurability is enhanced. 
- The domain analysis is carried out with the help of a domain model that represents the commonalities and variabilities of all the systems lying in that domain. 
- Basically, the creation of the components and architectures of the system is assisted by the domain model. 


Thursday, May 24, 2012

What are common mistakes and misunderstandings in a unified process?


As it is always said “to err is human”, one may make innumerable mistakes. This truth holds good for every aspect of our lives and so for the technology also. While programming, it is obvious that some mistakes will be made but they are not intended, some mistakes might creep in without the knowledge of the programmer; other mistakes might arise due to a lack of knowledge of the programmers and the developers! 
Anything is possible. With so much complex and advanced software systems and applications to build around it is obvious for the programmers and the developers to make mistakes while programming the software because it is not the feature of human intelligence to keep of check of each and every bit of the program that is being built.

Well, this article has been focused up on the mistakes and misunderstandings that result in mistakes in a unified process. Such mistakes and misunderstandings in a development can cause severe problems in the whole development process causing further problems in the software system or application that is being built. 

What are common mistakes in unified process?


There are various mistakes that one can make while programming using the unified process. 
- The very common mistake that is done is that the complex problems might be made more complex due to lack of sufficient understanding of the methodologies that are available for programming or may be because wrong or inappropriate methodologies might have been put in to use. 
- The problem that occurs here is for adopting any software development process different people assume different values and hence it is like using a single software development process for every programmer or developer.
- For getting the appropriate solutions to the programming problems it is not necessary that the programs should be developed with the extreme agile or test driven development methodologies. See this is where the people make mistakes!
- When a software system or application can be developed using the simplest of the methodologies available then why go for the complex and the tough ones? 
- Even though the agile processes and the unified software development processes are a big step towards the advancement of the software development, it is not always that they can be extended for all sorts of softwares and applications.
- The best way to avoid much of the problems is to train the programmers and developers in information protection. It does not require months and weeks to learn about common software security mistakes and misunderstandings. 

Examples of Common Mistakes


- Suppose that during programming a file was not locked properly and there are two parts of the programs that access the same file without properly locking it. 
- Such a case can result in a race condition between the two programs that can make the file quite unstable or in a vulnerable condition. 
- Another mistake can be logging in trying many passwords in just few seconds without giving the system a proper time to check. 
- The spirit of a programmer should be as such that even if he/ she has not made the mistakes he/she should take the responsibility to correct them before they cause more harm to the software system or application. 
- The longer the time is spent on writing the programs the more you avoid the mistakes. 


Saturday, May 19, 2012

Explain simple loops in detail?


Loops are such an important programming constructs for various object oriented languages that they cannot be neglected. All of us are aware of the looping constructs that we have in programming languages like C and C++. We have three basic loops:
  1. For loop
  2. While loop
  3. Do while loop

Why Loops are Important?


- Loops find extensive use in programming and they are a means to tell the program to keep executing a set of statements until some break condition is encountered.
- Loops come to be a very handy tool when it comes to the repetition of the whole block of code. 
- It can be done to reduce the length of the code and the task of the programmer or developer of writing the same code again and again innumerable times. 
- In some cases it also happens that the number of times for which the loop is to be executed is obtained from the user, in such cases looping of the particular block of code becomes extremely important. 
-There are many software programs or applications that perform very complex tasks or calculations all by the virtue of the looping constructs. 

Before taking on the loops in to your software program you should be well versed with the true and false concept of the programming language that you are using. Let us discuss all the above mentioned three loops one by one:

                1.  For Loop: 
               Here’s the syntax of the for loop:

For (initialization of the variable; test condition; increment condition)
{
Statement 1;
Statement 2; (code to be executed)
.
.
.
Statement n;
}
In the expression for the initialization of the variable one can declare the variable for the loop and initialize it with the required value. Secondly the test condition is responsible for checking the whether the loop should be executed or not on the basis of the true or false value. The increment condition lastly helps the loop to increment the value of the initialized variable. All of these 3 expressions are separated from each other by semicolon. An empty condition is evaluated to false value.

2. While Loop: 
Here’s the syntax for the while loop:

While( test condition)
{
Statement 1;
.
.
Statement n;
}
According to some programmers the while loops are perhaps the easiest to operate. While loops are supposed to be entry controlled loop since the condition is checked up on the entry itself and based on its true value it is executed. While loops are somewhat like the for loops except that they contain the initialization expression and the update expression inside their body. But the drawback with this loop is that it is quite length. This loop won’t allow the execution of the statements even once if the test condition is evaluated to be false.
      
          3. Do while loop
          Here’s the syntax for the do – while loop:
Do
{
Statement 1;
Statement 2;
.
.
.
Statement n;
} while (test condition)
This loop holds good for the programs in which the execution of a particular block of statements is required at least once irrespective of whether the test condition is true or false. The test condition is encountered in the last and is evaluated. If it is found to be false, then the loop won’t be eligible for a second iteration. Because of this factor the do while loop is commonly known as the exit controlled lop. 


Thursday, May 17, 2012

Explain nested loops in detail?



Why Loops are Important?


- Loops are an extremely important entity when it comes to the programming in languages like C and C++ i.e., to say the object orient languages. 
Loops are used to handle many other program constructs and execute the same statement or a block of statement as many times as required by the program or as specified by the user.
- Loops are either manually included in to the source code of the program or are generated in to the code by the state machine code generators or by an optimizing compiler. 

There are various types of loops but this article is limited only to the discussion regarding the nested loops. Let us see what the nested loops in detail are.
What the phrase “to nest” means?  
It means to keep one object inside the other object.  This holds good when it comes to the context of the loops also. All the types of loops can be nested in to the similar types of loops irrespective of their type.

What are Nested Loops?


- Nested loops are the loops that have been declared inside another loop which may or may not be of the same type as that of the nested loop.
- The loop which is placed inside the another loop is called the nested loop and the loop which holds this nested loop is called the parent loop.
- It is not necessary that the nested loop and the parent loop should be of similar types.
- Nesting the loops falls under the context of combining the looping procedures.
- Whenever a loop is nested, its parent loop is said to take the control of it that is the parent loop decides how many times the inner loop is to be executed. 
- Although the nesting holds good for all the types of loop, it is the for loop that dominates the line. - Once the parent loop has been iterated once, the control is transferred to the inner loop.
- After this the parent loop iterates for a second time only when the execution and iteration of the inner loop is wholly complete. 
- To say it other way round, the inner or the nested loop is triggered by the first pass of the outer or parent loop which is then executed to completion. 
- Then, the inner loop is again triggered by the second pass of the parent loop which is then executed till its complete iteration.
- This process continues till the test condition for the outer parent loop is evaluated to a false value. - If a break statement has been incorporated inside the inner loop then it may come out of the loop before all the iterations of the outer loop are complete. 
- The continue and the break commands are the two commands affecting the behavior of the both nested loops and the outer parent loops. 

Basically the nested loops find their use in the problems that involve working with matrices. Let us illustrate the working of nested with the help of the code written below:

// this code has been written to accept elements in to a 3 x 3 matrix
For ( int r = 0; r < 3; r++)
{
For (int c = 0; c < 3; c++)
{
Scanf(“%d”, &A [r] [c]);
}
}
In the above written c code two loops have been used to accept the elements for a matrix among which one is nested in to the another. The variables r and c denote the rows and columns respectively. Nested loops can be thought of as a logical structures which consist of two repeating statements are placed in the nested that is one inside the other. 


Saturday, May 12, 2012

Explain Extreme Programming (XP) - an agile method?


One of the agile software development methodologies is the extreme programming which is quite popular with the software programmers and developers. The extreme programming since its advent has been known for the improvement of the quality of the software products and the projects and their responsiveness to the ever changing requirements of the customers. 
Apart from all this the extreme programming is known to advocate many frequent releases of the shipped software product in short development cycles i.e., to say it advocates time boxing. 
So we can say that overall it improves the productivity of the whole development process and also facilitates the introduction of check points where the new requirements from the customers can be adopted. 

Aspects of Extreme Programming


There are some other aspects of extreme programming few of which have been mentioned below:
            1.      Pair programming (programming in pairs)
            2.      Extensive code review
            3.      Unit testing of the whole code
            4.      Avoiding programming of avoidable features till they are required
            5.      Flat management structure
            6.      Simplicity of the code
            7.      Clarity of code
            8.      Adoption of the changing requirements of the customer
            9.      Maintaining frequent communication among the programmers and with the customers etc.

Drawbacks of Extreme Programming


This methodology took its name from the ground that the beneficial aspects of the engineering practices are implemented at their extreme levels. It follows from the idea that more is better if a little is good. However several potential drawbacks have been pointed out few of which have been mentioned below:
            1.      Unstable requirements
            2.      Absence of documented compromises of user conflicts
            3.      Lack of overall design specifications
            4.      Lack of design documents

"Extreme programming now experiences quite different environments from the ones that were present at the time of its origin. Extreme programming is strictly aimed for the organization of the people for the production of the high quality software projects and products." Not only this, the cost of the changing requirements is also reduced by the means of implementing multiple short development cycles in place of a long one. 

It produces the below mentioned aspects all based up on the agile programming frame work:
            1.      A number of basic values
            2.      Principles
            3.      Practices

Activities Under Extreme Programming


There are 4 basic activities that are carried out under the extreme programming process:

      1. Coding: 
      Regarding the extreme programming it has always been argued that code is the most important aspect of any program since without it no working program would exist. Coding is the thing that helps you figure out most of the solutions and navigate through the programming problems. Code sometimes can be used as a code to demonstrate a program to the fellow programmers and developers which otherwise might prove to be difficult. Code is always interpreted in one way and is suppose to be clear and concise.
  
      2. Testing: 
     This aspect also follows the above mentioned idea that more is better if a little is good. It involves the following tests:
       (a)  Unit tests: These are included for the determination of whether the program is working and giving the outcome as intended. May automated tests are written that can break the program and if the program passes all these tests successfully, the coding is declared to be complete. Each piece of the code is tested before carrying the development process forward.
     
    (b) Acceptance tests: These tests are included for the verification of the requirements which the programmers think can satisfy the requirements of the customers.
       
      3.   Listening
      4.  Designing

     

Extreme Programming Values


     1.      Communication
     2.      Simplicity
     3.      Feedback
     4.      Courage
     5.      Respect
     6.      Rules

     

 Basic Principles of Extreme Programming


     1.      Feedback
     2.      Assuming simplicity
     3.      Embracing change


Facebook activity