Implementation Issues, Open-Source Development - Open-Source Licensing - GPL, LGPL, BSD.
Implementation Issues, Open-Source Development - Open-Source Licensing - GPL, LGPL, BSD.
1. The abstraction level At this level, you don’t reuse software directly but
rather use knowledge of successful abstractions in the design of your
software. Design patterns and architectural patterns are ways of
representing abstract knowledge for reuse.
2. The object level At this level, you directly reuse objects from a library
rather than writing the code yourself. To implement this type of reuse, you
have to find appropriate libraries and discover if the objects and methods
offer the functionality that you need. For example, if you need to process email
messages in a Java program, you may use objects and methods from a JavaMail library
3. The component level Components are collections of objects and
object classes that operate together to provide related functions and
services. You often have to adapt and extend the component by adding
some code of your own. An example of component-level reuse is where
you build your user interface using a framework.
4. The system level At this level, you reuse entire application systems.
This function usually involves some kind of configuration of these
systems. This may be done by adding and modifying code (if you are
reusing a software product line) or by using the system’s own
configuration interface.
(Commercial Off-the Shelf System)
Lakshmi M B, SCET
• By reusing existing software, you can develop new systems more
quickly, with fewer development risks and at lower cost.
• The costs that are associated with reuse:
1. The costs of the time spent in looking for software to reuse and assessing
whether or not it meets your needs.
2. Where applicable, the costs of buying the reusable software.
3. The costs of adapting and configuring the reusable software components or
systems to reflect the requirements of the system that you are developing.
4. The costs of integrating reusable software elements with each other and
with the new code that you have developed.
2. Configuration Management:
platform”).
• A platform includes the installed operating system plus other
supporting software such as a database management system or,
for development platforms, an interactive development
environment.
• Simulators are often used when developing embedded systems.
• Simulators speed up the development process for embedded systems as
each developer can have his or her own execution platform with no need
to download the software to the target hardware.
• A software development platform should provide a range of tools to
support software engineering processes. These may include:
1. An integrated compiler and syntax-directed editing system that allows you to
create, edit, and compile code.
2. A language debugging system
3. Graphical editing tools, such as tools to edit UML models.
4. Testing tools, such as JUnit, that can automatically run a set of tests on a new
version of a program.
5. Tools to support refactoring and program visualization.
6. Configuration management tools to manage source code versions and to
integrate
and build systems.
• In addition to these standard tools, your development system may
include more specialized tools such as static analyzers.
• Software development tools are now usually installed within an
integrated development environment (IDE).
• An IDE is a set of software tools that supports different aspects of
software development within some common framework and user
interface.
• A general-purpose IDE is a framework for hosting software tools that
provides data management facilities for the software being developed
and integration mechanisms that allow tools to work together. The
best-known general-purpose IDE is the Eclipse environment.
• As part of the development process, you need to make decisions about
how the developed software will be deployed on the target platform.
• Issues that you have to consider in making this decision are:
1. The hardware and software requirements of a component.
• If a component is designed for a specific hardware architecture, or relies on some other
software system, it must obviously be deployed on a platform that provides the required
hardware and software support.
2. The availability requirements of the system.
• High-availability systems may require components to be deployed on more than one platform.
This means that, in the event of platform failure, an alternative implementation of the
component is available.
3. Component communications.
• If there is a lot of intercomponent communication, it is usually best to deploy them on the
same platform or on platforms that are physically close to one another. This reduces
communications latency—the delay between the time that a message is sent by one
component and received by another.
OPEN-SOURCE DEVELOPMENT
• Open-source development is an approach to software
development in which the source code of a software system is
published and volunteers are invited to participate in the
development process.
• Open-source software is the backbone of the Internet and
software engineering.
• The Linux operating system is the most widely used server system,
as is the open-source Apache web server. Other important and
universally used open-source products are Java, the Eclipse IDE,
and the mySQL database management system.
• It is usually cheap or even free to acquire open-source software.
2. The GNU Lesser General Public License (LGPL) This is a variant of the GPL license
where you can write components that link to open-source code without having to
publish the source of these components. However, if you change the licensed
component, then you must publish this as open source.