0% found this document useful (0 votes)
26 views

Lect5 Implementation

The document summarizes key points from a lecture on software implementation, including defining the implementation phase, good programming practices like modularity and commenting, ways to implement systems using programming languages or IDEs, factors to consider when selecting a programming language, and issues around reuse, configuration management, and host-target development.

Uploaded by

Zainab Augie
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views

Lect5 Implementation

The document summarizes key points from a lecture on software implementation, including defining the implementation phase, good programming practices like modularity and commenting, ways to implement systems using programming languages or IDEs, factors to consider when selecting a programming language, and issues around reuse, configuration management, and host-target development.

Uploaded by

Zainab Augie
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 31

09/13/2023 SWE2301: Introduction to software Engineering 1

SWE2301:INTRODUCTION TO
SOFTWARE ENGINEERING
Lecture 05: Software Implementation
Venue: CIT Theater
Time: 10-1pm
Presented by M. I. Mukhtar
09/13/2023 SWE2301: Introduction to software Engineering 2

Lecture Outline
• Implementation
• Implementation issues
• Open source development
09/13/2023 Implementation & Testing 3

Implementation
• After requirements analysis and design, the next activity
in line is the ‘implementation’.

• This phase involves the creation of the actual product:


• Programming aspect phase of the software program.
09/13/2023 Implementation & Testing 4

Good Programming Practices


• Some proven good programming practices to be adopted
by programmers are:

• Modularity: A good programming practice is to group


and code your system as small manageable modules.

• Commenting & Documentation: Good commenting


practice ensures that each module or section of code is
not misinterpreted, a programmer would not get lost and
makes the program easier to maintain by another party.

• Consistent naming scheme:


• camelCase and usage of Underscores
09/13/2023 Implementation & Testing 5

Good Programming practices


• Consistent Indentation: Easier to detected error, easier
to read/learn, provides proper understanding of the
codes, easier to maintain…..

• Debugging: It is good to debug every module once you


are done and not the entire program. It helps detect
faults/errors before the modules are integrated as one
system, therefore saves time.
09/13/2023 Implementation & Testing 6

Ways of System Implementation


There are different ways by which a system can be
implemented:

1. By using a programming Language.

2. By using an integrated development environment (IDE )

3. By using tools that are available for the development of


applications such as Dreamweaver for web application
development.
09/13/2023 Implementation & Testing 7

Programming Language.
• Developing a system using a programming language
involve writing lines of code for the different modules of
the system in the selected programming language

• There are several factors to consider when selecting a


programming language to implement a system.
09/13/2023 Implementation & Testing 8

Factors to Consider in Selecting


Traditional programming Language.
• Familiarity: Developer should choose the language
he/she is familiar with, does not have to learn a new
language from the scratch

• Targeted platform – to be run on Windows, Linux(Unix),


Mac. There are certain languages that does not have
platform compilers.

• Complexity of the programming Language – Some


languages require smaller amount of code compared to
others.
09/13/2023 Implementation & Testing 9

Factors to Consider in Selecting


Traditional programming Language.
• Performance and Speed: Some programming languages
are more efficient than others in terms of speed and
performance

• Support and community: The presence of a strong


online support group may encourage a programmer to
choose one programming language over another.

• Availability of Libraries: it is very significant to


programmers when choosing a language, as it saves
them a lot of time since they do not need to explicitly
write the codes themselves.
09/13/2023 Implementation & Testing 10

Factors to Consider in Selecting


Traditional programming Language.
• Development time: Some programming languages, such
as Visual BASIC, have the advantage that they have
certain visual features that allow for very quick interface
design and this ultimately makes it easy to develop
quicker than others.

• Development Costs: Languages for which licenses have


to be purchased cost more compared to open-source
languages such as Java and PHP which are ultimately
free
09/13/2023 SWE2301: Introduction to software Engineering 11

Integrated development environments (IDEs)

• Software development tools are often grouped to create 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.

• IDEs are created to support development in a specific


programming language such as Java. The language IDE may
be developed specially, or may be an instantiation of a
general-purpose IDE, with specific language-support tools.
09/13/2023 Implementation & Testing 12

Benefits of Using an IDE


• Less time and effort: The goal of using an IDE is to make
development of software easier and faster. Its tools and
features help users in organizing resources,
preventing/minimizing mistakes and providing shortcuts.

• Enforce Project Standards: By working in the same


development environment, a group of programmers will
adhere to a standard way of doing things.

• Project Management: IDEs provide visual presentation of


resources, hereby makes it is easier for a developer to know
how an application is structured as opposed to coding
through the command line.
09/13/2023 Implementation & Testing 13

Benefits of Using an IDE..


• Refactoring: IDEs make it easier to change the name of a
package, class, methods or fields and all source code in the
project will automatically reference the elements by their new
names.

• Navigation: most IDEs saves the developer time and energy


by highlighting the error lines or bugs, thereby saving the
user the time and stress to manually inspect programs line
by line for these errors.
09/13/2023 SWE2301: Introduction to software Engineering 14

Implementation issues
• Reuse Most modern software is constructed by reusing
existing components or systems. When you are developing
software, you should make as much use as possible of
existing code.

• Configuration management During the development process,


you have to keep track of the many different versions of each
software component in a configuration management system.

• Host-targetdevelopment Production software does not


usually execute on the same computer as the software
development environment. Rather, you develop it on one
computer (the host system) and execute it on a separate
computer (the target system).
09/13/2023 SWE2301: Introduction to software Engineering 15

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.

• Costs and schedule pressure mean that this approach


became increasingly unviable, 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.
09/13/2023 SWE2301: Introduction to software Engineering 16

Reuse levels
• The abstraction level: At this level, you don’t reuse software
directly but use knowledge of successful abstractions in the
design of your software.

• The object level: At this level, you directly reuse objects from
a library rather than writing the code yourself.

• The component level: Components are collections of objects


and object classes that you reuse in application systems.

• The system level: At this level, you reuse entire application


systems.
09/13/2023 SWE2301: Introduction to software Engineering 17

Reuse costs
• The costs of the time spent in looking for software to reuse
and assessing whether or not it meets your needs.

• Where applicable, the costs of buying the reusable software.


For large off-the-shelf systems, these costs can be very
high.

• The costs of adapting and configuring the reusable software


components or systems to reflect the requirements of the
system that you are developing.

• The costs of integrating reusable software elements with


each other (if you are using software from different sources)
and with the new code that you have developed.
09/13/2023 SWE2301: Introduction to software Engineering 18

Configuration management
• Configuration management is the name given to the
general process of managing a changing software system.

• The aim of configuration management is to:


• support the system integration process so that all
developers can access the project code and documents
in a controlled way,
• find out what changes have been made,
• compile and link components to create a system.
09/13/2023 SWE2301: Introduction to software Engineering 19

Configuration management activities


• Version management, where support is provided to keep
track of the different versions of software components.
Version management systems include facilities to coordinate
development by several programmers.

• System integration, where support is provided to help


developers define what versions of components are used to
create each version of a system. This description is then
used to build a system automatically by compiling and
linking the required components.

• Problem tracking, where support is provided to allow users


to report bugs and other problems, and to allow all
developers to see who is working on these problems and
when they are fixed.
09/13/2023 SWE2301: Introduction to software Engineering 20

Host-target development
• Most software is developed on one computer (the host),
but runs on a separate machine (the target).

• More generally, we can talk about a development


platform and an execution platform.
• A platform is more than just hardware. It includes the
installed operating system plus other supporting
software such as a database management system or,
for development platforms, an interactive development
environment.

• Development platform usually has different installed


software than execution platform; these platforms may
have different architectures.
09/13/2023 SWE2301: Introduction to software Engineering 21

Development platform tools


• An integrated compiler and syntax-directed editing
system that allows you to create, edit and compile code.

• A language debugging system.

• Graphical editing tools, such as tools to edit UML


models.

• Testing tools, such as Junit that can automatically run a


set of tests on a new version of a program.

• Project support tools that help you organize the code for
different development projects.
09/13/2023 SWE2301: Introduction to software Engineering 22

Component/System deployment factors


• 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.

• 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.

• Component communications
• If there is a high level of communications traffic between components, it
usually makes sense to deploy them on the same platform or on platforms
that are physically close to one other. This reduces the delay between the
time a message is sent by one component and received by another.
09/13/2023 SWE2301: Introduction to software Engineering 23

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.

• Its roots are in the Free Software Foundation (www.fsf.org),


which advocates that source code should not be proprietary
but rather should always be available for users to examine
and modify as they wish.

• Open source software extended this idea by using the


Internet to recruit a much larger population of volunteer
developers. Many of them are also users of the code.
09/13/2023 SWE2301: Introduction to software Engineering 24

Open source systems


• The best-known open source product is, of course, the
Linux operating system which is widely used as a server
system and, increasingly, as a desktop environment.

• Other important open source products are Java, the


Apache web server and the mySQL database management
system.
09/13/2023 SWE2301: Introduction to software Engineering 25

Open source issues


• Should the product that is being developed make use of
open source components?

• Should an open source approach be used for the


software’s development?
09/13/2023 SWE2301: Introduction to software Engineering 26

Open source business


• More and more product companies are using an open
source approach to development.

• Their business model is not reliant on selling a software


product but on selling support for that product.

• They believe that involving the open source community


will allow software to be developed more cheaply, more
quickly and will create a community of users for the
software.
09/13/2023 SWE2301: Introduction to software Engineering 27

Open source licensing


• A fundamental principle of open-source development is that
source code should be freely available, this does not mean
that anyone can do as they wish with that code.
• Legally, the developer of the code (either a company or an
individual) still owns the code. They can place restrictions on
how it is used by including legally binding conditions in an
open source software license.

• Some open source developers believe that if an open source


component is used to develop a new system, then that system
should also be open source.

• Others are willing to allow their code to be used without this


restriction. The developed systems may be proprietary and sold
as closed source systems.
09/13/2023 SWE2301: Introduction to software Engineering 28

License models
• The GNU General Public License (GPL). This is a so-called
‘reciprocal’ license that means that if you use open source
software that is licensed under the GPL license, then you
must make that software open source.

• The GNU Lesser General Public License (LGPL) 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.

• The Berkley Standard Distribution (BSD) License. This is a


non-reciprocal license, which means you are not obliged to
re-publish any changes or modifications made to open source
code. You can include the code in proprietary systems that
are sold.
09/13/2023 SWE2301: Introduction to software Engineering 29

License management
• Establish a system for maintaining information about
open-source components that are downloaded and used.

• Be aware of the different types of licenses and understand


how a component is licensed before it is used.

• Be aware of evolution pathways for components.


• Educate people about open source.
• Have auditing systems in place.
• Participate in the open source community.
09/13/2023 SWE2301: Introduction to software Engineering 30

Summary
• When developing software, you should always consider
the possibility of reusing existing software, either as
components, services or complete systems.

• Configuration management is the process of managing


changes to an evolving software system.

• Most software development is host-target development.


You use an IDE on a host machine to develop the
software, which is transferred to a target machine for
execution.

• Open source development involves making the source


code of a system publicly available.
09/13/2023 SWE2301: Introduction to software Engineering 31

Question ??

You might also like