Implementation realizes a design as a working program.
Reuse
Use existing components, objects, or systems where possible.
Levels:
- Abstraction
Reuse of design knowledge, e.g., patterns. - Object
Reuse of library objects directly. - Component
Reuse collections of objects or classes. - System
Reuse entire applications.
Costs of reuse:
- Search time.
- Purchase cost.
- Adaptation cost.
- Integration cost.
Configuration Management
Controls and tracks changes to a software system. Supports controlled access, change tracking, and component integration.
Activities:
- Version management
Track component versions and coordinate multi-developer work. - System integration
Define component versions per system build. Automate compilation and linking. - Problem tracking
Report bugs and track resolution status.
Host-Target Development
Software developed on a host, executed on a separate target. A platform includes the OS, database systems, and (for development) an IDE. Host and target platforms often differ in architecture and installed software.
Development Platform Tools
Standard tools in a development environment:
- Integrated compiler and syntax-directed editor.
- Language debugger.
- Graphical editing tools, e.g., UML editors.
- Testing tools, e.g., JUnit.
- Project support tools.
An IDE (Integrated Development Environment) is a unified toolset supporting multiple aspects of development under a common interface. Typically language-specific.
Component Deployment
Factors:
- Hardware or software dependencies
Must deploy on a matching platform. - High availability
Deploy on multiple platforms for failover. - High inter-component traffic
Co-locate components to minimize latency.