XML Parsing error: no root element found
Location: file:///C:/Users/mypc/Desktop/suvinay@28121998/Software%20Design.xml
Line Number 32, Column 18:
-----------------^
Know the answer? Post it — somebody with the same question will find it here.
Sign in to answer this question
It is the same account you read, post and publish with — and you will come straight back to this page.
Software design
Abstraction
Modularity
Software Architecture
Effective modular design – Cohesion and Coupling
Architectural design and Procedural design
Data flow oriented design
Software design encompasses the set of principles, concepts and practices that lead to the development of a high quality system or product.
Design creates a representation or model of the software, but unlike the requirements model, the design model provides details about software architecture, data structures, interfaces and components that are necessary to implement the system.
Software design is an iterative process through which requirements are translated into a ‘ blue print ’ for constructing software.
Software design should correspond to the analysis model – Design element correspond to many requirements, the design model satisfies all the requirements represented by the analysis model.
Choose the right programming paradigm – A program paradigmdescribes the structure of the software system. The paradigm should be chosen keeping constraints in mind such as time, availability of resources and nature of user ” s requirements.
Software design should be flexible – Software design should be flexible enough to adapt changes easily. To achieve the flexibility, the basic design concepts such as abstraction and modularity should be applied effectively.
Software design should represent correspondence between the software and real – world problem – The software design should be structured in such a way that it always relates with the real-world problem.
Software reuse – The software components should be designed in such a way that they can be effectively reused to increase the productivity.
The design concepts help you to answer the following questions –
What criteria can be used to partition software into individual components?
How is function or data structure detail separated from a conceptual representation of the software?
What uniform criteria define the technical quality of a software design?
Software design concepts that span both traditional and object-oriented software development are as follows –
When you consider a modular solution to any problem, many levels of abstraction can be presented.
At the highest level of abstraction, a solution is stated in broad terms and at lower levels of abstraction, a more detailed description of the solution is provided.
As different levels of abstraction are developed, we have to create both procedural and data abstractions.
A Procedural Abstraction refers to a sequence of instructions that have a specific and limited function.
The name of a procedural abstraction implies these functions, butspecific details are suppressed. Example – ‘ Open for a door ’ – here open implies a long sequence of procedural steps.
A Data Abstraction is a named collection of data that describes adata object.
In the context of procedural abstraction open, we can define a data abstraction called door.
The data abstraction for door would encompass a set of attributesthat describes the door. Example – door type, swing direction, opening mechanism etc.
Architecture is the structure or organization of program components (modules), the manner in which these components interact, and the structureof data that are used by the components.
A set of architectural patterns enables a software engineer to solve common design problems.
A design pattern describes a design structure that solves a particular design problem within a specific context.
The design patterns are used to determine
Whether the pattern is applicable to the current work
Whether the pattern can be reused
Whether the pattern can be serve as a guide for developing a similar but functionally or structurally different pattern.
Separation of concerns is a design concept that suggests that anycomplex problem can be more easily handled if it is subdivided into pieces thatcan each be solved independently.
A concern is a feature or behavior that is specified as part of the requirements model for the software.
Modularity is the most common manifestation of separation of concerns.
Modularity is the single attribute of software that allows a program to be intellectually manageable.
Almost all instances, you should break the design into many modules, to make understanding easier and reduce the cost required to build the software.
The cost to develop an individual software module does decrease as the total number of modules increases.
However, as the number of modules increases, the cost associated with integrating the modules also increases.
There is a number M of modules that would result in minimum development cost, but we do not have the necessary sophistication to predict M with assurance.
You should modularize, but care should be taken to stay in vicinity of M.
When a software program is modularized, its tasks are divided into several modules based on some characteristics.
Modules are set of instructions put together in order to achieve some tasks.
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 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 areput 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 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 types 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 itsflow 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 interactwith 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.
Architectural design represents the structure of data and program componentsthat are required to build a computer – based system.
Architectural design begins with data design and then proceeds to the derivation of one or more representations of the architectural structure of the system.
The architectural design can be represented using one or more of an number of different models –
Structural Models – represent architecture as an organizedcollection of program components.
Framework Models – identify repeatable architectural design frameworks that are encountered in similar types of applications.
Dynamic Models – address the behavioral aspects of the program architecture.
Process Models – focus on the design of the business or technical process.
Functional Models – represents the functional hierarchy ofa system.
A number of Architectural Description Languages (ADLs) have been developed to represent these models.
Software Architecture represents a structure in which some collection of components is connected by a set of defined relationships.
A data store resides at the center of this architecture and is accessed frequently by other components that update, add, delete and modify data within the data store.
Data – centered architecture promotes integrability, that is existing components can be changed and new components added to the architecture without concern about other clients.
Client components independently execute processes.
Data – flow architecture is applied when input data are to be transformed through a series of computational components into output data.
A pipe and filter pattern has a set of components called filters, connected by pipes that transmit data from one component to the next.
Each filter works independently on these components and the filter doesn ” t require knowledge of the working of its neighboring filters.
A number of different layers are defined, each accomplishing operations that progressively becomes closer to the machine instruction set.
At the outer layer, components serve user interface operations.
At the inner layer, components perform operating system interfacing.
Intermediate layers provide utility services and application software functions.
The software to be developed must be put into context, that is the design should define external entities like other systems, devices, people that the software interact with and the nature of interaction.
Once the context is modeled and all external software interfaces have been described, you can identify a set of architectural archetypes.
An archetype is an abstraction that represents one element of the system behavior.
A software architect uses Architectural Context Diagram (ACD) to model the manner in which software interacts with entities external to its boundaries.
The generic structure of the architectural context diagram contains
Super – ordinate System – Those systems that uses the target system as part of some higher level processing scheme.
Sub – ordinate System – Those systems that are used by the target system and provide data or processing that are necessary to complete target system functionality.
Peer – level System – Those systems that interact on a peer to peer basis to produce or consume information from target system.
Actor – Entities like people, deices that interact with the target system to produce or consume information that is necessary for processing.
The overall safeHome product controller and the internet based system both are super-ordinate to the security function.
The surveillance function is a peer system and uses security function.
The home – owner and control panel are actors that are both consumers and producers of information used or produced by the security function.
Sensors are used by the security function.
An archetype is a class or pattern that represents a core abstraction that is critical to the design of an architecture for the target system.
The target system architecture is composed of these archetypes, which represents stable elements of the architecture.
Archetypes can be derived by examining the analysis classes defined as part of the requirements model.
Node – Represents a cohesive collection of input and output elements.
Detector – An abstraction that encompasses all sensing equipment thatfeeds information into the target system.
Indicator – An abstraction that represents all mechanisms.
Controller – An abstraction that depicts the mechanisms that allows arming or disarming of a node. If controllers reside on a network they have the ability to communicate with one another.
The software architecture is refined into components, the structure of the system begins to merge.
The interfaces depicted in the architecture context diagram implyone or more specialized components that process the data that flows across the interface.
The safehome home security function might define the set of top-level components that address the following functionalities.
External communication management – coordinates communication of the security function with external entities
Control Panel processing – manages all control panel functionality
Detector management – coordinates access to all detectors attached to the system.
Alarm processing – verifies and acts on all alarm conditions.

Laxmidhar SahooPosted Mar 15, 2020, 3:00 AM
Viswanatha SwamyPosted Mar 14, 2020, 5:03 AM
Viswanatha SwamyPosted Mar 14, 2020, 5:02 AM