reuse

Complete

Concept

  • reusing tried-and-tested components
  • enchance the robustness of new software
  • reduce manpower and time
  • costs:
    • might be overkill
    • unstable/not fully mature
    • risk of dying off/EOL
    • licensing issues
    • hidden bugs/security vulnerabilities
    • risk of malicious code

Application Programming Interface(API)

  • reuse of components/entities
  • interface through which other programs can interact with a software component
  • design requirements:
    • clear
    • precise
    • well-documented

API of a class is the collection of public methods that can be invoked externally

Libraries

  • reuse of code
  • collection of modular code
  • generic and can be used by other programs
  • usually involves a dependency management tool

Frameworks

  • reuse of code structure
  • provide pre-built structure + customizable functionality
  • enable large-scale reuse and faster development
  • some provice a default implementation
  • examples:
    • web: Django, Spring
    • testing: JUnit
    • GUI: JavaFX

Framework vs Library

TypeKey IdeaDifference
Libraryreusable code modules, code is used as isyour code calls the library
Frameworkreusable structure with customizable behaviorframework calls your code (inversion of control)

Platforms

  • provides runtime environment for applications
  • common services, security and scaling

Cloud Computing

  • delivery of computing as a service over the network
  • no need for local infrastructure
  • easy to scale up/down
ModelDescriptionExample
IaaS - Infrastructure as a serviceprovides infrastructure (servers, storage)Amazon EC2
PaaS - Platform as a serviceprovides platform for developers to build appsGoogle App Engine
SaaS - Software as a serviceprovides ready-to-use softwareGoogle Docs