Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 16

INTRODUCTION TO

SOFTWARE ENGEENIRING

SYSTEM
DESIGN
MODULE
What is Design
Design is a meaningful engineering
representation of something that is to be
built
Design is the only way that we can
accurately translate a customer’s
requirements into a finished software
product or system
Object-Oriented Concepts Using UML

 UML stands for Unified Modeling Language.


 UML is used to model an application structures, behavior and even
business processes.
 It is a visual modeling language used for analysis, design,
implementation of software based systems, modeling business and
similar processes.
 It is a standard modeling language, not a software development
process.
 It is a standard notation for the modeling of real world objects as a
first step in developing an object-oriented methodology.
 UML is powerful tool to represent all the concepts that exist in
object-oriented analysis and design. UML diagrams are
representation of object-oriented concepts only. Thus, before
learning UML, it becomes important to understand OO concept in
detail.
System Context and interaction

 develop an understanding of the relationships between the


software being designed and its external environment .
 Understanding of the system context also lets you establish
the boundaries (scope) of the system.
 This helps in deciding what features will be implemented in
the system being designed and what features will be in
associated systems.
 Context and interaction models
 A system context model is a static model that identifies 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
Architectural Design

architecture design is a representation


of system which aids in the
understanding of how the system will
behave.
It is a structured framework used to
conceptualize software elements,
relationships and properties.
It serves as the blueprint for both the
system and project.
Object Class Identification

 It is important to consider not only the individual objects, but also


how the objects relate to one another.
 Association: objects of the two classes have some sort of
relationship and can communicate with one another.
 b)Aggregation: a stronger relationship in which there is an
“ownership” or whole-part relationship between the objects (as
opposed to association where the two objects can be thought of as
peers).
 In describing an aggregation, one will typically use phrases like “has
a” or “is a part of”(Note: there is a strong form of aggregation called
composition or containment which we will discuss below)
 c)Inheritance/generalization: a relationship between CLASSES,
notINDIVIDUAL OBJECTS. In describing generalization, one will
typically use phrases like “is a”
Design Model

 A design model in Software Engineering is an object-


based picture or pictures that represent the use cases for
a system.
 Or to put it another way, it is the means to describe a
system's implementation and source code in a
diagrammatic fashion.
 This type of representation has a couple of advantages.
 First, it is a simpler representation than words alone.
 Second, a group of people can look at these simple
diagrams and quickly get the general idea behind a
system.
interface specification

 •Object interfaces have to be specified so that the


objects and other components can be designed in
parallel
 .•Designers should avoid designing the interface
representation but should hide this in the object
itself.
 •Objects may have several interfaces which are
viewpoints on the methods provided.
 •The UML uses class diagrams for interface
specification but Java may also be used.
Design Patterns

 Design Patterns
 In software engineering, a design pattern is a general repeatable
solution to a commonly occurring problem in software design.
 A design pattern isn't a finished design that can be transformed
directly into code. It is a description or template for how to solve a
problem that can be used in many different situations.
 Uses of Design Patterns
 . Design patterns provide general solutions, documented in a format
that doesn't require specifics tied to a particular problem.
 In addition, patterns allow developers to communicate using well-
known, well understood names for software interactions. Common
design patterns can be improved over time, making them more
robust than ad-hoc designs.
Creational design patterns

 Creational design patterns


 These design patterns are all about class
instantiation.
 This pattern can be further divided into class-
creation patterns and object-creational patterns.
While class-creation patterns use inheritance
effectively in the instantiation process
 object-creation patterns use delegation effectively to
get the job done.
Structural design patterns

 These design patterns are all about Class and Object


composition.
 Structural class-creation patterns use inheritance to
compose interfaces.
 Structural object-patterns define ways to compose
objects to obtain new functionality.
Behavioral design patterns

 Behavioral design patterns


 These design patterns are all about Class's objects
communication.
 Behavioral patterns are those patterns that are most
specifically concerned with communication between
objects.
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:–
 Reusability: 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
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.
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.
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, and compile and link components to create a
system.

You might also like