Agile software development is a popular software development process or methodology that has gained a lot of popularity in the recent years due to its effectiveness and ease of use. Firstly, it encourages collaboration and teamwork throughout the life cycle of development and this makes it easy to plan and implement.
Agile software development is all about breaking a task into small chunks that make it easy to code and more features are added during its incremental processes. The most important advantage of agile method of development is that it accepts that requirements can change in the future and it makes provisions to accommodate those changes instead of strictly adhering to a rigid set of requirements established at the beginning of the developmental cycle. In fact, each stage of software development such as planning, design, development and testing are considered to be iterative and this means the risks or defects are identified at each iteration, thereby reducing the chance for the software to fail at any time.
Communication is one of cornerstones of Agile development. In fact, this methodology encourages members working on the same product to collaborate and communicate with each other across departments. This reduces time and also, encourages good personal relations among employees. The members also communicate constantly with the client to provide updates and to get any changes in requirements at the earliest. Another significant aspect is that testing is done at different times during the development process and is not done after the development is complete. This, again helps to fix bugs and errors faster and makes the product more stable.
Extreme programming follows agile development processes and is considered to be one of the most successful ways to develop a software product. It has been used by developers and industries all over the world. One of the reasons for its success is that it makes it possible for people to produce higher quality software through effective communication and collaboration.
There are five principles to extreme programming and they are simplicity, communication, feedback, respect and courage. The design and coding are simple, clean and easy to understand and each of the team member has to constantly communicate with the client as well as other members to do their job more effectively. There is constant feedback on the developmental process through client feedback and testing and this makes it easy for the developers and designers to identify errors at the beginning stages itself. More than anything, this methodology makes it easy to accommodate changing requirements at any stage easily and it is also scalable to include features even after the product is delivered. This methodology also increases the respect that team members have for each other because they are in a position to understand the importance and talents of others in the team. Courage enables all members to do their job without getting overwhelmed by the size of the product or the amount of work that needs to be done.
Another significant aspect of extreme programming is that customers are an integral part of the development process. All team members, irrespective of their roles, and the managers can communicate with each other as well as the client at any time. This openness is what makes extreme programming a productive and collaborative process in today's software world.
What is UML?
Unified Modeling Language (UML) is the standard modeling language used today universally and it is independent of any programming language. Also, it a language rather than a methodology and this makes it easy for any company to adapt it to meet their requirements.
UML does not have any product or method, but rather it is a collection of diagrams where each shape means something to the user and developer. The idea behind this language is to increase the understanding of the requirements and to make it easy to develop applications that meet these requirements and are also scalable and easy to change at a later point. Some of the most commonly used diagrams in UML are use case diagram, class diagram, activity diagram, object diagram, package diagram, component diagram and sequence diagram. Each of these diagrams facilitate understanding and collaboration.
Class diagrams are designed to detail the different system classes that are likely to be used in application, their attributes and relationship with one another. It is static in nature and is important for any object oriented language that may be used for coding. It is essential for a conceptual modeling of the application as well as for the coding phase.
Each class diagram is divided into three parts. The top part has the name of the class, the middle part has the attributes while the lower part describes the possible actions of the class. For example, a class called bank account will have two attributes, namely the name of the account holder as well as the amount of balance that is there in the account. It can perform two functions and they are withdraw and deposit and each of these two functions need the amount of money as their input values.
Name of the owner: String
Available balance: dollars
Withdraw (Available balance: dollars)
Deposit (Available balance: dollars)
Besides attributes and functions, the visibility of each class can be mentioned and this is to add a measure of privacy. Any class that does not need to interact with the bank class will not be able to see or access it. Possible visibility values include public, private, protected, package, derived and static.
Sequence diagrams are self-explanatory diagrams that show the flow of a process from beginning to end. It has two dimensions -- horizontal and vertical. The vertical dimension shows the calls made to different classes or functions while the horizontal dimension shows the objects that make these calls.
It is simple to read these diagrams. The "driver" class or the class that initiates the process is at the left most top corner. The call made by the object at different points in time constitute the remaining part of the diagram. This diagram helps programmers to understand the sequence of an operation or process so that they can code better.
Standards and Guidelines for software quality program
Any software developed by a company should meet the highest standards of quality and performance. For this reason, the Consortium for IT Software Quality (CISQ) has defined five key attributes needed for every quality software product and they are reliability, efficiency, security, maintainability and right size.
To achieve these objectives, there are some guidelines or standards that have to be adhered to by all the members involved in the product. Most companies today adhere to the ISO IEC 90003 2004 standards because it is comprehensive and feasible. Some of the guidelines from this standard are:
The processes required for a quality software product should be identified and the right resources should be assigned the task of its implementation.
The code written by the developers should implement the functionality and specifications mentioned during the requirement gathering stage. It should be simple and easy to understand and at the same time, it should complete its task.
Documents that describe the software processes, life cycle models and quality control measures should be created. It should be approved by the right authority before distribution. A quality manual should also be created and this should describe the different processes, scope and procedures of the system.
Its important to set the objectives of a quality system early and a quality monitoring team will constantly check to see if the product is in tune with the clients' requirements as well as the quality objectives established by the organization.
There should be a high level of focus on the customer to ensure that the specifications are met and the organization should strive to enhance customer satisfaction at every opportunity.
Good quality infrastructure including the right hardware and facilities are essential for the optimal performance of a software product.
Its important to establish procedures that control software design and development. This is also the right time to establish authority and manage interactions between the different groups involved.
A good design and development structure should taken in the right inputs and give out the right outputs. So, its vital that the design should match the requirements and the design and development should match the software quality controls established by the organization.
The entire team should carry out frequent verifications, reviews and validations to ensure that the product is of the highest quality.
Software testing is an integral part of quality. Each module as well as the complete product should be tested for best results.
Quality management should begin with a goal and then the required data should be collected and analyzed. Based on the analysis, remedial action can be taken.
These are some of the guidelines and standards every company should adhere to ensure that their product meets the highest quality of standards.