Documente Academic
Documente Profesional
Documente Cultură
BASICS
INTRODUCTION
• Architectural design
• Subsystem identification
• services and constraints are specified
• Module design
• modular decomposition is performed; relationships specified
• Detailed design
• Interface design
• module interfaces are negotiated, designed and
documented
• Data structure and algorithm design
• module details (data structures and algorithms) to provide
system services are specified
DESIGN PROCESS
•.
• Services include
• Visual Representation
• Communication Layer
• User I/O
• Client Side Copy
INTERFACE DESIGN - 1
Client information is
stored in the buckets
by mapping them to
the buckets via a
hashfunction.
ALGORITHM DESIGN - 1
• Definition
• The degree to which all elements of a component are
directed towards a single task.
• The degree to which all elements directed towards a task
are contained in a single component.
• The degree to which all responsibilities of a single class are
related.
• Internal glue with which component is constructed
• All elements of component are directed toward
and essential for performing the same task.
22 22
TYPES OF COHESION
• Coincidental cohesion
• Logical association
• Temporal cohesion
• Procedural cohesion
• Communicational cohesion
• Sequential cohesion
• Informational cohesion
• Functional cohesion
COINCIDENTAL COHESION
• Coincidental cohesion is when parts of a module
are grouped arbitrarily; the only relationship
between the parts is that they have been grouped Function A
together. Function Function
B C
• Elements contribute to activities with no meaningful Function Function
relationship to one another. D E
• Example:
Coincidental
• Utility Class: This class contains a collection of public Parts unrelated
and static functions and they are accessible from
different classes. Changes in Utility class will effect
on other classes that are accessing functions of the
utility class.
• Transaction Processing System: In a transaction
processing system (TPS), the get-input, print-error,
and summarize-members functions are grouped
into one module. The grouping does not have any
relevance to the structure of the problem.
LOGICAL COHESION
• Examples:
Temporal
• A function which is called after catching Related by time
an exception which closes open files,
creates an error log, and notifies the user.
• Examples:
• A function which checks file permissions
then opens the file.
• The algorithm for decoding a message.
COMMUNICATIONAL COHESION
Sequential
• Examples: Output of one is
input to another
• A function which reads data from a file and
processes the data and then stores the
data.
• In a TPS, the get-input, validate-input, sort-
input functions are grouped into one
module.
FUNCTIONAL COHESION
Data coupling is
Common Coupling
coupling where
Levels of
lowest
Lower the better
Control Coupling
Stamp Coupling
Data Coupling
Passing only the necessary information
• Example:
• Process control component
maintains current data about state
of operation. Gets data from
multiple sources. Supplies data to
multiple sinks. Each source process
writes directly to global data store.
Each sink process reads directly
from global data store.
• files in disks/secondary storage
CONTROL COUPLING
• Example:
• Customer Billing System
• The print routine of the customer
billing accepts customer data
structure as an argument, parses it,
and prints the name, address, and
billing information.
DATA COUPLING
System level
subsystem
level
module level
System level
subsystem
level
module level
• Types of DFD
• Data Flow Diagrams are either Logical or Physical.
• Entity-Relationship model is
a type of database model
based on the notion of real
world entities and
relationship among them.
We can map real world
scenario onto ER database
model. ER Model creates a
set of entities with their
attributes, a set of
constraints and relation
among them.
• ER Model is best used for the
conceptual design of
database. ER Model can be
represented as follows:
• Entity - An entity in ER Model is a real world being, which has
some properties called attributes. Every attribute is defined by
its corresponding set of values, called domain.
• For example, Consider a school database. Here, a student is
an entity. Student has various attributes like name, id, age and
class etc.
• Relationship - The logical association among entities is
called relationship. Relationships are mapped with entities in
various ways. Mapping cardinalities define the number of
associations between two entities.
• Mapping cardinalities:
• one to one
• one to many
• many to one
• many to many
DATA DICTIONARY
• There are a number of activities performed for designing user interface. The process of GUI
design and implementation is alike SDLC. Any model can be used for GUI implementation
among Waterfall, Iterative or Spiral Model. A model used for GUI design and development
should fulfill these GUI specific steps.
• GUI Requirement Gathering - The designers may like to have list of all functional and non-
functional requirements of GUI. This can be taken from user and their existing software solution.
• User Analysis - The designer studies who is going to use the software GUI. The target audience
matters as the design details change according to the knowledge and competency level of
the user. If user is technical savvy, advanced and complex GUI can be incorporated. For a
novice user, more information is included on how-to of software.
• Task Analysis - Designers have to analyze what task is to be done by the software solution. Here
in GUI, it does not matter how it will be done. Tasks can be represented in hierarchical manner
taking one major task and dividing it further into smaller sub-tasks. Tasks provide goals for GUI
presentation. Flow of information among sub-tasks determines the flow of GUI contents in the
software.
• GUI Design & implementation - Designers after having information about requirements, tasks and
user environment, design the GUI and implements into code and embed the GUI with working
or dummy software in the background. It is then self-tested by the developers.
• Testing - GUI testing can be done in various ways. Organization can have in-house inspection,
direct involvement of users and release of beta version are few of them. Testing may include
usability, compatibility, user acceptance etc.
GUI IMPLEMENTATION TOOLS
• Top-down analysis - A software is always made to perform some rational work. This
rational work is known as problem in the software parlance. Thus it is very important
that we understand how to solve the problem. Under top-down analysis, the
problem is broken down into small pieces where each one has some significance.
Each problem is individually solved and steps are clearly stated about how to solve
the problem.
• Modular Programming - While programming, the code is broken down into smaller
group of instructions. These groups are known as modules, subprograms or
subroutines. Modular programming based on the understanding of top-down
analysis. It discourages jumps using ‘goto’ statements in the program, which often
makes the program flow non-traceable. Jumps are prohibited and modular format
is encouraged in structured programming.
• First class and High-order functions - These functions have capability to accept
another function as argument or they return other functions as results.
• Pure functions - These functions do not include destructive updates, that is, they do
not affect any I/O or memory and if they are not in use, they can easily be removed
without hampering the rest of the program.
• Recursion - Recursion is a programming technique where a function calls itself and
repeats the program code in it unless some pre-defined condition matches. Recursion
is the way of creating loops in functional programming.
• Strict evaluation - It is a method of evaluating the expression passed to a function as
an argument. Functional programming has two types of evaluation methods, strict
(eager) or non-strict (lazy). Strict evaluation always evaluates the expression before
invoking the function. Non-strict evaluation does not evaluate the expression unless it
is needed.
• λ-calculus - Most functional programming languages use λ-calculus as their type
systems. λ-expressions are executed by evaluating them as they occur.