Software Reusability
Programmers concentrate on crafting new classes and reusing existing classes. Many class libraries exist, and others are being developed worldwide. Software is then constructed from existing, well-defined, carefully tested, well-documented, portable, performancetuned, widely available components. This kind of software reusability speeds the development of powerful, high-quality software. Rapid application development (RAD) is of great interest today.
Microsoft provides C# programmers with thousands of classes in the .NET Framework Class Library to help them implement C# applications. The .NET Framework enables C# developers to work to achieve true reusability and rapid application development. C# programmers can focus on the task at hand when developing their applications and leave the lower-level details to the classes of the FCL. For example, to write an application that draws graphics, an FCL programmer does not require knowledge of graphics on every computer platform where the application will execute. Instead, the programmer can concentrate on learning .NET's graphics capabilities (which are quite substantial and growing) and write a C# application that draws the graphics, using FCL classes such as those in the System.Drawing namespace. When the application executes on a given computer, it is the job of the CLR to translate the MSIL commands compiled from the C# code into commands that the local computer can understand.
The FCL classes enable C# programmers to bring new applications to market faster by using preexisting, tested components. Not only does this reduce development time, it also improves the programmer's ability to debug and maintain applications. To take advantage of C#'s many capabilities, it is essential that programmers familiarize themselves with the variety of classes in the .NET Framework. There are many Web-based resources at msdn2.microsoft.com to help you with this task. The primary resource for learning about the FCL is the .NET Framework Reference in the MSDN library, which can be found at
msdn2.microsoft.com/en-us/library/ms229335
In addition, msdn2.microsoft.com provides many other resources, including tutorials, articles and sites specific to individual C# topics.
To realize the full potential of software reusability, we need to improve cataloging schemes, licensing schemes, protection mechanisms that prevent master copies of classes from being corrupted, description schemes that system designers use to determine whether existing classes meet their needs, browsing mechanisms that determine what classes are available and how closely they meet software developer requirements, and the like. Many interesting research and development problems have been solved and many more need to be solved. These problems will likely be solved because the potential value of increased software reuse is enormous.