213 Soft Eng.
213 Soft Eng.
Environmental Model: This model defines the system's context and its
interactions with external entities [16].
Software Prototyping
Software Metrics
Lines of Code (LOC): A basic metric measuring the size of the software
based on the number of lines of code [25].
Data Design:
Architectural Design:
Modular Design:
Validation: Ensures the software product meets the user's needs and
intended use [37].
Security Engineering
This study guide provides a starting point for understanding key concepts in
software project management. You may want to independently verify the
information from this study guide to ensure accuracy.
Table of Contents
Block 1
1.0 INTRODUCTION
1.2 EVOLUTION OF SOFTWARE ENGINEERING
Software Engineering and its Model
Common Misunderstandings Regarding Software Development
Data Dictionary
Cardinality & Optionally
Attributes
Types of Prototype
Benefits of Prototyping
Software Metric
Lines of Code (LOC)
Block 2
Definition of Metrics
Function Point
Estimating Effort
Estimating Schedule
Statistical Model
Estimation Tools
Block 3
9.0 INTRODUCTION
9.1 OBJECTIVES
Client-Server Architecture
Deployment Considerations
Internationalization
9.3.1 Requirements
Subordinate Plans
Communication
Configuration Management
9.4 Metrics
Block 4
Overview
Initially, software was developed using machine code, which was difficult to
manage for large projects. With the advent of higher-order languages,
software development became more structured, leading to the
establishment of software houses focused on producing software as a
product.
The 1990s saw a shift towards software reuse and a focus on both
the process and the product of software development. This evolution has
led to the current state of software engineering, where software is
developed and maintained using various process models and adhering to
established standards.
Software process models provide a structured framework for developing
and maintaining software. Some of the widely used models are:
Waterfall Model:
The water fall model can accommodate the new requirements only
in maintenance phase
Prototyping Model:
Prototyping enables developers to build a small model of software. The
IEEE 610.12 standard defines a prototype as a preliminary form or
instance of a system that serves as a model for later stages for the final
complete version of the system. Prototyping allows users to experiment
with and critique a proposed system before a full-scale system is
developed. This helps identify software requirements
Benefits of Prototyping
Spiral Model:
The spiral model combines the iterative approach with risk analysis and
prototyping. It emphasises risk management by incorporating risk
analysis at each stage of the spiral, ensuring early identification and
mitigation of potential issues.
Finalising Objective: The objectives are set for the particular phase
of the project.
Risk Analysis: The risks are identified to the extent possible. They
are analysed and necessary steps are taken.
Planning: At this point, the work done till this time is reviewed. Based
on the review, a decision regarding whether to go through the loop
of spiral again or not will be decided. If there is need to go, then
planning is done accordingly.
RAD Approach
This model gives a quick approach for software development and is
based on a linear sequential flow of various development processes.
Level 1 (Initial):
Level 2 (Repeatable):
Level 3 (Defined):
Level 4 (Managed):
Level 5 (Optimising):
The CMM helps organisations identify areas for improvement and provides
a roadmap for achieving higher levels of software development maturity,
leading to better quality software and more predictable project outcomes.
Corrective Maintenance
Adaptive Maintenance
Perfective Maintenance
The various phases of the software development life cycle are tightly
coupled, and the
output of one phase governs the activity of the subsequent phase. Thus, all
the phases
need to be carefully planned and managed and their interaction requires
close
monitoring. The project management becomes critical in larger systems.
Intermittent Topics
Black Box v/s White Box Testing
Chapter 2
Principles of Software Requirement Analysis
Overview
Requirements Definition:
It is gathering, analysing, modeling, documenting (RDD and SRS), reviewing,
and validating requirements.
Requirements Management:
It is controlling, tracking, ensuring complete implementation, and managing
changes to requirements
Types of Requirements
Based on Priority
1. Essential
2. Highly desirable
Based on Functionality
1. Functional Requirements
Define specific system behavior, such as I/O formats, storage,
computations, timing, and synchronisation
1. Record Review:
This involves studying the organization's existing documentation,
such as procedures, manuals, forms, and records. This helps in
understanding the format and functions of the current system.
However, this method can be time-consuming
2. On-Site Observation:
Directly observing the system in its operational environment can help
identify problems and gain a deeper understanding of the system's
actual use.
3. Interview:
Personal interactions with staff members provide insights into their
specific requirements and expectations from the system.
This method requires careful planning and execution, including skilful
interviewing techniques, to ensure effective information gathering.
4. Questionnaire:
This method employs written questionnaires to efficiently gather
information from a larger group of people simultaneously.
It allows respondents time to provide considered responses and
offers a structured way to collect data
Software Requirements Specification
The SRS document, is the output from requirements analysis. It outlines the
software's functionality. An effective SRS ensures:
to the system.
3. Design Constraints
SRS Outline
1. Introduction
1. Purpose
The purpose of the SRS.
2. Scope
The scope of the SRS.
4. References
A list of all documents referenced in the SRS
5. Overview
A brief overview of the SRS.
2. Overall Description
3. Specific Requirements
1. External Interfaces: How information will flow into and out of the
system.
3. Performance Requirements
5. Design Constraints
8. Additional Comments
4. Supporting Information
1. Table of Contents
2. Index
Software Modelling
System architecture modeling, crucial before design, visually represents the
system's structure and behavior.
Essential Model
A model showing bare minimum requirements. It has two components -
1. Environmental Model
2. Behavioural Model
A level 0 DFD, also called a context diagram, views the entire software
element as a single bubble with an indication of only input and output
data.
Rules of DFD
2. Keep a note of all processes and external entities and give them
unique names
6. Every process should have at least one input and one output
7. The data store should contain all the data elements that flow as
input and output
Name
Characteristics
Ownership
| Separator
** Comments
@ Identifier
() Options
Entity
The fundamental elements of an organization about which data is
maintained, each with a unique identity. In an E-R diagram, entities are
represented by rectangular boxes.
Attributes
The properties or characteristics associated with entities. Attributes are
represented by oval shapes and connected to their respective entities.
One-to-many
Many-to-many
Types of Prototype
A model that visually represents the interaction between the user and
the system, typically focusing on the user interface and how users
will engage with the software.
2. Working Prototype
Prototyping Techniques
1. Throw-Away Prototype
Created with the understanding that it will be discarded once its
purpose is fulfilled.
The final system is then built from scratch, incorporating the
knowledge gained during the prototyping phase. This approach
prioritises speed and rapid user interaction, even if it means
sacrificing maintainability or fault tolerance in the prototype itself.
2. Evolutionary Prototype
Drawbacks of Prototyping
Clients may misinterpret the prototype as a final product or become
attached to features that were not intended for the final version.
Software Metrics ➕
Software metrics are quantitative measures of software development life
cycle attributes. They function as software measures, which map objects
from the software engineering world into mathematical constructs such as
numbers. Software engineers use these metrics to measure software
processes and their requirements.
Software metrics provide a structured approach to quantifying various
aspects of the software development process and the resulting software
product. They offer a way to measure what might seem intangible, like
Lines of Code
Function Points
This metric aims to measure the functionality delivered by a software
system from the user's perspective. It quantifies the system's size
and complexity based on the number and type of user inputs,
outputs, inquiries, files, and interfaces.
Function points offer a more implementation-independent measure
than LOC, making them suitable for comparing projects that use
different programming languages or development methodologies.
Process Metrics
These metrics shift the focus from the software product to the
process of creating that product.
Effort
Often measured in person-months or person-hours, this metric
tracks the amount of human resources invested in a project or a
specific development task
Schedule
This metric measures the time taken to complete a project or a
defined phase of development, typically tracked in calendar days,
months, or years.
Other Metrics
Defect Metrics
These metrics quantify the number of defects found in the software
at different stages of testing or development. They provide insights
into the software's quality and can help identify areas where
development processes need improvement.
Reliability Metrics
Chapter 3
Software Design
Overview
Software design is the process of applying software engineering techniques
to develop models that define a software system, which provides sufficient
details for the actual realisation of the software.
The goal of software design is to translate user requirements into an
implementable program. Software design forms the foundation for the
implementation of a software system and helps in the maintenance of
software.
Software quality and the software design process are highly interrelated,
since quality is built into the software during the design phase.
Data Design
Name
General Description
Characteristics
Ownership
Data structures
define the logical relationships between individual data elements. The
structure of information affects the design of procedures and algorithms,
making proper selection critical.
Scalar items, like the name of a month, are the simplest form of data.
Linked Lists are similar to vectors, but items are stored non-
contiguously.
Modular Design
Modular design is a key principle in software engineering, making software
products more maintainable and manageable. It involves breaking down
software into smaller, independent units called modules, which are named,
addressable, and can be developed and integrated separately.
Types of Modules
1. Incremental modules
2. Sequential modules
3. Parallel modules
Coupling
Measures the interdependence between modules, indicating the degree
to which they rely on each other4. Low coupling is preferable as it
signifies that modules are more independent and changes in one are less
likely to affect others
The types of coupling from best (lowest level of coupling) to worst (high
level of coupling) are described below:
Interface Design
Interface design deals with the personnel issues of the software and is one
of the most important parts of software design. It is crucial because user
interaction with the system takes place through various interfaces provided
by the software product. Interface design has evolved a lot from the days of
text-based systems where users had to type commands on the command
line to execute tasks, to menu-based interfaces, and now, modern graphical
user interfaces that provide tools for easy navigation and interactivity.
Interface design deals with the personnel issues of the software and is one
of the most important parts of software design. It is crucial because user
interaction with the system takes place through various interfaces provided
by the software product. Interface design has evolved a lot from the days of
text-based systems where users had to type commands on the command
line to execute tasks, to menu-based interfaces, and now, modern graphical
user interfaces that provide tools for easy navigation and interactivity.
Warn users about critical tasks, such as deleting files or updating critical
information.
Goal Orientation: The primary goal of the interface and the user's
intended tasks should be clear and easily understood.
A well-designed HCI considers the user's mental model of the system and
strives to bridge the gap between the user's expectations and the system's
functionality. This involves:
Architectural patterns
Data patterns
Component patterns
Webapp patterns
Creational patterns
Structural patterns
Behavioral patterns
Chapter 4
Software Quality & Security
Overview
This unit focuses on ensuring that software is developed to a high standard
and is secure.
Usability: How easy is the software for users to learn, operate, and
understand?
Insufficient testing
Review summary report: Details what was reviewed, who reviewed it,
the findings, and the conclusion.
IEEE Definition: The probability that software will not fail in a system for
a specific time under certain conditions, where probability is determined
by system inputs and usage. The system inputs influence whether
existing faults are encountered.
Failure intervals are independent, and all software failures are observed.
"b" and "c" are constants derived from the historical data of similar
software.
The sources also provide a table listing various software quality standards
and their titles, including standards from ISO/IEC and IEEE. These standards
cover a wide range of aspects, such as software life cycle processes,
product quality, risk management, and software quality assurance plans.
Identifying assets
Identifying threats
Documenting threats
Rating threats