What is Software Engineering?

Software engineering is a field of engineering & writing programs for computers. A software engineer writes softwares and compiles software using methods that proves it. Software Engineering process is model chosen for managing creation of software from initial-scale to final product. It is a process of developing software in a planned and structured way.

ANALYSIS-> DESIGN -> CODING ->TESTING ->MAINTAINENCE

ONE LINE DESCRIPTION

It is a systemetic ,disciplined,cost effective technique for software development.Engineering approach to develop a software

Software Requirements

Features and functionalities of a target systems.Means what the system should do..

It is a 4 step process

FEASIBILITY STUDY- Study if the system is feasible or not

REQUIREMENT GATHERING- gathering info from client

SRS(Software Requirements & Specification)-Description of software

SOFTWARE REQUIREMENT VALIDATION-Check accuracy & validate

Software Requirements & Specification

Features and functionalities of a target systems.Means what the system should do..

SRS structure

INTRO- Purpose,Audience,Scope,Definitions,Reference

DESCRIPTION- User Interface, System Interface, Assumptions,User Characteristics

SYSTEM FEATURE AND REQUIREMENTS-Functional Requirements,Use Case,Logical Database,Non Functional Requirements[safety,secuirity]

DELIVER FOR APPROVAL

Functional & Non Functional Requirements

Functional Requirements- What the system should do? (Working of the system)

Non Functional Requirements- How the system should do? (Secuirity,storage,performance,Disaste Recovery,Flexibility,Accesibility)

User Requirements

User Requirements- What the user wants from the system?

Easy & Simple to Operate

Quick Response

Effective Error Handling

Customer Support

SOFTWARE DEVELOPMENT LIFE CYCLE?

Software development lifecycle is a systematic approach to software development, encompassing planning, analysis, design, coding, testing, deployment, and maintenance. It ensures quality, efficiency, and adherence to requirements throughout the software lifecycle.

PLANNING -> DEFINING -> DESIGNING -> CODING ->TESTING ->MAINTAINENCE

Diagram

Waterfall Model Diagram

Classic Waterfall Model

Diagram

Waterfall Model Diagram

Explanation

The classic waterfall model is a linear SDLC model where each phase is completed before moving to the next. It follows a sequential flow: requirements gathering, design, coding, testing, and maintenance. While simple to understand and manage, it can be inflexible, making it difficult to accommodate changes during development.

Advantages

1)Base Model

2)Simple & Easy

3)Can be used in small projects

Disadvantages

Disadvantages include

1)No experience

2)No feedback

3)No parallelism doing more than one work at same time

4)High Risk

Quiz

Iterative Waterfall Model

Diagram

Iterative Model Diagram

Iterative Waterfall Model is a hybrid approach that combines the sequential nature of the classic Waterfall model with the flexibility of iterative development. It divides the project into smaller, manageable iterations, each following the Waterfall phases (requirements, design, coding, testing). After each iteration, FEEDBACK is incorporated into the subsequent ones, allowing for adjustments and improvements based on early results. This provides more flexibility and adaptability compared to the traditional Waterfall model.

Unlike the Classic model ...

Advantages

Advantages include ...

1)Base Model

2)Simple & Easy

3)Can be used in small projects

4)Feedback Present

Disadvantages

Disadvantages include ...

1)No phase overlapping

2)Rigid & No Prototype

3)Less Customer Interaction

V SHAPED MODEL

Diagram

The V-shaped model is a software development lifecycle (SDLC) model that emphasizes testing throughout the development process. It follows a V-shape, with each development phase on one side and its corresponding testing phase on the other. The model ensures that testing is integrated early in the development cycle, leading to better quality and reduced risks.

Here's a breakdown of the V-shaped model:

Requirements Analysis: This phase defines the requirements for the software.

System Design: The overall system architecture and design are created.

High-Level Design: The system is broken down into smaller components or modules.

Low-Level Design: Detailed designs for each component are created.

Coding: The actual coding of the software begins.

Unit Testing: Individual components or modules are tested to ensure they function correctly.

Integration Testing: Multiple components are integrated and tested together.

System Testing: The entire system is tested to verify that it meets the specified requirements.

Acceptance Testing: The software is tested by the end-users to ensure it meets their needs.

Advantages

Advantages include ...

1)Every component testable

2)Time Saving & Good understanding on project

3)Progree tracked easily

4)Proactive defect tracked through testingt

Disadvantages

Disadvantages include ...

1)No feedback

2)No risk analysis

3)not good for big object oriented programming

Prototype Model

Diagram

Iterative Model Diagram

The Prototype Model is a software development lifecycle (SDLC) model that emphasizes early user feedback and iterative development. In this model, a working prototype of the software is created early in the development process, allowing stakeholders to see and interact with the product. This feedback is then used to refine and improve the prototype until it meets the desired requirements.

Here's a breakdown of the Prototype Model:

Define Requirements: Basic requirements are gathered from stakeholders.

Create Prototype: A working prototype is developed based on the initial requirements.

Evaluate Prototype: Stakeholders evaluate the prototype and provide feedback.

Revise Prototype: The prototype is revised based on the feedback and additional requirements.

Repeat Steps 3-4: The process of evaluation and revision continues until the prototype meets the desired requirements.

Develop Final Product: The final product is developed based on the refined prototype.

Unlike the Classic model ...

Advantages

Advantages include ...

1)helps when customer is not clear with idea

2)Good for technical & requirement risk

3)No misunderstanding

4)Feedback Present

Disadvantages

Disadvantages include ...

1)Expensive

2)User may get bored

3)Extra time & money

Incremental Model

Diagram

Iterative Model Diagram

The Incremental Model is a software development lifecycle (SDLC) model that emphasizes iterative development and delivery of working software. In this model, the project is divided into smaller, manageable increments, each of which delivers a working subset of the final product. This allows for early delivery of value to the customer and provides opportunities for feedback and adjustments based on early results.

Unlike the Classic model ...

Advantages

Advantages include ...

1)Model by model working

2)interaction maximum

3)Large projects

4)Early release project demand

3)Flexible Change

4)Used in phone apps

Evolutionary Model

Diagram

Iterative Model Diagram

The Evolutionary Model is a software development lifecycle (SDLC) model that emphasizes iterative development and continuous improvement. It is similar to the Incremental Model, but with a stronger focus on evolution and adaptation throughout the development process.There are no long term plans

Unlike the Classic model ...

Advantages

Advantages include ...

1)Customer requirement specified

2)Support changing enviornment

3)Risk Analysis Better

4)Initial Operating tims less

3)used in critical projects

4)Used in phone apps

Disadvantages

Disadvantages include ...

1)Not for small projects

2)High cost

3)High skilled personnel required

Spiral Model

Diagram

Iterative Model Diagram

The Spiral Model is a software development lifecycle (SDLC) model that combines elements of the Waterfall, Prototyping, and Incremental models. It is a risk-driven approach that emphasizes iterative development, risk management, and early prototyping.

Here's a breakdown of the Spiral Model:

Determine Objectives: The overall objectives and constraints of the project are defined.

Evaluate Risks: Potential risks are identified and assessed.

Develop and Verify Next-Level Product: A prototype or increment of the software is developed and tested.

Review & plan next phase of the product.

Advantages

Advantages include ...

1)Risk Handling

2)Large projects

3)Flexible

4)Customer Satisfaction

Disadvantages

Disadvantages include ...

1)complex

2)Expensive

3)More time beacuse too much risk analysis

Agile Model

Diagram

Iterative Model Diagram

The Agile Model is a software development approach that emphasizes iterative development, customer collaboration, and continuous improvement. It is based on a set of principles and practices that aim to deliver high-quality software quickly and efficiently.

Here's a breakdown of the Spiral Model:

Individuals and interactions over processes and tools: Prioritize people and their relationships over rigid processes and tools.

Working software over comprehensive documentation: Focus on delivering working software rather than excessive documentation.

Customer collaboration over contract negotiation: Collaborate with customers throughout the development process to ensure the product meets their needs.

Responding to change over following a plan: Be flexible and adaptable to changes in requirements or circumstances.

Advantages

Advantages include ...

1)Frequent Delivery

2)Face to Face Communication

3)Changes

4)Time

Disadvantages

Disadvantages include ...

1)Less Documentation

2)Maintenance problem

Scrum Model

Diagram

Iterative Model Diagram

Scrum is a popular Agile framework used for managing complex projects, especially in software development. It emphasizes iterative development, collaboration, and flexibility.

Here's a breakdown of the Spiral Model:

Sprints: These are time-boxed iterations, typically 2-4 weeks long, during which a specific set of features or tasks are completed.

Product Backlog: This is a prioritized list of all the features or functionalities that need to be developed for the product.

Sprint Backlog: This is a subset of the Product Backlog that is selected for development during a specific Sprint.

Daily Scrum: This is a daily 15-minute meeting where the team discusses their progress, identifies impediments, and plans for the next day.

Sprint Review: This is a meeting at the end of each Sprint where the team demonstrates the completed work to stakeholders and gathers feedback.

Sprint Retrospective: This is a meeting at the end of each Sprint where the team reflects on their performance and identifies areas for improvement.

Advantages

Advantages include ...

1)Freedom

2)High Product Quality & Low Risk

3)Reduced development time

4)Review current sprint & go to next

Disadvantages

Disadvantages include ...

1)Not efficient for big teams

2)No changes can be done once sprint done

Data Flow Diagram

Diagram

Iterative Model Diagram

Graphical tool for communicating with users,managers & other Personnel.Analyse existing & proposal system

Focus on movement of data between externsl entities & processes, process & data storage

DFD ELEMENTS

SOURCE/SINKS(External Entity)

DATA FLOW

--------><--------

PROCESS

DATABASE

Rules of Data Flow

Data can flow from

entity to process

process to entity

process to database

database to entity

Data cannot flow from

entity to database

entity to entity

datbase to database

process to process

Logical DFD & Physical DFD

Logical DFD -> shows movement of Information

Physical DFD -> shows movement of physical stuff

Iterative Model Diagram

Software Design Approaches

Functional Oriented Design

  • DFD used
  • Divide & Conquer
  • System is divided by Functional approach
  • Focuses on functions and procedures
  • Emphasizes step-by-step approach
  • Easy to implement and debug

Object Oriented Design

  • UML used
  • Buttom up Approach
  • System is divided by Object approach
  • Focuses on objects and classes
  • Emphasizes modularity and reusability
  • Supports inheritance and polymorphism

Software Project Management

Art & Science of planning & leading software projects

Enable grp of developers to work efficiently

PROJECT MANAGER

Managerial Skills,Technical Skills,Problem Solving Skills,Leadership

WORK

Planning,Organize,Staffing,Direct,Monitor,Control,Innovate

PROJECT PLANNING

1)Estimation 2)Staffing 3)Scheduling Manpower 4)Risk Management 5)Quality Reassurance

Risk

Art & Science of planning & leading software projects

Enable grp of developers to work efficiently

PROJECT MANAGER

Managerial Skills,Technical Skills,Problem Solving Skills,Leadership

WORK

Planning,Organize,Staffing,Direct,Monitor,Control,Innovate

PROJECT PLANNING

1)Estimation 2)Staffing 3)Scheduling Manpower 4)Risk Management 5)Quality Reassurance

Software Engineering Concepts

IMPORTANT CONCEPTS

Risk Assessment

Process to handle the risk in terms of damage (probability of occurrence and value).

Impact Assessment Matrix:

Frequency Negligible Marginal Critical Catastrophic
Frequent (5) 0-1 2-3 5-6 Very High
Likely (4) 4-6 months 10-12 months High Very High
Occasional (3) 8-10 months Low Moderate Very High
Remote (2) 1 day Moderate Very High Very High

Risk Control vs Risk Mitigation:

  • Risk Control: Actions to reduce probability of risks happening.
  • Risk Mitigation: Actions to reduce impact of risks. Example: An image does not load, but there is text to defend.
  • Other Mitigation: Risk avoidance, risk transfer, risk reduction, risk monitoring.

Project Estimation Techniques

Estimation involves various project parameters: size, effort, duration, and cost.

Techniques:

  • Empirical Estimation Techniques
  • Expert Judgment Technique: Project estimate based on experience.
  • Delphi Cost Estimation: Team of experts gives estimates.
  • Heuristic Estimation Techniques

COCOMO Model (Constructive Cost Model) has three stages:

  1. Basic COCOMO
  2. Intermediate COCOMO
  3. Complete COCOMO

Person Month (PM):

To estimate effort: 1 PM = Effort put by one person for one month.

Basic COCOMO Model

Computes software development effort in terms of time and cost as a function of program size.

Formulas:

  • Effort = a1 × (KLOC)b1 P.M.
  • Time = b2 × (Effort)b3 months
  • Productivity = KLOC / Effort

Example:

A software project with semi-detailed mode with 30,000 KLOC.

Effort = a1 × (KLOC)^b1 P.M.
       = 3.2 × (30)^1.05
       = 135 P.M.

Time   = b2 × (Effort)^b3 months
       = 2.5 × (135)^0.38
       = 14 months
                

Advantages:

  • Quick, rough, early estimates of software cost and schedule.

Disadvantages:

  • Does not account for hardware constraints or tools.

Intermediate COCOMO Model

Refines the estimates of Basic COCOMO by including cost drivers like reliability, experience, and complexity.

Formula:

E = a2 × (KLOC)^b2 × EAF

Where:
EAF = Effort Adjustment Factor

Example: 
Effort = a2 × (30 KLOC)^1.15 × 1.15
       = 282 P.M.

Time = b2 × (Effort)^b3 months
     = 2.5 × (282)^0.38
     = 13 months
                

Complete COCOMO Model

More accurate estimate by dividing the project into multiple sub-projects and applying Basic and Intermediate COCOMO models on each.

Advantages:

  • Divides large projects into smaller units for better estimates.
Critical Path Method & Error Seeding

Critical Path Method (CPM) & Error Seeding

Critical Path Method (CPM)

CPM is used to identify the critical path of a project.

Activity Predecessor Duration
A -- 5
B A 4
C A 6
D B 5
E C 7
F D, E 4

CPM Diagram:

Start ➔ A ➔ B ➔ D ➔ F

Start ➔ A ➔ C ➔ E ➔ F

Slack Time Formula: SL = LF - EF, LS = LD - ED

Error Seeding

Software development technique that involves deliberately introducing errors into a system.

Key Formula:

Undetected Errors: N × ((S - D) / D)

Rate of Failure: (Total errors - Undetected errors) / time interval

Error Seeding Example:

Given:

  • Total errors (S) = 200
  • Total errors in testing (D) = 16
  • Undetected errors = 250

Verification vs Validation

Verification:

  • Are you building it right?
  • Checking at every phase
  • Done by developers

Validation:

  • Are you building the right thing?
  • Check after development completion
  • Done by testers

Types of Testing

  • Static & Dynamic Testing
  • Black Box & White Box Testing
  • Unit Testing: Done during the development phase.
  • System Testing: Performed after integration testing.

Design Phase

This phase transforms the SRS (Software Requirements Specification) document into an easily implementable design document.

Key Concepts:

  • Modularity: Fundamental attribute of good design.
  • Cohesion: Measure of the functional strength of a module.
  • Coupling: Measure of interdependence between modules.

Additional Notes

Basic Path Coverage: Ensuring all code paths are covered in white-box testing.

Equivalence Class Testing: Dividing the input data into classes for testing.