Implementation
Implementation
Engineering
Implementation
Coding
Debugging
System Implementation
• Involves creating an executable version of the software in a
programming language.
• Implementation issues may include;
• Reuse: Software can be created using existing components or
systems to reduce development time and costs.
• Configuration management: Involves keeping track of the
different versions to reduce risks of including the wrong versions
of the components in a system.
• Host-target development: Developing software on one computer
and executing it on another computer to check if system performs
the same way.
Reuse
• In the past, software was written from scratch but due to
limited costs and schedule, modern software is developed by
reusing components and systems.
Ian Sommervile
Reuse
a) Abstraction level: Reuse knowledge of successful abstractions in the design e.g.
architectural patterns.
b) Object level: Find appropriate libraries and directly reuse functions and objects
from that library e.g. a function that prints a greeting message
c) Component level: Reuse functions in a component that provide related services
e.g. a payment process component responsible for finding total cost of items,
verifying payment details and confirming transactions.
d) System level: Reuse the entire application or integrate several software to create a
new system. It may involve configuring the software to meet user needs e.g.
changing themes, fonts, setting preferred language, managing user accounts with
different permissions.
Drawbacks
Reuse
• Costs of the time spent
Benefits looking for reusable
software
• Reduces development
time • Costs of testing
• Fewer development risks • Costs of configuring the
software to reflect new
• Low costs requirements
• Reused software has been • Costs of integrating
tested and is reliable different reusable
components with the new
code
Configuration Management
• Involves managing changes in software development. If two
people are working on a component, their changes must be co-
ordinated.
• Team members must access the most up-to-date versions of
components to avoid redoing work.
• When a new version fails, you should be able to return to a
working version.
• Therefore keeping track of all available versions so that all
developers have access to code and documentation in a
controlled way.
Configuration Management
• CM Activities include;
a) Version management: Keeping track of different versions of system
components. Ensuring developers don’t overwrite each other’s work.
b) System integration: Defining what versions of components are used to
create each version of a system.
c) Problem tracking: Allowing users to report problems and developers
to see who is working on the issues raised as well as whey they are
fixed.
d) Release management: Planning the functionality of new releases and
organizing versions for distribution.
Host-Target Development
• Software is developed on one computer (host or dev’t
platform) but runs on a separate machine (target or execution
platform).
• A platform is hardware including installed OS and other
supporting software such as DBMS.
• A dev’t platform should provide tools such as;
• An integrated compiler and editor to create, edit and compile code
• Debugger to fix errors
• Testing tools to run automated tests
• CM tools to manage versions
Host-Target Development
• When deploying software, you should take into account;
1. The hardware and software requirements of a component e.g.
processor power and architecture, OS etc.
2. Availability requirements of the system; where components are
deployed on more than one target platform in that event that one
platform fails, an alternative platform is available
3. Component communications; if components frequently communicate,
they should be deployed on the same platform to reduce
communications latency (delay between the time that a message is
sent by one component and received by another component)
Coding and Debugging
• This is the process of writing instructions in a programming
language that a computer executes to perform a specific task.
• Involves designing algorithms, choosing a programming
language, writing code while following rules of that language and
debugging.
• Debugging is the process of finding and resolving errors or bugs
in a software system.
• Examples of errors
• Syntax errors, logic errors, run time errors etc.
Debugging
• Activities involved in debugging are;
1. Run the system to make the bug appear again
2. Locate the bug in the code
3. Identify the root cause by examining the logic and flow of code
4. Fix the bug or make changes to the code
5. Carry out different tests to ensure the bug does not occur again
6. Document the process by recording the steps taken to solve an
error, cause of bug, how it was fixed, which tools were used,
how much time was taken to find and fix
Debugging Strategies
1. Brute Force: Study code for a long duration to understand
the system and to find changes that may lead to errors
2. Debugging experience of the developer
3. Backtracking: Trace the program backward from the
location of failure message to identify region with error
4. Forward analysis: Trace the program forward using
breakpoints to find region where wrong outputs are
obtained
Debugging Strategies
5. Cause elimination: Group data related to the error to
isolate potential causes
6. Static analysis: Analyze syntax, data and control flow
without executing program
7. Dynamic analysis: Run code and analyze behavior to
identify errors such as accessing memory not allocated to
the program
Debugging Strategies
8. Collaborative debugging where multiple developers
analyze the program
9. Logging and tracing: Collect and analyze the program’s state
at various points during execution
10. Automated debugging: Use automated tools and
techniques to assist the debugging process. Ex: IDEs
Debugging
Advantages Disadvantages
• Improved system • Time consuming
quality • Requires specialized
• Increased user skills and tools
satisfaction • Errors can be difficult
• Reduced dev’t costs to fix
• Reduced system • Costly
failure