Reuse - 1 Computer Science 340 Software Design...

Info iconThis preview shows pages 1–7. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: 1 Computer Science 340 Software Design & Testing Software Reuse 2 The quest for software reuse Reuse is an important goal of software design Software developers are notorious for reinventing the wheel by repeating work that has been done many times in the past. For years people have touted the virtue of the reuse achieved by hardware engineers, who frequently use off-the-shelf (OTS) components in their designs. The hope has been that similar reuse could be achieved through properly designed software components. 3 Benefits of reuse Timeliness Decreased maintenance effort Reliability Efficiency Consistency Lower cost Less redundancy in the work 4 Examples of successful reuse OS APIs are used by all programs that run on the OS (e.g., the Windows scroll bar) Built-in libraries provided by programming languages are reused by all programs written in that language (e.g., C++ STL) Third-party libraries that perform generally-useful functions, such as: OpenSSL (secure communication), zlib (compression), boost, Qt (useful C++ libraries) Application Frameworks: GUI Frameworks (WPF), Web App Frameworks (RoR), Enterprise App Frameworks (Java EE), etc. 5 Forces operating against reuse At first glance, the lack of reuse in software makes little sense, but there are reasons for it. What conditions must exist to make a class reusable? Generality (customizable to the present need) Performant (general without sacrificing performance) Available across programming languages and operating systems Easily obtainable (inexpensive or free, reasonable licensing, downloadable on web) Well documented Well supported and maintained Source code available Awareness (if I dont know about it, I cant use it) Maturity and Humility (overcome NIH syndrome and the urge to do it myself) If all relevant conditions are satisfied, reuse will often occur. 6 Forms of reuse...
View Full Document

Page1 / 24

Reuse - 1 Computer Science 340 Software Design...

This preview shows document pages 1 - 7. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online