Unit 2
Unit 2
Unit 2
Software Design
• Software design is a process to transform user requirements into
some suitable form, which helps the programmer in software coding
and implementation.
• Software design is the step in SDLC (Software Design Life Cycle),
which moves the concentration from problem domain to solution
domain.
• It main purpose is to specify how to fulfill the requirements
mentioned in SRS.
1. Interface Design
• Interface design is the specification of the interaction between a
system and its environment.
• This phase proceeds at a high level of abstraction with respect to the
inner workings of the system i.e, during interface design, the internal
of the systems are completely ignored and the system is treated as a
black box.
• In this design, attention is focused on the dialogue between the target
system and the users, devices, and other systems with which it
interacts.
2. Architectural Design
• Architectural design is the specification of the major components of a
system, their responsibilities, properties, interfaces, and the
relationships and interactions between them.
• In architectural design, the overall structure of the system is chosen,
but the internal details of major components are ignored.
3. Detailed Design
• Design is the specification of the internal elements of all major
system components, their properties, relationships, processing, and
often their algorithms and the data structures.
In summary:
Interface Design: Focuses on external interactions.
Architectural Design: Focuses on the overall system structure.
Detailed Design: Focuses on the internal workings of components.
Elements of a System
1. Architecture: This is the conceptual model that defines the structure,
behavior, and views of a system.
2. Modules: These are components that handle one specific task in a
system. A combination of the modules makes up the system.
3. Components: This provides a particular function or group of related
functions. They are made up of modules.
4. Interfaces: This is the shared boundary across which the components of
a system exchange information and relate.
5. Data: This is the management of the information and data flow.
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.
• Effective modular design can be achieved if the partitioned modules
are separately solvable, modifiable as well as compilable.
• Here separate compilable modules means that after making changes
in a module there is no need of recompiling the whole software
system.
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
• Top-down design takes the whole software system as one entity and
then decomposes it to achieve more than one sub-system or
component based on some characteristics.
• Each sub-system or component is then treated as a system and
decomposed further.
• This process keeps on running until the lowest level of system in the
top-down hierarchy is achieved.
• Top-down design is more suitable when the software solution needs to
be designed from scratch and specific details are unknown.
Bottom-up Design
• The bottom up design model starts with most specific and basic
components.
• It proceeds with composing higher level of components by using basic
or lower level components.
• It keeps creating higher level components until the desired system is
not evolved as one single component.
• With each higher level, the amount of abstraction is increased.
• Bottom-up strategy is more suitable when a system needs to be
created from some existing system, where the basic primitives can be
used in the newer system.
• Both, top-down and bottom-up approaches are not practical
individually. Instead, a good combination of both is used.
Hybrid Design
It is a combination of both the top – down and bottom – up design
strategies. In this we can reuse the modules.
Software project planning
It is a way of planning and leading software projects. It is a part of project
management in which software projects are planned, implemented,
monitored, and controlled.
Need for Software Project Management
to deliver quality products.
keep the cost within the client’s budget constraint.
deliver the project on time.
Project Estimation Techniques
Estimation determines how much money, effort, resources, and time it will take
to build a specific system or product. Estimation is based on −
• Past Data/Past Experience
• Available Documents/Knowledge
• Assumptions
• Identified Risks
There are two main models -
• Line of Code Estimation is done on behalf of number of line of codes in
the software product.
• Function Points Estimation is done on behalf of number of function
points in the software product.
Risk Assessment
It is a process to rank the risks in terms of their damage.
Determine the average probability of occurrence value for each risk.
(denoted as P)
Determine the impact for each component based on impact assessment
matrix.(Severity Value)
Risk Assessment values are determined by multiplying the scores for the
Probability and Severity values together.
RA=P X S
Risk Identification
Risk identification refers to the systematic process of recognizing and
evaluating potential threats or hazards that could negatively impact an
organization, its operations, or its workforce. This involves identifying various
types of risks.
• Technology risks: Risks that assume from the software or hardware
technologies that are used to develop the system.
• People risks: Risks that are connected with the person in the
development team.
• Organizational risks: Risks that assume from the organizational
environment where the software is being developed.
• Tools risks: Risks that assume from the software tools and other support
software used to create the system.
• Requirement risks: Risks that assume from the changes to the customer
requirement and the process of managing the requirements change.
• Estimation risks: Risks that assume from the management estimates of
the resources required to build the system
Risk Analysis
Risk analysis is the process of evaluating and understanding the potential
impact and likelihood of identified risks on an organization. It helps determine
how serious a risk is and how to best manage it.
Risk Control
It is the process of managing risks to achieve desired outcomes. Once the risks
in a plan are identified, the project must prioritize addressing both the most
harmful and the most probable risks.
There are three main methods to plan for risk management:
• Avoid the risk: Risk avoidance can be achieved by discussing with the
client to change the requirements and reduce the project scope and many
other ways.
• Transfer the risk: This method involves getting the risky element
developed by a third party, buying insurance cover, etc.
• Risk reduction: Risk reduction involves planning strategies to minimize
potential losses caused by risks.
Risk Leverage
• Risk leverage is the variation in risk exposure divided by the amount of
reducing the risk.
• Risk leverage = (risk exposure before reduction - risk exposure after
reduction) / (cost of reduction)
1. Risk planning: The risk planning method considers each of the key risks
that have been identified and develop ways to maintain these risks.
2. Risk Monitoring: Risk monitoring is the process of ensuring that your
assumptions about product, process, and business risks remain valid over
time.
COCOMO Model
• Barry Boehm proposed COCOMO (Constructive Cost Estimation Model)
in 1981.
• It is a procedural cost estimate model for software projects and often used
as a process of reliably predicting the various parameters associated with
making a project such as size, effort, cost, time and quality.
• Cocomo (Constructive Cost Model) is a regression model based on LOC,
i.e number of Lines of Code.
The key parameters which define the quality of any software products,
which are also an outcome of the Cocomo are primarily Effort & Schedule:
• Effort: Amount of labor that will be required to complete a task. It is
measured in person-months units.
• Schedule: Simply means the amount of time required for the completion
of the job, which is, of course, proportional to the effort put. It is
measured in the units of time such as weeks, months.
Types of Projects in the COCOMO Model
E = a*(KLOC)b PM
Tdev = c*(E)d
Where,
E is effort applied in Person-Months
KLOC is the estimated size of the software product indicate in Kilo Lines
of Code
2. Intermediate Model
Intermediate Model in which we not need to calculate the time and team size
required for development of the project.
The Intermediate COCOMO formula:
EAF is the Effort Adjustment Factor (EAF) is a multiplier used to refine the
effort estimate obtained from the basic COCOMO model.
3. Detailed Model
In detailed cocomo, the whole software is divided into different modules and
then we apply COCOMO in different modules to estimate effort and then
sum the effort.
The Six phases of detailed COCOMO are:
• Planning and requirements
• System design
• Detailed design
• Module code and test
• Integration and test
• Cost Constructive model
Next from ppt 2.2.2
Ch -3
Attractive Design: Visually appealing UI that draws users in and makes
them want to use the software.
Simplicity: An intuitive, easy-to-navigate design that allows users to
complete tasks without unnecessary complexity.
Responsiveness: Quick and efficient responses to user inputs, reducing wait
times and enhancing productivity.
Clarity: Clear and understandable layout, allowing users to find what they
need without confusion or extensive instructions.
Consistency: Uniform design and layout across all screens, providing a
seamless and familiar experience for users.