Software Engineering Notes
Software Engineering Notes
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
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
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.
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.
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.
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.
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.