0% found this document useful (0 votes)
28 views4 pages

Software Engineering Notes

The document discusses different types of system models used in analysis including context models, behavioral models, data models, object models, and structured models. It provides details on context models, behavioral models including data flow and state machine models, data models, object models including inheritance models, and discusses concepts like modularization, concurrency, coupling, and cohesion in software design.

Uploaded by

Harsh Rathore
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)
28 views4 pages

Software Engineering Notes

The document discusses different types of system models used in analysis including context models, behavioral models, data models, object models, and structured models. It provides details on context models, behavioral models including data flow and state machine models, data models, object models including inheritance models, and discusses concepts like modularization, concurrency, coupling, and cohesion in software design.

Uploaded by

Harsh Rathore
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/ 4

SYSTEM MODELS

Used in analysis process to develop understanding of the existing system or new system. Excludes
details. An abstraction of the system
Types of system models
1.Context models
2. Behavioural
models 3.Data
models 4.Object
models
5.Structured
models

CONTEXT MODELS
A type of architectural model. Consists of sub-systems that make up an entire
system First step: Toidentify the subsystem.
Represent the high level architectural model as simple block diagram
• Depict each sub system a named rectangle
• Lines between rectangles indicate associations between subsystems Disadvantages
--Concerned with system environment only, doesn't take into account other systems, which may take
data or give data to the model

The context of an ATM system consists of the following Auto-teller system, Security system,
Maintenance system, Account data base, Branch accounting system, Branch counter system

Behavioral models

Describes the overall behaviour of a system. Two types of behavioural


model 1.Data Flow models
2.State machine models

Data flow models --Concentrate on the flow of data and functional transformation on that data.
Show the processing of data and its flow through a sequence of processing steps. Help analyst
understand what is going on
Advantages
-- Simple and easily understandable
-- Useful during analysis of requirements

State machine models


Describe how a system responds to internal or external events. Shows system states and events that
cause transition from one state to another. Does not show the flow of data within the system. Used
for modeling of real time systems
Exp: Microwave oven
Assumes that at any time, the system is in one of a number of possible states. Stimulus triggers a
transition from on state to another state
Disadvantage
-- Number of possible states increases rapidly for large system models

DATA MODELS
Used to describe the logical structure of data processed by the system. An entity-
relation- attribute model sets out the entities in the system, the relationships between
these entities and the entity attributes. Widely used in database design.

OBJECT MODELS
An object oriented approach is commonly used for interactive systems development.
Expresses the systems requirements using objects and developing the system in an
object oriented PL such as c++ A object class: An abstraction over a set of objects
that identifies common attributes. Objects are instances of object class. Many objects
may be created from a single class.
Analysis process
-- Identifies objects and object classes Object class in UML
--Represented as a vertically oriented rectangle with three sections
(a) The name of the object class in the top section
(b) The class attributes in the middle section
(c) The operations associated with the object class are in lower section.

OBJECT MODELS INHERITANCE MODELS


A type of object oriented model which involves in object classes attributes. Arranges
classes into an inheritance hierarchy with the most general object class at the top of
hierarchy Specialized objects inherit their attributes and services
UML notation
-- Inheritance is shown upward rather than downward
--Single Inheritance: Every object class inherits its attributes and operations from a single
parent class
--Multiple Inheritance: A class of several of several parents.

Software design

Software design is a process to transform user requirements into some suitable form, which helps
the programmer in software coding and implementation. For assessing user requirements, an
SRS (Software Requirement Specification) document is created whereas for coding and
implementation, there is a need of more specific and detailed requirements in software terms.

The output of this process can directly be used into implementation in programming languages.
Software design is the first step in SDLC (Software Design Life Cycle), which moves the
concentration from problem domain to solution domain. It tries to specify how to fulfill the
requirements mentioned in SRS.

Software Design Levels

Software design yields three levels of results:


 Architectural Design - The architectural design is the highest abstract version of the system.
It identifies the software as a system with many components interacting with each other. At this
level, the designers get the idea of proposed solution domain.
 High-level Design- The high-level design breaks the ‘single entity-multiple component’
concept of architectural design into less-abstracted view of subsystems and modules and depicts
their interaction with each other. High level design focuses on how the system along with all of
its components can be implemented in forms of modules. It recognizes modular structure of each
sub-system and their relation and interaction among each other.
 Detailed Design- Detailed design deals with the implementation part of what is seen as a
system and its sub-systems in the previous two designs. It is more detailed towards modules and
their implementations. It defines logical structure of each module and their interfaces to
communicate with other modules.
Modularization
Modularization is a technique to divide a software system into multiple discrete and independent
modules, which are expected to be capable of carrying out task(s) independently. These modules
may work as basic constructs for the entire software. Designers tend to design modules such that
they can be executed and/or compiled separately and independently.

Modular design unintentionally follows the rules of ‘divide and conquer’ problem solving
strategy this is because there are many other benefits attached with the modular design of a
software.

Advantage of modularization:
 Smaller components are easier to maintain
 Program can be divided based on functional aspects
 Desired level of abstraction can be brought in the program
 Components with high cohesion can be re-used again
 Concurrent execution can be made possible
 Desired from security aspect

Concurrency
Back in time, all software are meant to be executed sequentially. By sequential execution we
mean that the coded instruction will be executed one after another implying only one portion of
program being activated at any given time. Say, a software has multiple modules, then only one
of all the modules can be found active at any time of execution.

In software design, concurrency is implemented by splitting the software into multiple


independent units of execution, like modules and executing them in parallel. In other words,
concurrency provides capability to the software to execute more than one part of code in parallel
to each other. It is necessary for the programmers and designers to recognize those modules,
which can be made parallel execution.
Example:
The spell check feature in word processor is a module of software, which runs along side the
word processor itself.

Coupling and Cohesion


When a software program is modularized, its tasks are divided into several modules based on
some characteristics. As we know, modules are set of instructions put together in order to achieve
some tasks. They are though, considered as single entity but may refer to each other to work
together. There are measures by which the quality of a design of modules and their interaction
among them can be measured. These measures are called coupling and cohesion.

Cohesion
Cohesion is a measure that defines the degree of intra-dependability within elements of a
module. The greater the cohesion, the better is the program design.

There are seven types of cohesion, namely –


 Co-incidental cohesion - It is unplanned and random cohesion, which might be the result of
breaking the program into smaller modules for the sake of modularization. Because it is
unplanned, it may serve confusion to the programmers and is generally not-accepted.
 Logical cohesion - When logically categorized elements are put together into a module, it is
called logical cohesion.
 Temporal Cohesion - When elements of module are organized such that they are processed at
a similar point in time, it is called temporal cohesion.
 Procedural cohesion - When elements of module are grouped together, which are executed
sequentially in order to perform a task, it is called procedural cohesion.
 Communicational cohesion - When elements of module are grouped together, which are
executed sequentially and work on same data (information), it is called communicational
cohesion.
 Sequential cohesion - When elements of module are grouped because the output of one
element serves as input to another and so on, it is called sequential cohesion.
 Functional cohesion - It is considered to be the highest degree of cohesion, and it is highly
expected. Elements of module in functional cohesion are grouped because they all contribute to a
single well-defined function. It can also be reused.

Coupling
Coupling is a measure that defines the level of inter-dependability among modules of a program.
It tells at what level the modules interfere and interact with each other. The lower the coupling,
the better the program.
There are five levels of coupling, namely -
 Content coupling - When a module can directly access or modify or refer to
the content of another module, it is called content level coupling.
 Common coupling- When multiple modules have read and write access to
some global data, it is called common or global coupling.
 Control coupling- Two modules are called control-coupled if one of them
decides the function of the other module or changes its flow of execution.
 Stamp coupling- When multiple modules share common data structure and
work on different part of it, it is called stamp coupling.
 Data coupling- Data coupling is when two modules interact with each other
by means of passing data (as parameter). If a module passes data structure as
parameter, then the receiving module should use all its components.
 Ideally, no coupling is considered to be the best.

You might also like