MODULE 3 Implementationisstes
MODULE 3 Implementationisstes
Design patterns
Study from backbenchers notes page no. 19
IMPLEMENTATION ISSUES
1. Reuse
Reuse is a fundamental concept in modern software engineering. Instead of
writing all code from scratch, developers leverage existing components,
libraries, or systems to build new software. This approach reduces
development time, costs, and risks while improving reliability.
Levels of Reuse
Reuse can occur at different levels:
1. Abstraction Level:
o Reuse of design knowledge, such as architectural and design
patterns.
o Example: Using the Model-View-Controller (MVC) pattern for
designing web applications.
2. Object Level:
o Reuse of objects or classes from libraries.
o Example: Using a JavaMail library to handle email functionality in a
Java application.
3. Component Level:
o Reuse of collections of objects or frameworks that provide related
functionality.
o Example: Using a UI framework to build a graphical user interface.
4. System Level:
o Reuse of entire application systems, often through configuration
or integration.
o Example: Customizing a Customer Relationship Management
(CRM) system like Salesforce for a specific business.
Benefits of Reuse
Faster development.
Lower costs and reduced risks.
Improved reliability (reused components are often well-tested).
Costs of Reuse
Time spent searching for and evaluating reusable components.
Costs of purchasing or licensing reusable software.
Effort required to adapt and integrate reusable components.
2. Configuration Management
Software development involves constant changes, and managing these changes
is critical. Configuration management ensures that all team members work
with the correct versions of components and that changes are coordinated
effectively.
Key Activities in Configuration Management
1. Version Management:
o Tracks different versions of software components.
o Prevents conflicts when multiple developers work on the same
component.
o Tools: Git, Subversion.
2. System Integration:
o Ensures the correct versions of components are used to build the
system.
o Automates the process of compiling and linking components.
3. Problem Tracking:
o Manages bug reports and tracks their resolution.
o Tools: Bugzilla, Jira.
4. Release Management:
o Plans and organizes the distribution of new software versions.
o Ensures that releases are stable and meet user requirements.
3. Host-Target Development
In professional software development, the host system (development
platform) and the target system (execution platform) are often different. The
host system is where the software is developed, while the target system is
where it runs.
Key Concepts
1. Development Platform:
o Includes tools like IDEs, compilers, and testing frameworks.
o Example: Developing a Java application on a Windows PC using
Eclipse.
2. Execution Platform:
o The environment where the software is deployed.
o Example: Running the Java application on a Linux server.
3. Simulators:
o Used to test software when the target hardware is unavailable.
o Example: Simulating sensor inputs for an embedded system.
Challenges
Differences between host and target platforms can cause compatibility
issues.
Testing on the target platform may require additional effort, such as
transferring code or using specialized tools.
Tools for Host-Target Development
Integrated Development Environments (IDEs) like Eclipse or Visual
Studio.
Debugging and testing tools (e.g., JUnit).
Configuration management tools (e.g., Git).