1 / 21

Software reuse

Software reuse. William W. McMillan. 28 March 2013. What is the most common form of software reuse in Java programming?. Benefits of Reuse. Save resources. Standardize a solution that can be trusted. Support levels-of-abstraction approach to creating systems.

donnel
Download Presentation

Software reuse

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software reuse William W. McMillan 28 March 2013

  2. What is the most common form of software reuse in Java programming?

  3. Benefits of Reuse • Save resources. • Standardize a solution that can be trusted. • Support levels-of-abstraction approach to creating systems. • Encapsulated “black-box” components. • Reduce tedium, allow developers to work on new things.

  4. Risks of Reuse • Propagate inefficient solution. • e.g., O(N2) sorting routine • Propagate incorrect solution. • Stats formula could be wrong or inappropriate. • Shield developers from fundamental knowledge of how something works. • May not know inefficiencies of solution in particular context. • May miss interactions and dependencies.

  5. Risks of Reuse • Hard to change or update reused component. • Long-term cost if there’s a license fee. • Loss of support if provider goes belly-up.

  6. Suppose a method to compute a standard error of the mean is incorrect. What are some potential costs if the routine is used repeatedly?

  7. History of Reuse • Copy someone’s source code to do a task. • Subroutines: • Well-defined modules, with name, • … but might use common data structures. • Call subroutines with parameters. • “Include” files. • External libraries of useful routines. • E.g., LINPACK for linear algebra and related. • Database tools like Ingres

  8. History of Reuse • Computer simulation led to object-oriented design. • Simula 67 • Packages and “Units” appeared. • UCSD Pascal, Ada. • Abstract data types influential in computer science. • Object-oriented goes mainstream: • C++, O-O capabilities bolted onto C. • Smalltalk from a more AI perspective.

  9. History of Reuse • Java cleans up a lot of O-O trash: • Multiple inheritance gone. • No “friend” access. • Better dynamic memory management. • C# is Microsoft’s version of Java. • Packages, APIs, components now common. • A lot of development is done on top of: • Statistics packages • SQL engines • Enterprise mega-packages like SAP

  10. How have people employed books and tutorials on programming and scripting in software reuse?

  11. Reuse of Software Ideas • Algorithms and data structures. • Useful architectures and design patterns (discussed earlier in course). • E.g., model-view-controller • Programming styles. • Elements of Programming Style by Kernighan and Plauger • Relational databases.

  12. What benefits do you gain in being familiar with the idea of a sparse matrix?

  13. Software Frameworks • Integrated sets of tools and utilities. • E.g., .NET, Enterprise Java Beans, Allegro Common Lisp. • User interface objects and methods. • Communication facilities. • Security tools. • Data structures. • Database management. • Web applications. • Session and transaction management.

  14. What facilities do you rely on most in a software framework you use?

  15. Families of Software Products • E.g., Microsoft Office, Adobe Creative Suite. • Might have unique scripting language. • UI has similar feel and style across members. • Compatible parts. • Common architecture. • Common data formats. • Incentives to use all or none. • Reasons to keep all parts up to date.

  16. Do Oracle software products constitute a family?

  17. Buy Commercial Software? • E.g., SAP, E-Commerce tools. • Why reinvent the wheel? • Why not get expert advice and help? • Reduce costs, especially maintenance. • Reduce liability. • Get things you might not have thought of: • Encryption, back-up facilities, slick algorithms,…

  18. Use Open-Source Software? • Talk about saving costs…. • But do you always save? • Where does support come from? • “Read the source code” isn’t always the help you need. • Need to consider long-term costs and risks.

  19. When would you advise a client to consider including open-source software in a system?

  20. Use Cloud-Based Services? • E.g., Amazon, AT&T. • Third-party provider. • Data and functions on servers managed by provider. • Includes many tools. • Access via the Internet.

  21. A client says, “I want this to be a cloud-based system.” What questions would you ask in order to respond intelligently?

More Related