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

lec 15 Ch7 Implementation

The lecture covers object-oriented design using UML, implementation issues, and open source development in software engineering. It emphasizes the importance of design models, configuration management, and the potential for software reuse. Additionally, it discusses the principles of open source development and various licensing models.

Uploaded by

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

lec 15 Ch7 Implementation

The lecture covers object-oriented design using UML, implementation issues, and open source development in software engineering. It emphasizes the importance of design models, configuration management, and the potential for software reuse. Additionally, it discusses the principles of open source development and various licensing models.

Uploaded by

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

Software Engineering

CSCI 3701

Lecture 15: Design and


Implementation

Presented By:
Prof. Sally Mohamed Elghamrawy

1
Topics covered

• Object-oriented design using the UML


• Implementation issues
• Open source development

2
Build or buy

• In a wide range of domains, it is now possible to buy off-the-shelf


systems (COTS) that can be adapted and tailored to the users’
requirements.
– For example, if you want to implement a medical records system,
you can buy a package that is already used in hospitals. It can be
cheaper and faster to use this approach rather than developing a
system in a conventional programming language.
• When you develop an application in this way, the design process
becomes concerned with how to use the configuration features of
that system to deliver the system requirements.

3
Object-oriented design using the UML

4
An object-oriented design process

• Structured object-oriented design processes involve developing a


number of different system models.

• They require a lot of effort for development and maintenance of


these models and, for small systems, this may not be cost-effective.

• However, for large systems developed by different groups design


models are an important communication mechanism.

5
Context and interaction models

• A system context model is a structural model that demonstrates the


other systems in the environment of the system being developed.

• An interaction model is a dynamic model that shows how the system


interacts with its environment as it is used.

6
System context for the weather station

7
Weather station use cases

8
Architectural design

• Once interactions between the system and its environment


have been understood, you use this information for
designing the system architecture.
• You identify the major components that make up the system and
their interactions, and then may organize the components using an
architectural pattern such as a layered or client-server model.
• The weather station is composed of independent subsystems that
communicate by broadcasting messages on a common
infrastructure.

9
High-level architecture of the weather
station

10
Architecture of data collection system

11
Object class identification

Identifying object classes is often a difficult part of object


oriented design.
Approaches to identification
• Use a grammatical approach based on a natural language
description of the system.
• Base the identification on tangible things in the application
domain.
• Use a behavioural approach and identify objects based on what
participates in what behaviour.
• Use a scenario-based analysis. The objects, attributes and
methods in each scenario are identified.
12
Weather station object classes

• Object class identification in the weather station system may


be based on the tangible hardware and data in the system:
– Ground thermometer, Anemometer, Barometer
• Application domain objects that are ‘hardware’ objects related to the
instruments in the system.
– Weather station
• The basic interface of the weather station to its environment. It therefore
reflects the interactions identified in the use-case model.
– Weather data
• Encapsulates the summarized data from the instruments.

13
Weather station object classes

14
Design models

• Design models show the objects and object classes and relationships
between these entities.

• There are two kinds of design model:

– Structural models describe the static structure of the system in


terms of object classes and relationships.

– Dynamic models describe the dynamic interactions between


objects.

15
Examples of design models

• Subsystem models that show logical groupings of objects


into coherent subsystems.
• Sequence models that show the sequence of object
interactions.
• State machine models that show how individual objects
change their state in response to events.
• Other models include use-case models, aggregation models,
generalisation models, etc.

16
Sequence models

• Sequence models show the sequence of object interactions that take


place
– Objects are arranged horizontally across the top;
– Time is represented vertically so models are read top to bottom;
– Interactions are represented by labelled arrows, Different styles of
arrow represent different types of interaction;
– A thin rectangle in an object lifeline represents the time when the
object is the controlling object in the system.

17
Sequence diagram describing data collection

18
State diagrams

• State diagrams are used to show how objects respond to


different service requests and the state transitions triggered
by these requests.
• State diagrams are useful high-level models of a system or an
object’s run-time behavior.
• You don’t usually need a state diagram for all of the objects in the
system. Many of the objects in a system are relatively simple and a
state model adds unnecessary detail to the design.

19
Weather station state diagram

20
Implementation issues

21
Implementation issues

• Focus here is not on programming, although this is obviously


important, but on other implementation issues that are often not
covered in programming texts:

– Reuse

– Configuration management

– Host-target development

22
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-target development 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).

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

24
Software reuse

25
Configuration management tool
interaction

Configuration management is the name given to the general process of managing a


changing software system.

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

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

28
Host-target development

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

30
Open source development

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

32
License models
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.

• 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.
33
Key points

• Software design and implementation are inter-leaved activities. The


level of detail in the design depends on the type of system and whether
you are using a plan-driven or agile approach.
• The process of object-oriented design includes activities to design the
system architecture, identify objects in the system, describe the design
using different object models and document the component interfaces.
• A range of different models may be produced during an object-oriented
design process. These include static models (class models, generalization
models, association models) and dynamic models (sequence models,
state machine models).
• Component interfaces must be defined precisely so that other objects
can use them. A UML interface stereotype may be used to define
interfaces.

34
Key points

• 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. It is essential when a team of people are
cooperating to develop software.
• 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. This means that many people can propose changes
and improvements to the software.

35

You might also like