Quality Assurance is a set of activities keeping in check the quality of a product. In software industry following are some of the some of the aspects used for assessing the quality of the product and the process model adopted for developing the product:
- The quality of code:
- Code cohesion is minimal
- Code coupling is minimal
- Lower rate of fault detection
- Code is understandable
- Code is reusable
- Minimal cyclomatic complexity
- Minimal design complexity
- The quality of the process model adopted:
- Minimal or no communicational gap
- Minimal software development effort required
- Minimal software testing effort required
- Improved productivity in the organization
- Minimal development cost
- Delivery of the product or a part of the product is according to the agreed upon schedule
To achieve the above quality factors following are some of the quality assurance practices being adopted in various software development process models:
- Refactoring of Code: It is a process of making changes to the existing set of code without having to change its behavior. Following are some of the techniques used for refactoring the code:
- Composing methods i.e. breaking down complex and large functions into smaller chunks reducing the complexity of such functions.
- Safely moving the functionality between the classes and creating new classes while hiding the implementation details from the public.
- Organizing data i.e. data handling, replacing primitives with rich class functionalities.
- Simplifying complex conditional expressions.
- Simplifying complex method calls.
- Dealing with generalization.
- Iterative development of the product
- Continuous software product testing. This requires testing the developed software product both during its development phase and after the completion of its development. Following are some of the testing types used for testing the software:
- Unit testing: This particular type of testing requires testing of the software unit developed. Each unit developed the software undergoes individual testing to ensure accurate functionality of the unit itself.
- Integration testing: It requires the testing of the software units after their integration forming a group ready for a test.
- System testing is a testing of a complete software after its development.
- Acceptance testing: This process tests the system for its acceptance by the customer.
- Enforced teamwork.
- Enforced collective ownership. This requires that distribution of the software development responsibility for a number of people rather than making it one individual's responsibility.
- Involvement of customer enforced throughout the development of the software product.
- Adopting coding standards during the implementation of the software design.
- Use of system metaphors for improving the understandability of the software product being developed. This requires relating the software entities to something familiar.
- Implementation of Change Control in a software being developed.
I curious more interest in some of them hope you will give more information on this topics in your next articles. Software Engineering
ReplyDeleteSure
ReplyDelete