Software Engg PB Unit12345
Software Engg PB Unit12345
Prepared By :
Mr. Pradeep Baniya
Asst. Prof.
CSE, Dept. MU Indore
Unit-1
Introduction of Software
1. Problem and Prospects
2. Software development process
I. System Development Life Cycle
II. Process Models:- (Waterfall Model, Spiral Model and Other
Process Models)
3. Unified process Agile development
I. Agile Process- Extreme Programming
II. Other agile Process models (Lean, Kanban)
Introduction of Software
• Effectiveness: Effectiveness results from things being created in accordance with the
standards.
• Reduces complexity: Large challenges are broken down into smaller ones and solved one
at a time in software engineering. Individual solutions are found for each of these issues.
• Productivity: Because it contains testing systems at every level, proper care is done to
system or project, sometimes called the Software Development Life Cycle (SDLC).
• There are several approaches (see Software Development Approaches) that can be used to
development process. However, each approach is composed of the same basic steps of
development.
Purpose of Software Development Process
• A solid software development process ensures that high-quality software products are
made quickly and well. A well-thought-out and well-executed method has several
advantages:
1. Quality assurance
4. Risk management
6. Continuous improvement
Purpose of Software Development Process
Software Development Process Steps
The software development process consists of four major steps.
Step 1: Planning
Step 2: Implementation
Step 3: Testing
Step 4: Deployment and Maintenance
Software Development Life Cycle (SDLC)
SDLC Phases
Software Development Life Cycle (SDLC)
Several SDLC models exist, including the waterfall model, spiral model, V-shaped model,
iterative model and agile model. The use of SDLC enables programmers to work concurrently
and evaluate each part of the software development process effectively.
Phases in SDLC
There are various phases in the Software Development Life Cycle (SDLC), which are as
follows:
1. Requirement Gathering Phase
2. Analysis Phase
3. Design Phase
4. Development Phase
5. Testing Phase
Some Circumstances where the use of the Waterfall model is most suited are:
1. When the requirements are constant and not changed regularly.
2. A project is short
3. Where the tools and technology used is consistent and is not changing
Today, Agile methodology is often used in place of the waterfall model. However, there are
advantages to the waterfall approach, such as the following:
1. enables large or changing teams to move toward a common goal that's been defined in the
requirements stage;
2. forces structured, disciplined organization;
3. simplifies understanding, following and arranging tasks;
4. facilitates departmentalization and managerial control based on the schedule or deadlines;
5. reinforces good coding habits to define before implementing design and then code;
6. enables early system design and specification changes to be easily done; and
7. clearly defines milestones and deadlines.
SDLC Models
• Disadvantages of Waterfall model
1. Disadvantages of the waterfall model typically center around the risk associated with a lack of revision
and flexibility. Specific issues include the following:
2. Design isn't adaptive; when a flaw is found, the entire process often needs to start over.
3. Method doesn't incorporate mid process user or client feedback, and makes changes based on results.
4. Waterfall model delays testing until the end of the development lifecycle.
5. It doesn't consider error correction.
6. The methodology doesn't handle requests for changes, scope adjustments and updates well.
7. Waterfall doesn't let processes overlap for simultaneous work on different phases, reducing overall
efficiency.
8. No working product is available until the later stages of the project lifecycle.
9. Waterfall isn't ideal for complex, high-risk ongoing projects.
2. Iterative Waterfall Model
• When to use the Iterative Waterfall Model
2. Technology is understood.
3. It can give a false impression of progress as there is no output until the project’s
completion.
4. Integration is one big bang at the end.
2. the objectives of the entire system are clearly stated and recognized, though some details
The incremental model offers many advantages, including the ability to risk-manage progress
and increase efficiency. Here are a few other advantages of this approach:
1. Improved efficiency—The incremental model can help to increase efficiency by allowing
teams to plan and organize work more effectively. This approach can also help to reduce
the risk of bottlenecks or dependency issues.
2. Risk-managed progress—Teams can risk-manage progress by testing their project in
stages. This means that they can identify and address issues as they emerge and make
adjustments as necessary.
3. Clear reporting and tracking—The incremental model allows teams to clearly report and
track their progress, which can help to improve project visibility and collaboration across
teams.
• Pros of the Incremental Model
4. Feedback is possible— In the incremental model, the user or the customer can submit
The incremental model is not suitable for every project and comes with some inherent risks,
including:
1. This model has to be carefully planned and designed at the beginning, or the entire goal of
incrementing will be defeated.
2. There's a risk that teams will lose focus and their project will become uncoordinated.
3. The iteration stages are rigorous, and they don't overlap.
4. If teams don't take time to plan their work and organize their project, they may end up
delivering low-quality work and falling behind schedule.
5. It can lead to wasted effort, as teams may continually have to renegotiate and reprioritize
work, which can lead to inefficiencies.
6. When there's a problem in one unit, it has to be fixed in all units, which is time-consuming.
4. Evolutionary Model
Evolutionary Model :-
An evolutionary model involves breaking down the software development process into
smaller, manageable increments or iterations. Each iteration involves the completion of a
subset of the overall software requirements, allowing for continuous testing, feedback, and
refinement. This approach enables the software to evolve and improve over time, as new
requirements and insights emerge.
In simple words, “Iterative” + “Incremental model” = Evolutionary model.
• Advantages and Disadvantages
Advantages Disadvantages
Allows for incremental development May require more time and effort to
and improvement manage and coordinate changes
Facilitates continuous feedback and May not be suitable for projects with
collaboration with stakeholders strict deadlines or fixed budgets
Reduces the risk of project failure by Can result in a less predictable and more
identifying issues early on uncertain development process
5. Prototype Model
Prototype Model :-
• In this process model, the system is partially implemented before or during the analysis
phase thereby giving the customers an opportunity to see the product early in the life cycle.
• The process starts by interviewing the customers and developing the incomplete high-level
paper model.
• This document is used to build the initial prototype supporting only the basic functionality
them. The process continues until the user approves the prototype and finds the working
model to be satisfactory.
Steps of Prototype Model
• Requirement Gathering and Analysis
• Quick Decision
• Build a Prototype
• Prototype Refinement
• Engineer Product
Advantage of Prototype Model
• Reduce the risk of incorrect user requirement
• Errors can be detected much earlier as the system is made side by side.
Disadvantage of Prototype Model
• An unstable/badly implemented prototype often becomes the final product.
• Easy to fall back into the code and fix without proper requirement analysis, design,
• It is a time-consuming process.
6. Spiral Model
Spiral Model
Spiral Model = Concept of Waterfall lifecycle+ Iterative model.
• The spiral model, is an evolutionary software process model that couples the iterative
feature of prototyping with the controlled and systematic aspects of the linear sequential
model.
• It implements the potential for rapid development of new versions of the software.
• Using the spiral model, the software is developed in a series of incremental releases.
• During the early iterations, the additional release may be a paper model or prototype.
• During later iterations, more and more complete versions of the engineered system are
produced.
Spiral Model
Each cycle in the spiral is divided into four parts:
• Objective setting: Each cycle in the spiral starts with the identification of purpose for that
cycle, the various alternatives that are possible for achieving the targets, and the constraints
that exists.
• Risk Assessment and reduction: The next phase in the cycle is to calculate these various
alternatives based on the goals and constraints. The focus of evaluation in this stage is
located on the risk perception for the project.
• Development and validation: The next phase is to develop strategies that resolve
uncertainties and risks. This process may include activities such as benchmarking,
simulation, and prototyping.
Spiral Model
Each cycle in the spiral is divided into four parts:
• Planning: Finally, the next step is planned. The project is reviewed, and a choice made
whether to continue with a further period of the spiral. If it is determined to keep, plans are
drawn up for the next step of the project.
Spiral Model
When to use Spiral Model?
• When deliverance is required to be frequent.
Disadvantages
• Can be a costly model to use.
• A software project can be implemented using this model if the project can be broken down
into small modules wherein each module can be assigned independently to separate teams.
RAD Model
• These modules can finally be combined to form the final product. Development of each
module involves the various basic steps as in the waterfall model i.e. analyzing, designing,
coding, and then testing, etc. as shown in the previous figure.
• Another striking feature of this model is a short period i.e. the time frame for
cycle, the project can be time-boxed, the functionality delivered in increments, high
performance is not required, low technical risks are involved and the system can be
modularized.
• In these cases, we can use the RAD Model. when it is necessary to design a system that can
• The use of powerful development tools results in better quality products in comparatively
• It is easier to accommodate changing requirements due to the short iteration time spans.
• The absence of reusable components can lead to the failure of the project.
• The team leader must work closely with the developers and customers to close the project
on time.
• The systems which cannot be modularized suitably cannot use this model.
• It is not meant for small-scale projects as in such cases, the cost of using automated tools
development time.
• It is also suitable for projects where requirements can be modularized and reusable
relevant knowledge and the ability to use powerful techniques are a necessity.
• The model should be chosen when the budget permits the use of automated tools and
techniques required.
Limitations/Drawbacks:
• It requires multiple teams or a large number of people to work on the scalable projects.
• This model requires heavily committed developer and customers. If commitment is lacking
• In CBD model, multiple classes can be used. These classes are basically the prepackaged
components.
The model works in following manner:
• Step-1: First identify all the required candidate components, i.e., classes with the help of
development.
• Step-4: But if the required component is not present in the library then build or create the
system.
• Step-6: Repeat steps 1 to 5 for creating n iterations, where n denotes the number of
• It is also known as the Unified Process Model. It is created by Rational corporation and
• IBM allows us to customize, design, and personalize the unified process. RUP is proposed
• Identifies the scope of the project using a use-case model allowing managers to estimate
project.
• The project plan, Project goal, risks, use-case model, and Project description, are made.
• The project is checked against the milestone criteria and if it couldn’t pass these criteria
• A detailed evaluation and development plan is carried out and diminishes the risks.
• Revise or redefine the use-case model (approx. 80%), business case, and risks.
• Again, checked against milestone criteria and if it couldn’t pass these criteria then again
3. Construction –
• The project is developed and completed.
• Defects are removed from the project based on feedback from the public.
5. Production –
• The final phase of the model.
Requirement Modelling.
I. Use Cases, Activity Diagrams
II. Swimlane Diagrams, Data Modelling.
V. Requirement Tracking.
Requirement Engineering
1. The process to gather the software requirements from client, analyze and document them
is known as requirement engineering.
2. The goal of requirement engineering is to develop and maintain sophisticated and
descriptive ‘System Requirements Specification’ document.
• Requirements gathering - The developers discuss with the client and end users and know
requirements of various stakeholders, if they are, it is then negotiated and discussed with
stakeholders. Requirements may then be prioritized and reasonably compromised.
• The requirements come from various stakeholders. To remove the ambiguity and
conflicts, they are discussed for clarity and correctness. Unrealistic requirements are
compromised reasonably.
• Documentation - All formal & informal, functional and non-functional requirements are
Interviews are strong medium to collect requirements. Organization may conduct several
types of interviews such as:
1.Structured (closed) interviews, where every single information to gather is decided in
advance, they follow pattern and matter of discussion firmly.
2.Non-structured (open) interviews, where information to gather is not decided in advance,
more flexible and less biased.
Requirement Elicitation Techniques
3. Oral interviews
4. Written interviews
5. One-to-one interviews which are held between two persons across the table.
6. Group interviews which are held between groups of participants. They help to uncover
any missing requirement as numerous people are involved.
▪ Surveys
Organization may conduct surveys among various stakeholders by querying about their
expectation and requirements from the upcoming system.
Requirement Elicitation Techniques
▪ Questionnaires
A document with pre-defined set of objective questions and respective options is handed
over to all stakeholders to answer, which are collected and compiled.
A shortcoming of this technique is, if an option for some issue is not mentioned in the
questionnaire, the issue might be left unattended.
▪ Task analysis
Team of engineers and developers may analyze the operation for which the new system is
required. If the client already has some software to perform certain operation, it is studied
and requirements of proposed system are collected.
Requirement Elicitation Techniques
▪ Domain Analysis
Every software falls into some domain category. The expert people in the domain can be a
great help to analyze general and specific requirements.
▪ Brainstorming
An informal debate is held among various stakeholders and all their inputs are recorded for
further requirements analysis.
▪ Observation
Team of experts visit the client’s organization or workplace. They observe the actual
working of the existing installed systems. They observe the workflow at client’s end and
how execution problems are dealt. The team itself draws some conclusions which aid to
form requirements expected from the software.
Requirement Elicitation Techniques
▪ Prototyping
Prototyping is building user interface without adding detail functionality for user to interpret
the features of intended software product. It helps giving better idea of requirements. If there
is no software installed at client’s end for developer’s reference and the client is not aware of
its own requirements, the developer creates a prototype based on initially mentioned
requirements. The prototype is shown to the client and the feedback is noted. The client
feedback serves as an input for requirement gathering.
Requirement Modelling
Introduction
Requirements modeling involves creating a graphical representation of a system’s
requirements. It provides a visual and structured approach to documenting requirements,
which helps to ensure that all stakeholders have a clear understanding of the system’s
functionalities and constraints. Effective requirements modelling can help to identify
potential issues early in the development process, which can save time and resources in the
long run.
(UML)Unified Modelling Language
Introduction
UML is a standard language for specifying, visualizing, constructing, and documenting the
artifacts of software systems.
UML was created by the Object Management Group (OMG) and UML 1.0 specification
draft was proposed to the OMG in January 1997.
• UML is different from the other common programming languages such as C++, Java,
COBOL, etc.
• UML is a pictorial language used to make software blueprints.
boundary. It is also used to model non-software systems as well. For example, the process
flow in a manufacturing unit, etc.
(UML)Unified Modelling Language
Goals of UML
• A picture is worth a thousand words, this idiom absolutely fits describing UML. It’s a
some general purpose modeling language, which all modelers can use and it also needs to
be made simple to understand and use.
• UML diagrams are not only made for developers but also for business users, common
relationships.
• A conceptual model is the first step before drawing a UML diagram. It helps to
understand the entities in the real world and how they interact with each other.
As UML describes the real-time systems, it is very important to make a conceptual model
and then proceed gradually. The conceptual model of UML can be mastered by learning the
following three major elements −
• UML building blocks
• Relationships
• Diagrams
Things are the most important building blocks of UML. Things can be −
• Structural
• Behavioral
• Grouping
• Annotational
(UML)Unified Modelling Language
• Structural Things
Structural things define the static part of the model. They represent the physical and
conceptual elements.
Following are the brief descriptions of the structural things.
• Class − Class represents a set of objects having similar responsibilities.
class.
• Collaboration −Collaboration defines an interaction between elements.
(UML)Unified Modelling Language
• Use case −Use case represents a set of actions performed by a system for a specific goal.
• Node − A node can be defined as a physical element that exists at run time.
(UML)Unified Modelling Language
• Behavioral Things
• A behavioral thing consists of the dynamic parts of UML models. Following are the
behavioral things −
• Interaction − Interaction is defined as a behavior that consists of a group of messages
• State machine − State machine is useful when the state of an object in its life cycle is
important. It defines the sequence of states an object goes through in response to events.
Events are external factors responsible for state change
(UML)Unified Modelling Language
• Grouping Things
behavioral things.
• Annotational Things
comments of UML model elements. Note - It is the only one Annotational thing available.
A note is used to render comments, constraints, etc. of an UML element.
(UML)Unified Modelling Language
• Relationship
Relationship is another most important building block of UML. It shows how the elements
are associated with each other and this association describes the functionality of an
application.
There are four kinds of relationships available.
• Dependency
Dependency is a relationship between two things in which change in one element also
affects the other.
• Association
Association is basically a set of links that connects the elements of a UML model. It also
describes how many objects are taking part in that relationship.
(UML)Unified Modelling Language
• Generalization
Realization can be defined as a relationship in which two elements are connected. One
element describes some responsibility, which is not implemented and the other one
implements them. This relationship exists in case of interfaces.
UML Diagrams
• UML diagrams are the ultimate output of the entire discussion. All the elements,
relationships are used to make a complete UML diagram and the diagram represents a
system.
• The visual effect of the UML diagram is the most important part of the entire process. All
• Class diagram
• Object diagram
• Sequence diagram
• Collaboration diagram
• Activity diagram
• Deployment diagram
• Component diagram
UML Diagrams
Use Case Diagram in UML
• A Use Case Diagram is a type of Unified Modeling Language (UML) diagram that
represents the interaction between actors (users or external systems) and a system under
consideration to accomplish specific goals. It provides a high-level view of the system’s
functionality by illustrating the various ways users can interact with it.
Use Case Diagram Notations
UML Diagrams
Use Case Diagram Notations
• UML notations provide a visual language that enables software developers, designers, and
systems, or hardware devices. In the context of a Use Case Diagram, actors initiate use
cases and receive the outcomes. Proper identification and understanding of actors are
crucial for accurately modeling system behavior.
UML Diagrams
Use Cases
• Use cases are like scenes in the play. They represent specific things your system can do.
In the online shopping system, examples of use cases could be “Place Order,” “Track
Delivery,” or “Update Product Information”. Use cases are represented by ovals.
UML Diagrams
Use Cases
• Use cases are like scenes in the play. They represent specific things your system can do.
In the online shopping system, examples of use cases could be “Place Order,” “Track
Delivery,” or “Update Product Information”. Use cases are represented by ovals.
System Boundary UML Diagrams
• The system boundary is a visual representation of the scope or limits of the system you are
modeling. It defines what is inside the system and what is outside. The boundary helps to
establish a clear distinction between the elements that are part of the system and those that
are external to it. The system boundary is typically represented by a rectangular box that
surrounds all the use cases of the system.
Purpose of System Boundary:
• Scope Definition: It clearly outlines the boundaries of the system, indicating which
components are internal to the system and which are external actors or entities interacting
with the system.
• Focus on Relevance: The diagram can focus on illustrating the essential functionalities
actors and use cases. These relationships provide a comprehensive view of the system’s
functionality and its various scenarios.
Association Relationship
• The Association Relationship represents a communication or interaction between an actor
and a use case. It is depicted by a line connecting the actor to the use case. This relationship
signifies that the actor is involved in the functionality described by the use case.
Example: Online Banking System
1. Actor: Customer 2. Use Case: Transfer Funds
3. Association: A line connecting the “Customer” actor to the “Transfer Funds” use case,
indicating the customer’s involvement in the funds transfer process.
UML Diagrams
Example: Online Banking System
1. Actor: Customer 2. Use Case: Transfer Funds
3. Association: A line connecting the “Customer” actor to the “Transfer Funds” use case,
indicating the customer’s involvement in the funds transfer process.
Include Relationship
UML Diagrams
• The Include Relationship indicates that a use case includes the functionality of another use
case. It is denoted by a dashed arrow pointing from the including use case to the included use
case. This relationship promotes modular and reusable design.
Example: Social Media Posting
Use Cases: Compose Post, Add Image
Include Relationship: The “Compose Post” use case includes the functionality of “Add
Image.” Therefore, composing a post includes the action of adding an image.
Extend Relationship
UML Diagrams
• The Extend Relationship illustrates that a use case can be extended by another use case under
specific conditions. It is represented by a dashed arrow with the keyword “extend.” This
relationship is useful for handling optional or exceptional behavior.
• Example: Social Media Posting
Example: Flight Booking System
UML Diagrams
indicating that one use case is a specialized version of another. It is represented by an arrow
pointing from the specialized use case to the general use case.
Example: Vehicle Rental System
• Use Cases: Rent Car, Rent Bike
• Generalization Relationship: Both “Rent Car” and “Rent Bike” are specialized versions of
objects. Objects are instances of classes, and each class defines a set of attributes (data
members) and methods (functions or procedures) that the objects created from that class
will possess. The attributes represent the characteristics or properties of the object,
while the methods define the behaviors or actions that the object can perform.
• UML Class Notation
UML Diagrams
• class notation is a graphical representation used to depict classes and their relationships in
object-oriented modeling.
UML Diagrams
• UML Class Notation
1. Class Name: The name of the class is typically written in the top compartment of the
class box and is centered and bold.
2. Attributes: Attributes, also known as properties or fields, represent the data members of
the class. They are listed in the second compartment of the class box and often include the
visibility (e.g., public, private) and the data type of each attribute.
3. Methods, also known as functions or operations, represent the behavior or functionality
of the class. They are listed in the third compartment of the class box and include the
visibility (e.g., public, private), return type, and parameters of each method.
UML Diagrams
4. Visibility Notation: Visibility notations indicate the access level of attributes and
methods. Common visibility notations include:
• + for public (visible to all classes)
An input parameter is a parameter passed from the calling object (client) to the called object
(server) during a method invocation.
It is represented by an arrow pointing towards the receiving class (the class that owns the
method).
• Out (Output):
An output parameter is a parameter passed from the called object (server) back to the calling
object (client) after the method execution.
It is represented by an arrow pointing away from the receiving class.
UML Diagrams
• InOut (Input and Output): An InOut parameter serves as both input and output. It
carries information from the calling object to the called object and vice versa.
• It is represented by an arrow pointing towards and away from the receiving class.Out
(Output):
UML Diagrams
• Relationships between classes: In class diagrams, relationships between classes describe
how classes are connected or interact with each other within a system. There are several
types of relationships in object-oriented modeling, each serving a specific purpose. Here
are some common types of relationships in class diagrams:
UML Diagrams
1. Association: An association represents a bi-directional relationship between two
classes. It indicates that instances of one class are connected to instances of another
class. Associations are typically depicted as a solid line connecting the classes, with
optional arrows indicating the direction of the relationship.
The “Library” class can be considered the source class because it contains a reference to
multiple instances of the “Book” class. The “Book” class would be considered the target
class because it belongs to a specific library.
UML Diagrams
2. Directed Association: A directed association in a UML class diagram represents a
relationship between two classes where the association has a direction, indicating that one
class is associated with another in a specific way.
• In a directed association, an arrowhead is added to the association line to indicate the
direction of the relationship. The arrow points from the class that initiates the association
to the class that is being targeted or affected by the association.
• Directed associations are used when the association has a specific flow or directionality,
such as indicating which class is responsible for initiating the association or which class
has a dependency on another.
UML Diagrams
• Consider a scenario where a “Teacher” class is associated with a “Course” class in a
university system. The directed association arrow may point from the “Teacher” class to
the “Course” class, indicating that a teacher is associated with or teaches a specific
course.
• The source class is the “Teacher” class. The “Teacher” class initiates the association by
university system. The directed association arrow may point from the “Teacher” class to
the “Course” class, indicating that a teacher is associated with or teaches a specific
course.
UML Diagrams
3. Aggregation
• Aggregation is a specialized form of association that represents a “whole-part”
relationship. It denotes a stronger relationship where one class (the whole) contains or is
composed of another class (the part). Aggregation is represented by a diamond shape on
the side of the whole class. In this kind of relationship, the child class can exist
independently of its parent class.
• Let’s understand aggregation using an example:
• The company can be considered as the whole, while the employees are the parts.
Employees belong to the company, and the company can have multiple employees.
However, if the company ceases to exist, the employees can still exist independently.
UML Diagrams
UML Diagrams
4. Composition
• Composition is a stronger form of aggregation, indicating a more significant ownership
contact entry is a part. Each contact entry is fully owned and managed by the contact
book. If the contact book is deleted or destroyed, all associated contact entries are also
removed.
UML Diagrams
This illustrates composition because the existence of the contact entries depends entirely on
the presence of the contact book. Without the contact book, the individual contact entries
lose their meaning and cannot exist on their own.
UML Diagrams
5. Generalization(Inheritance)
Inheritance represents an “is-a” relationship between classes, where one class (the subclass
or child) inherits the properties and behaviors of another class (the superclass or parent).
Inheritance is depicted by a solid line with a closed, hollow arrowhead pointing from the
subclass to the superclass.
In the example of bank accounts, we can use generalization to represent different types of
accounts such as current accounts, savings accounts, and credit accounts.
UML Diagrams
The Bank Account class serves as the generalized representation of all types of bank
accounts, while the subclasses (Current Account, Savings Account, Credit Account)
represent specialized versions that inherit and extend the functionality of the base class.
UML Diagrams
6. Realization (Interface Implementation)
Realization indicates that a class implements the features of an interface. It is often used in
cases where a class realizes the operations defined by an interface. Realization is depicted
by a dashed line with an open arrowhead pointing from the implementing class to the
interface.
Let’s consider the scenario where a “Person” and a “Corporation” both realizing an
“Owner” interface.
• Owner Interface: This interface now includes methods such as “acquire(property)” and
Diagrams.
• These terms are often used interchangeably. So simply, a state machine diagram is used to
model the dynamic behavior of a class in response to time and changing external entities.
• We can say that each and every class has a state but we don’t model every class using
events, such that these lifelines took part at the run time. In UML, the lifeline is
represented by a vertical bar, whereas the message flow is represented by a vertical dotted
line that extends across the bottom of the page.
• It incorporates the iterations as well as branching.
UML Diagrams
Purpose of a Sequence Diagram
• To model high-level interaction among active objects within a system.
2. Design Concepts
Design means to draw or plan something to show the look, functions and working of
it.
Software Design is also a process to plan or convert the software requirements into
a step that are needed to be carried out to develop a software system. There are
several principles that are used to organize and arrange the structural components of
Software design. Software Designs in which these principles are applied affect the
content and the working process of the software from the beginning.
1. Principles of Software Design
These principles are :
Not Suffer from
“Tunnel Vision” 1 6 Should Accommodate
Change
Traceable to the
Analysis Model 2 7 Should Degrade
Gently
Minimize the
“Intellectual Distance” 4 9 Review to
Minimize Errors
Exihibit Uniformity
and Integration 5 10 Design is not Coding, &
Coding is not Design
1. Principles of Software Design
6. Accommodate change –
The software should be designed in such a way that it accommodates the change
implying that the software should adjust to the change that is required to be done as
per the user’s need.
1. Principles of Software Design
7. Degrade gently –
The software should be designed in such a way that it degrades gracefully which
means it should work properly even if an error occurs during the execution.
1. Problem Partitioning :
For small problem, we can handle the entire problem at once but for the significant problem,
divide the problems and conquer the problem it means to divide the problem into smaller
pieces so that each piece can be captured separately.
For software design, the goal is to divide the problem into manageable pieces.
Benefits of Problem Partitioning
I. Software is easy to understand II. Software becomes simple
III. Software is easy to test IV. Software is easy to modify
V. Software is easy to maintain VI. Software is easy to expand
2. Design Concepts
1. Problem Partitioning :
These pieces cannot be entirely independent of each other as they together form the system.
They have to cooperate and communicate to solve the problem. This communication adds
complexity.
***Note : As the number of partition increases = Cost of partition and complexity
increases
2. Design Concepts
2. Abstraction : An abstraction is a tool that enables a designer to consider a component at an
abstract level without bothering about the internal details of the implementation. Abstraction
can be used for existing element as well as the component being designed.
Here, there are two common abstraction mechanisms
• Data Abstraction : Details of the data elements are not visible to the users of data. Data
the components.
2. Design Concepts
• Conditions that how components can be integrated to form the system.
• Semantic models that help the designer to understand the overall properties of the system.
The use of architectural styles is to establish a structure for all the components of the system.
other components that update, add, delete or modify the data present within the store.
2. Design Concepts
• The figure illustrates a typical data centered style. The client software access a central
repository. Variation of this approach are used to transform the repository into a blackboard
when data related to client or data of interest for the client change the notifications to client
software.
2. Design Concepts
• This data-centered architecture will promote integrability. This means that the existing
components can be changed and new client components can be added to the architecture
without the permission or concern of other clients.
• Data can be passed among clients using blackboard mechanism.
• Each filter will work independently and is designed to take data input of a certain form and
produces data output to the next filter of a specified form. The filters don’t require any
• If the data flow degenerates into a single line of transforms, then it is termed as batch
sequential. This structure accepts the batch of data and then applies a series of sequential
• Data flow architecture does not allow applications that require greater user engagement.
2. Design Concepts
3] Call and Return architectures: It is used to create a program that is easy to scale and
modify. Many sub-styles exist within this category. Two of them are explained below.
• Remote procedure call architecture: This components is used to present in a main
number of subprograms or function into a control hierarchy. Main program contains number
of subprograms that can invoke other components.
2. Design Concepts
4] Object Oriented Architecture : The components of a system encapsulate data and the
operations that must be applied to manipulate the data. The coordination and communication
between the components are established via the message passing.
Characteristics of Object Oriented architecture
• Object protect the system’s integrity.
• Other objects are aware of the implementation details of the object, allowing changes to be
operations. Each layer will do some operations that becomes closer to machine instruction
set progressively. CLIENT
APPLICATION
PLATFORM
INFRASTRUCTURE
SERVER
• It encourages the creation of commonly used routines to be placed in the library and used by
other programs.
• It simplifies the overlay procedure of loading a large program into main storage.
• More linkage required, run-time may be longer, more source lines must be written, and
• Top-down Approach
• Bottom-up Approach
2. Design Concepts
Strategy of Design
1. Top-down Approach: This approach starts with the identification of the main components
and then decomposing them into their more detailed sub-components.
2. Design Concepts
Strategy of Design
2. Bottom-up Approach: A bottom-up approach begins with the lower details and moves
towards up the hierarchy, as shown in fig. This approach is suitable in case of an existing
system.
2. Design Concepts
Strategy of Design
2. Bottom-up Approach: A bottom-up approach begins with the lower details and moves
towards up the hierarchy, as shown in fig. This approach is suitable in case of an existing
system.
2. Design Concepts
Coupling and Cohesion
In software engineering, the coupling is the degree of interdependence between software
modules. Two modules that are tightly coupled are strongly dependent on each other.
However, two modules that are loosely coupled are not dependent on each other. Uncoupled
modules have no interdependence at all within them.
2. Design Concepts
Coupling and Cohesion
A good design is the one that has low coupling. Coupling is measured by the number of
relations between the modules. That is, the coupling increases as the number of calls between
modules increase or the amount of shared data is large. Thus, it can be said that a design with
high coupling will have more errors.
2. Design Concepts
2. Design Concepts
1. No Direct Coupling: There is no direct coupling between M1 and M2.
2. Data Coupling: When data of one module is passed to another module, this is called data
coupling.
2. Design Concepts
3. Stamp Coupling: Two modules are stamp coupled if they communicate using composite
data items such as structure, objects, etc. When the module passes non-global data structure or
entire structure to another module, they are said to be stamp coupled. For example, passing
structure variable in C or object in C++ language to a module.
4. Control Coupling: Control Coupling exists among two modules if data from one module is
used to direct the structure of instruction execution in another.
5. External Coupling: External Coupling arises when two modules share an externally imposed
data format, communication protocols, or device interface. This is related to communication to
external tools and devices.
2. Design Concepts
6. Common Coupling: Two modules are common coupled if they share information through
some global data items.
7. Content Coupling: Content Coupling exists among two modules if they share code, e.g., a
branch from one module into another module.
2. Design Concepts
Module Cohesion
In computer programming, cohesion defines to the degree to which the elements of a module
belong together. Thus, cohesion measures the strength of relationships between pieces of
functionality within a given module. For example, in highly cohesive systems, functionality is
strongly related.
module form the components of the sequence, where the output from one component of the
sequence is input to the next.
tasks of the module refer to or update the same data structure, e.g., the set of functions
defined on an array or a stack.
2. Design Concepts
Module Cohesion
4. Procedural Cohesion: A module is said to be procedural cohesion if the set of purpose of the
module are all parts of a procedure in which particular sequence of steps has to be carried out for
achieving a goal, e.g., the algorithm for decoding a message.
5. Temporal Cohesion: When a module includes functions that are associated by the fact that all
the methods must be executed in the same time, the module is said to exhibit temporal cohesion.
6. Logical Cohesion: A module is said to be logically cohesive if all the elements of the module
perform a similar operation. For example Error handling, data input and data output, etc.
2. Design Concepts
Module Cohesion
7. Coincidental Cohesion: A module is said to have coincidental cohesion if it performs a set
of tasks that are associated with each other very loosely, if at all.
2. Design Concepts
Differentiate between Coupling and Cohesion
Coupling Cohesion
Coupling is also called Inter-Module Binding. Cohesion is also called Intra-Module Binding.
Coupling shows the relationships between modules. Cohesion shows the relationship within the module.
Coupling shows the relative independence between Cohesion shows the module's
the modules. relative functional strength.
While creating, you should aim for low coupling, i.e., While creating you should aim for high cohesion, i.e.,
dependency among modules should be less. a cohesive component/ module focuses on a single
function (i.e., single-mindedness) with little
interaction with other modules of the system.
In coupling, modules are linked to the other modules. In cohesion, the module focuses on a single thing.
2. Design Concepts
Function Oriented Design
Function Oriented design is a method to software design where the model is decomposed into a
set of interacting units or modules where each unit or module has a clearly defined function.
Thus, the system is designed from a functional viewpoint.
Design Notations
Design Notations are primarily meant to be used during the process of design and are used to
represent design or design decisions. For a function-oriented design, the design can be
represented graphically or mathematically by the following:
2. Design Concepts
Software Design Approaches
Function Oriented Design Object Oriented Design
• DFD is used.
2. Design Concepts
2. Design Concepts
Data Flow Diagram
Data-flow design is concerned with designing a series of functional transformations that convert
system inputs into the required outputs. The design is described as data-flow diagrams. These
diagrams show how data flows through a system and how the output is derived from the input
through a series of functional transformations.
Data-flow diagrams are a useful and intuitive way of describing a system. They are generally
understandable without specialized training, notably if control information is excluded. They
show end-to-end processing. That is the flow of processing from when data enters the system to
where it leaves the system can be traced.
2. Design Concepts
Data Flow Diagram
• A graphical tool, useful for communicating with users, managers and other personnel.
• Focus on the movement of data between external entities and processes and between
Marks movement of data through the system - a pipeline to carry the data.
Connects the processes, external entities and data stores.
Generally unidirectional, if same data flows in both direction, double headed arrow can be used.
• Processes.
• Data stores.
2. Design Concepts
DFD Elements
• Processes.
A data dictionary lists the objective of all data items and the definition of all composite data
elements in terms of their component data items. For example, a data dictionary entry may
contain that the data grossPay consists of the parts regularPay and overtimePay.
engineers working in a project. A consistent vocabulary for data items is essential since, in
large projects, different engineers of the project tend to use different terms to refer to the same
data, which unnecessarily causes confusion.
• The data dictionary provides the analyst with a means to determine the definition of various
Pseudo-code
Pseudo-code notations can be used in both the preliminary and detailed design phases. Using
pseudo-code, the designer describes system characteristics using short, concise, English
Language phases that are structured by keywords such as If-Then-Else, While-Do, and End.
2. Design Concepts
engineer to develop it effectively, the architecture, the user interface, and the component level
detail.
• Design modeling provides a variety of different views of the system like architecture plan for
home or building.
• Different methods like data-driven, pattern-driven, or object-oriented methods are used for
constructing the design model. All these methods use set of design principles for designing a
model.
2. Design Concepts
• Architectural design
• Component-level design.
2. Design Concepts
Data design:
• It represents the data objects and their interrelationship in an entity-relationship diagram.
• Entity-relationship consists of information required for each entity or data objects as well as it
• It shows three type of relationship – One to one, one to many, and many to many. In one to
one relation, one entity is connected to another entity. In one many relation, one Entity is
connected to more than one entity. un many to many relations one entity is connected to more
than one entity as well as other entity also connected with first entity using more than one
entity.
2. Design Concepts
Architectural design:
• It defines the relationship between major structural elements of the software.
• It defines the structure and properties of the component that are involved in the system and
• Component Interfaces
• It refers to the product where user interact with controls or displays of the product.
• Precise description of events in the environment, or messages from agents to which the system
must respond.
• Precise description of the events or messages that the system must produce.
• Specification of the data, and the formats of the data coming into and going out of the system.
• Specification of the ordering and timing relationships between incoming events or messages,
of software components. It is a perfect way to share a large amount of data. Components need
not be concerned with how data is managed at a centralized level i.e. components need not
worry about issues like backup and security of the data.
2. Design Concepts
Principles of Design Model
• Design must be traceable to the analysis model:
Analysis model represents the information, functions, and behavior of the system. Design model
translates all these things into architecture – a set of subsystems that implement major functions
and a set of component kevel design that are the realization of Analysis classes. This implies that
design model must be traceable to the analysis model.
• Always consider architecture of the system to be built:
Software architecture is the skeleton of the system to be built. It affects interfaces, data
structures, behavior, program control flow, the manner in which testing is conducted,
maintainability of the resultant system, and much more.
2. Design Concepts
Principles of Design Model
• Focus on the design of the data:
Data design encompasses the manner in which the data objects are realized within the design. It
helps to simplify the program flow, makes the design and implementation of the software
components easier, and makes overall processing more efficient.
• User interfaces should consider the user first:
The user interface is the main thing of any software. No matter how good its internal functions
are or how well designed its architecture is but if the user interface is poor and end-users don’t
feel ease to handle the software then it leads to the opinion that the software is bad.
2. Design Concepts
Principles of Design Model
• Components should be loosely coupled:
Coupling of different components into one is done in many ways like via a component interface,
by messaging, or through global data. As the level of coupling increases, error propagation also
increases, and overall maintainability of the software decreases. Therefore, component coupling
should be kept as low as possible.
• Interfaces both user and internal must be designed:
The data flow between components decides the processing efficiency, error flow, and design
simplicity. A well-designed interface makes integration easier and tester can validate the
component functions more easily.
2. Design Concepts
Principles of Design Model
• Component level design should exhibit Functional independence:
It means that functions delivered by component should be cohesive i.e. it should focus on one
and only one function or sub-function.
2. Design Concepts
• It provides to enhance the Productivity of the software application with minimal error.
• Easy to communicate with team members to develop a better quality of the product.
• It updates each team member’s code parallelly by considering different version control.
This is the initial level of the SCM process to planning properly for the development of the
application and identifies the configuration items as per the scope of the project. To conduct
kick-off meetings or start meeting and welcome to change requests are the basic criteria for this
process. The project management plan is the input for this process and approval of the plan is the
exit criteria.
• Version Control Process or Baselines:
In this process the new change request created by the client to change some configurations on the
software product i.e. to add or remove or edit on the configuration items as the request is
received by the team. As per approval of the change request the application will develop and the
request will be closed on status.
• Configuration Release Process:
This process is used to ensure the application will develop as per the project plan and test/verify
the application as per scope. The software-related documents and software release notes are the
inputs to provide a working version of the software application.
2. Design Concepts
• Configuration Auditing Process:
In this process to verify the developed software product as per the baselines or not. Here we go
for function requirement audit and physical audit of the software application.
• Review and Status Reporting Process:
It is a technical review on the application workflow, process, configuration items, and change
requests, etc to generate the status report in every phase of the software development life cycle
process. In this process we go for multiple reviews of the application to develop some
application-related documents like user manual, Installation process guide, Do’s and Don’t Do’s,
Release notes, etc.
2. Design Concepts
Advantages
• To increase the productive efficiency of software as it controls and tracking the workflow or
development process.
• It welcomes change management so the risk of the product will be less.
• It is used for proper monitoring and auditing of the software development product.
• This process provides a reliable, organized, cost-effective and low-risk software development
application.
• It provides a high-quality software product.
2. Design Concepts
Disadvantages
• It needs adequate resources with full knowledge about the software configuration
management tools.
• It requires more resources to work with the configuration management process for small
industries.
• It requires a highly configured desktop/laptop for the development stages.
Unit-4
Software Quality
1. Software Quality
2. Software Testing
• Types of Testing
3. Risk Assessment
• Risk Mitigation
Software quality product is defined in term of its fitness of purpose. That is, a
quality product does precisely what the users want it to do. For software
products, the fitness of use is generally explained in terms of satisfaction of the
requirements laid down in the SRS document. Although "fitness of purpose" is
a satisfactory interpretation of quality for many devices such as a car, a table
fan, a grinding machine, etc. for software products, "fitness of purpose" is not a
wholly satisfactory definition of quality.
Unit-4
Software Quality
Example: Consider a functionally correct software product. That is, it performs all tasks as
specified in the SRS document. But, has an almost unusable user interface. Even though it may
be functionally right, we cannot consider it to be a quality product.
The modern view of a quality associated with a software product several quality methods such
as the following:
• Portability: A software device is said to be portable, if it can be freely made to work in
various operating system environments, in multiple machines, with other software products,
etc.
Unit-4
Software Quality
• Usability: A software product has better usability if various categories of users can easily
• Reusability: A software product has excellent reusability if different modules of the product
when they show up, new tasks can be easily added to the product, and the functionalities of
the product can be easily modified, etc.
Unit-4
Software Quality
Software Quality Management System
A quality management system is the principal methods/approaches used by organizations to
provide that the products they develop have the desired quality.
A quality system subsists of the following:
• Managerial Structure and Individual Responsibilities: A quality system is the
responsibility of the organization as a whole. However, every organization has a sever quality
department to perform various quality system activities. The quality system of an
arrangement should have the support of the top management. Without help for the quality
system at a high level in a company, some members of staff will take the quality system
seriously.
Unit-4
Software Quality
Software Quality Management System
Quality System Activities: The quality system activities encompass the following:
• Auditing of projects
• Production of documents for the top management summarizing the effectiveness of the
cause that leads to the defect. It also helps in the correction of bugs.
• Quality Assurance helps an organization in making good quality products. It also helps in
improving the quality of the product by passing the products through security checks.
• Total Quality Management(TQM) checks and assures that all the procedures must be
production, and servicing of goods. This is the standard that applies to most software
development organizations.
• ISO 9002: This standard applies to those organizations which do not design products but are
only involved in the production. Examples of these category industries contain steel and car
manufacturing industries that buy the product and plants designs from external sources and
are engaged in only manufacturing those products. Therefore, ISO 9002 does not apply to
software development organizations.
ISO 9000 Certification
• ISO 9003: This standard applies to organizations that are involved only in the installation and
organization.
3. Document review and Adequacy of Audit: During this stage, the registrar reviews the
application is bug-free, meets the technical requirements as guided by its design and
development, and meets the user requirements effectively and efficiently by handling all the
exceptional and boundary cases.
• The process of software testing aims not only at finding faults in the existing software but
also at finding measures to improve the software in terms of efficiency, accuracy, and
usability.
• Software Testing is a method to assess the functionality of the software program.
• The process checks whether the actual software matches the expected requirements and
What is Verification?
Verification is a process that determines the quality of the software. Verification includes all the
activities associated with producing high quality software, i.e.: testing, inspection, design
analysis, specification analysis, and so on. Verification is a relatively objective process, in that if
the various processes and documents are expressed precisely enough, no subjective judgement
should be needed in order to verify software.
Software Testing
Advantages of Verification:
• Verification helps in lowering the number of the defects that may be encountered in the later
stages of development.
• Verifying the product at the starting phase of the development will help in understanding the
• Verification helps in building the product as per the customer specifications and needs.
Software Testing
What is Validation?
Validation is a process in which the requirements of the customer are actually met by the
software functionality. Validation is done at the end of the development process and takes place
after verifications are completed.
Advantages
• During verification if some defects are missed, then during the validation process they can be
caught as failures.
• If during verification some specification is misunderstood and development has already
occurred then during the validation process the difference between the actual result and
expected result can be identified and corrective action taken.
Software Testing
• Validation is done during testing like feature testing, integration testing, system testing, load
assessments of how well the (proposed) system addresses a real-world need. Validation
includes activities such as requirements modelling, prototyping and user evaluation.
Software Testing
Importance of Software Testing:
• Defects can be identified early
Black Box Testing: Black box technique of testing in which the tester doesn’t have access to the
source code of the software and is conducted at the software interface without any concern with
the internal logical structure of the software known as black-box testing.
White-Box Testing: White box technique of testing in which the tester is aware of the internal
workings of the product, has access to its source code, and is conducted by making sure that all
internal operations are performed according to the specifications is known as white box testing.
Software Testing
units/components of a software/system are tested. The purpose is to validate that each unit of
the software performs as designed.
• Integration Testing: Integration testing is a level of the software testing process where
individual units are combined and tested as a group. The purpose of this level of testing is to
expose faults in the interaction between integrated units.
• System Testing: System testing is a level of the software testing process where a complete,
integrated system/software is tested. The purpose of this test is to evaluate the system’s
compliance with the specified requirements.
Software Testing
Different Levels of Software Testing
• Acceptance Testing: Acceptance testing is a level of the software testing process where a
system is tested for acceptability. The purpose of this test is to evaluate the system’s
compliance with the business requirements and assess whether it is acceptable for delivery.
Software Testing
Best Practices for Software Testing
• Continuous testing: Project teams test each build as it becomes available thus it enables
software to be validated in real environments earlier in the development cycle, reducing risks
and improving the functionality and design.
• Involve users: It is very important for the developers to involve users in the process and
open-ended questions about the functionality required in the application. This will help to
develop and test the software from the customer’s perspective.
• Divide tests into smaller parts: Dividing tests into smaller fractions save time and other
resources in environments where frequent testing needs to be conducted. This also helps
teams to make better analyses of the tests and the test results.
Software Testing
Best Practices for Software Testing
• Metrics and Reporting: Reporting enables the team members to share goals and test results.
Advanced tools integrate the project metrics and present an integrated report in the dashboard
that can be easily reviewed by the team members to see the overall health of the project.
• Don’t skip regression testing: Regression testing is one of the most important steps as it
the coding phase so it is considered a best practice for programmers to avoid writing test
cases as they can be biased towards their code and the application.
Software Testing
Best Practices for Software Testing
• Service virtualization: Service virtualization simulates the systems and services that are not
yet developed or are missing. Thus, enabling teams to reduce dependency and start the testing
process sooner. They can modify, and reuse the configuration to test different scenarios
without having to alter the original environment.
Software Testing
Benefits of Software Testing
• Product quality: Testing ensures the delivery of a high-quality product as the errors are
software early in the development phase so that the detected bugs can be fixed before the
delivery of the product. Usability testing is a type of software testing that checks the
application for how easily usable it is for the users to use the application.
• Cost-effective: Testing any project on time helps to save money and time for the long term. If
the bugs are caught in the early phases of software testing, it costs less to fix those errors.
• Security: Security testing is a type of software testing that is focused on testing the
Oriented Metrics
2. Software Project Estimations
4. COCOMO Models
countable. Software metrics are valuable for many reasons, including measuring
software performance, planning work items, measuring productivity, and many other
uses.
• Within the software development process, many metrics are that are all connected.
1. Product Metrics: These are the measures of various characteristics of the software product.
2. Process Metrics: These are the measures of various characteristics of the software
development process. For example, the efficiency of fault detection. They are used to measure
the characteristics of methods, techniques, and tools that are used for developing software.
Software Metrics
Types of Metrics
• Internal metrics: Internal metrics are the metrics used for measuring properties that are
• External metrics: External metrics are the metrics used for measuring properties that are
• Hybrid metrics: Hybrid metrics are the metrics that combine product, process, and resource
metrics. For example, cost per FP where FP stands for Function Point Metric.
Software Metrics
Types of Metrics
• Project metrics: Project metrics are the metrics used by the project manager to check the
project's progress. Data from the past projects are used to collect various metrics, like time
and cost; these estimates are used as a base of new software. Note that as the project
proceeds, the project manager will check its progress from time-to-time and will compare the
effort, cost, and time with the original effort, cost and time. Also understand that these
metrics are used to decrease the development costs, time efforts and risks. The project quality
can also be improved. As quality improves, the number of errors and time, as well as cost
required, is also reduced.
Software Metrics
Advantage of Software Metrics
• Comparative study of various design methodology of software systems.
• For analysis, comparison, and critical study of different programming language concerning
their characteristics.
• In comparing and evaluating the capabilities and productivity of people involved in software
development.
• In the preparation of software quality specifications.
• In making inference about the effort to be put in the design and development of the software
systems.
• In getting an idea about the complexity of the code.
Software Metrics
Advantage of Software Metrics
• In taking decisions regarding further division of a complex module is to be done or not.
• In comparison and making design tradeoffs between software development and maintenance
cost.
• In providing feedback to software managers about the progress and quality during various
costly.
• The verification and justification of software metrics are based on historical/empirical data
not standardized and may depend upon tools available and working environment.
• Most of the predictive models rely on estimates of certain variables which are often not
known precisely.
Software Metrics
Size Oriented Metrics
LOC Metrics
It is one of the earliest and simpler metrics for calculating the size of the computer program. It is
generally used in calculating and comparing the productivity of programmers. These metrics are
derived by normalizing the quality and productivity measures by considering the size of the
product as a metric.
Following are the points regarding LOC measures:
1. In size-oriented metrics, LOC is considered to be the normalization value.
2. It is an older method that was developed when FORTRAN and COBOL programming were
very popular.
3. Productivity is defined as KLOC / EFFORT, where effort is measured in person-months.
Software Metrics
Size Oriented Metrics
LOC Metrics
4. Size-oriented metrics depend on the programming language used.
5. As productivity depends on KLOC, so assembly language code will have more productivity.
6. LOC measure requires a level of detail which may not be practically achievable.
7. The more expressive is the programming language, the lower is the productivity.
8. LOC method of measurement does not apply to projects that deal with visual (GUI-based)
programming. As already explained, Graphical User Interfaces (GUIs) use forms basically. LOC
metric is not applicable here.
Software Metrics
Size Oriented Metrics
LOC Metrics
9. It requires that all organizations must use the same method for counting LOC. This is so
because some organizations use only executable statements, some useful comments, and some
do not. Thus, the standard needs to be established.
10. These metrics are not universally accepted.
Software Metrics
Size Oriented Metrics
LOC Metrics
Based on the LOC/KLOC count of software, many other metrics can be computed:
• Errors/KLOC.
• $/ KLOC.
• Defects/KLOC.
• Pages of documentation/KLOC.
• Errors/PM.
• $/ Page of documentation.
Software Metrics
Size Oriented Metrics
LOC Metrics
Advantages of LOC
• Simple to measure
Disadvantage of LOC
• It is defined on the code. For example, it cannot measure the size of the specification.
• It characterizes only one specific view of size, namely length, it takes no account of
functionality or complexity
• Bad software design may cause an excessive line of code
• It is language dependent
tokens, which may be classified as either operators or operands. All software science metrics
can be defined in terms of these basic symbols. These symbols are called as a token.
The basic measures are
• n1 = count of unique operators.
It is the actual size of a program if a uniform binary encoding for the vocabulary is used.
• Program Level (L): The value of L ranges between zero and one, with L=1 representing a
program written at the highest possible level (i.e., with minimum size).
• Program Difficulty: The difficulty level or error-proneness (D) of the program is
discriminations.
Software Metrics
Halstead's Software
Halstead metrics are:
• Estimated Program Length: According to Halstead, The first Hypothesis of software
science is that the length of a well-structured program is a function only of the number of
unique operators and operands.
• Potential Minimum Volume: The potential minimum volume V* is defined as the volume of