|
|
YOU
ARE HERE: ARTICLES > Reusability
|
||
Web Development Reusability : Improve Reliability Quality and ProductivityWHAT IS REUSABILITY?Reusability is one of the simplest and the oldest concepts in programming. It is also the most underutilized concept. When implemented correctly and purposefully, it can save time and money, as well as create an inventory for valuable and reusable software assets. Reusability is an integral part of all engineering disciplines. For example, mechanical engineers do not design an engine from scratch for each car coming off an assembly line; chemical engineers do not develop the formulas for each can of detergent; hardware engineers do not re-create chips for every computer that is sold; and aerospace engineers do not build solid rocket boosters from ground zero for each space shuttle. In all of these examples, the architecture and design of an item is reused to produce and manage a product line. Software can also be acquired, developed, maintained and managed via a product-line approach. Reusability also helps in maintainability, modularity, portability, productivity, interoperability, reconfigurability, commonality, adaptability, reliability and quality. In a line, software reuse is the practice of using existing tested and proven software components to develop new applications. WHY IS REUSABILITY IMPORTANT?Here are a few isolated examples of how reuse has helped:
Apart from these, most of a programmer's time is spent in modifying programs - making corrections, additions and improvements. When you have a general and specific tool for each of these needs, the time spent on these modifications would dramatically reduce since the tools put into a reuse library are already tested and proven. Reusability has proven itself in hardware - computers can now be made out of reusable components with well-defined interfaces. These are just a few examples to demonstrate how important and helpful reusability can be. Unfortunately, reuse does not just happen. Both technical and organizational issues must be tackled in order to successfully transition to a reuse-based culture. Once these issues are managed, the benefits discussed above can be got. Apart from the obvious, why does it matter that reinvention is rampant? That programmers have more work to do? Extra work for the programmers is not exactly a blessing, even from the programmer's viewpoint! Time spent reinventing anything that is already available, is time that is not available to improve user interfaces, or to make the program run faster, or to chase down the proverbial Last Bug. Every time that a line of code is retyped is a new chance for bugs to be introduced. There is always the temptation to take shortcuts based on how the code is used - shortcuts that could turn around and bite the programmer when the program is modified and used for something unexpected. WHAT CAN BE REUSED?Normally, all reusability efforts are directed at "code reuse". Reusability is not a concept that is limited to the coding phase of the software life cycle. It must be a highly visible item from requirement analysis to the retirement of the product. It is essential to identify the life-cycle phases that can be helped by reusability. A broader approach to reuse should be emphasized. There are various types of assets that can be made reusable:
The benefits of reuse help the project, and return greater benefits. However all this is not without its challenges, and technology has not fulfilled its promise in this area. Solutions on how to store, represent, search and retrieve designs and tools are still being developed - Enterprise Integrated Modeling, I-CASE, etc. COMPONENTSA component is defined as "a nontrivial, nearly independent, and replaceable part of a system that fulfills a specific function within a system's architecture." Similar ideas have emerged in other branches of design and engineering, as discussed above. For example, hi-fi systems can be purchased in component forms. The only things that the user needs to take care of are the individual component's functionality. The interfaces between components are standardized so that components from different manufacturers can be used together. For components to be reusable they need to be clearly specified, portable and adaptable. Portability defines how the component interacts with the underlying platform. A code snippet can be recompiled on various platforms with very little modification, whereas an executable component may be bound to a specific platform. A higher level of portability will increase the number of potential platforms for the component, resulting in a broader use. To make a component truly reusable, it has to be designed in a way so as to allow adaptation. Adaptability is necessary because the developers of a component cannot predict the requirements for all the systems and scenarios in which it will be reused. The specification for any component should refer to the various interfaces that will or can be used to communicate with the component, rather than the internal architecture. A specification with interfaces will allow the architecture of a component to be altered without any disruptions to other systems that depend on it. Repositories of such components need to be made available and easily accessible to developers. FEW PROBLEMS WITH REUSABILITY
LINKS TO EXTERNAL SITES ON REUSABILITY
|
||||||||||||
|
|
||||||||||||
|
Contact us with your project needs for a Quick Reply!
|
| Quick Reply | Site Map | About Us | Careers | Ask Us | Links| Vision| Address | ||
| Getting Started | RFP/RFQ | Web Development Process | Pricing Details | Client Quotes |Our Team | Success Stories | ||
|
|
The web division of Stylus Systems Pvt Ltd www.stylusinc.com ©1999-2008 |