Rework is an ongoing problem in software development. As per SEI (Software Engineering Institute) report it has been indicated that 60-80% of the cost of software development is rework effort. This effort is used to correct defects associated with base-lined work-products. Unfortunately, the reason is a gap between the state of the art and the state of the practice of software engineering.
In SELC (Software Engineering Life Cycle) all out put is treated as work-product. E.g. Project Plan Document, Requirement Specification Document, Source Code, Test Specification, Test Report, Release Note etc. And when a work-product is approved or validated by the relevant stakeholders for using next level users than it called base-lining.
Common causes of re-works in SELC:
- Requirement Analysis Gap (main root case of rework)
- Wrong Software design (e.g. performance issue not considered in the design)
- Poor Code development (e.g. features not developed as is software design)
- Inadequate Test Case development (e.g. insufficient test cases for each requirement)
Despite successes in reducing rework, it is generally accepted that rework cannot be eliminated entirely. However, rework effort can be reduced by taking process improvement. For example:
- Introduce or improve the formal review process in requirement, design and coding phases. [If formal review is implemented then defect will be identified from the earlier stage of SELC, it will reduce rework significantly.]
- Integrate test cases with requirements [if each test case is mapped with requirements then it will be easier to measure that sufficient test cases is developed/not to test that requirement]
- Conduct Inspection [periodical inspection on work-products and processes implementation helps to identify defects as well as increase the consciousness of project team members to develop quality work-products and follow the processes]
Therefore, to reduce the rework effort it is required the use of disciplined engineering practices by skilled software engineers.
2 comments:
Unless you change your way of working, you will face the same problem over and over again. Disciplined engineering practices by skilled software engineers is not gonna solve the problem. Because you can not stop customer to change their requirements. So the best way of doing it is time boxed delivery and adopt agile.
See my latest post
http://rezastalk.blogspot.com
I've read your post. You are right agile should be adopt. But disciplined engineering practices don't say you use waterfall or other lifecycle. SDLC should be choose based on project type and size. You can't use only agile in all projects. And without skilled software engineer no model will be succeed.
Post a Comment