SW 2
SW 2
SW 2
42020026
Group2
Dr: Sara Ahmed
Software 2
This part covered implementation issues
• ▪ Reuse
• ▪ Configuration management
• ▪ Host-target development
Reuse
• From the 1960s to the 1990s, most new software was developed from scratch, by
writing all code in a high level programming language. ▪
• The only significant reuse or software was the reuse of functions and objects in programming language
libraries.
• Programming interfaces of present-day languages are very sophisticated and
are equipped huge library functions. Still, to bring the cost down of end
product, the organization management prefers to reuse the code, which was
created earlier for some other software. There are huge issues faced by
programmers for compatibility checks and deciding how much code to reuse.
• Costs and schedule pressure mean that this approach became increasingly unrealistic,
especially for commercial and Internet-based systems.
• An approach to development based around the reuse of existing software emerged and
is now generally used for business and scientific software.
Reuse levels
• The abstraction level
• At the abstraction level, software developers do not directly reuse software components or systems. Instead, they leverage knowledge of successful
abstractions in the design of their own software. This involves identifying common patterns, architectures, or design principles that have proven
effective in previous projects and applying them to the current software design. By using these higher-level abstractions, developers can improve
the overall quality and maintainability of their software.
• The object level
• The object level of reuse involves directly reusing objects from a library or pre-existing codebase. Objects are modular units of code that
encapsulate data and the operations that can be performed on that data. Rather than writing the code from scratch, developers can leverage pre-
built objects that have already been tested and proven to work correctly. This level of reuse saves time and effort, as developers can focus on
creating higher-level logic by assembling and configuring existing objects.
• Version control
• Version control is a fundamental part of configuration management. It involves managing different versions of software
artifacts, such as source code files, documentation, and configuration files
• System integration .
• Configuration management facilitates system integration by ensuring that various components, subsystems, and modules work
together seamlessly. It involves defining and managing the interfaces, dependencies, and interactions between different parts of
the software system. Configuration management helps ensure that the correct versions of components are integrated and that
any conflicts or compatibility issues are identified and resolved.
• Problem tracking
• Problem tracking, also known as issue or bug tracking, is an integral part of configuration management. It involves tracking and
managing reported issues, bugs, or feature requests related to the software system.
• Release management,
Release management focuses on packaging, distributing, and deploying software releases. It involves
creating release packages, documenting release notes, and coordinating the release process.
Host-target development
• The best-known open source product is, the Linux used as a server
system