Unit No 1 Slides

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 56

Software Engineering (CSC17103)

Distribution of Marks:
Component Marks Number of Duration Scheduled Date Scheduled Time
Questions
Quiz – I 10 50 MCQ 30 Mins 11 September 2021 3:00 to 3:30 PM
Quiz – II 10 50 MCQ 30 Mins 30 September 2021 8:00 to 8:30 PM
Quiz – III 10 50 MCQ 30 Mins 30 October 2021 3:00 to 3:30 PM
Quiz – IV 10 50 MCQ 30 Mins 20 November 2021 3:00 to 3:30 PM
Running Quiz
12 1-3 (MCQ) in a class 15-20 Secs each Any time during any class
(Surprise)
End Semester
48 5 (Descriptive) 125 mins To be Announced Later
Examination
Total Marks 100
Software Engineering
Course Outline:

- Introduction to Software Engineering (SE)


- Software Process
- Software Requirements Analysis
- Planning a Project
- Designing a Project
- Object Oriented Modeling & Design
- Coding
- Testing
Software Engineering
Course Outline:

√ Introduction to Software Engineering (SE)


Introduction to Software Engineering
Goals & Objectives
• To understand the basic steps of developing large software project.

• To be able to work in a team on a large software project.

• To be able to effectively analyze a programming problem.

• To be able to effectively design a solution to a programming


problem.

• To be able to assess potential sources of risk of failure for a large


software project.
Scope
The production of fault-free software, that is delivered on time, within
budget, and that satisfies the user’s need.

Aim
Develop a software
- OF HIGH QUALITY
- OF LOW COST
- ON SCHEDULE

That is, the “mantra” is to develop a software of high quality, low cost
and on time.
System
A collection of elements related in a way that allows the
accomplishment of some tangible object.

The evolution of most of the new system begins with – unclear,


obscure & nebulas concept.
Concept

System Analysis & Design

Hardware Software
Hardware Trade-offs Software
Engineering Engineering
Software
A software is thought of as either

• A collection of programs.
OR
• Instructions which when executed provide desired functions and
performance.
OR
• Data structures that enable the program to adequately manipulate
information.
OR
• Documents that describe the operations and use of the programs.

But instead IT IS THE SET OF ALL.


Software
IEEE defines software as:

The collection of computer programs, procedures, rules


and associated documentation and data.

This definition clearly states that software is not just programs but
includes all the associated data and documentation.
Characteristics of Software
• Is a logical or conceptual entity rather than a physical system
element.
• Is intangible.
• Is developed or engineered not manufactured.
• Does not wear out (due to excessive use or environmental hazards).
Instead it fails or deteriorates.
• Is built rather than assembled.
• Does not have spare parts.
Evolution of Software
The role of computer software has undergone significant change through
the 2nd half of the 20th century,

Early Years of Computer Era (From 1950 to Mid 1960s):


• Batch Orientation
• Limited Distribution
• Custom Software (software was designed for each application and
had a relatively limited distribution).
• Software was developed and used by the same person or
organization.
• You wrote it, you got it running, and if it failed, you fixed it.
• No documentation.
Evolution of Software
Second Era of Computer System (Mid 1960s to Late 1970s):

• Multiprogramming, Multiuser systems introduced new concepts of


human-machine interaction.
• Real Time (could collect, analyze, and transform data from multiple
sources, thereby controlling processes and producing output in msec
rather than minutes).
• Advances in online storage led to the 1st Generation of database
management systems.
• Product Software (Developed for widespread distribution in a
multidisciplinary market).
Evolution of Software
Third Era of Computer System (Mid 1970s to Late 1980s):

• Distributed Systems increased the complexity of computer-based


systems and it puts heavy demand on software developers.
• Software and the systems that is enabled continued to reside within
the industry and academia.
• Personal use was rare.
• Low-cost hardware.
Evolution of Software
Fourth Era of Computer System (Mid 1980s onwards):

• Moves us away from individual computers and computer programs


and towards the collective impact of computers and software.
• Computing architecture changed rapidly.
Software Qualities

USER – wants the software product to be reliable, efficient and easy to use.
PRODUCER – wants it to be verifiable, maintainable, portable and extensible.
MANAGER – wants the process of software development to be productive and easy to control.

Software qualities can be divided into two categories:


EXTERNAL QUALITIES
INTERNAL QUALITIES
Correctness, Reliability and Robustness
• A program is robust if it behaves “reasonably” even in circumstances
that were not anticipated in the requirement specification.

• Reliability is relative quality: if the consequence of a software error is


not serious.

• Correctness is an absolute quality: any deviation from the


requirements makes the system incorrect, regardless of how minor or
serious is the consequence of the deviation.
Performance
• Affects the usability of the system.
• Can be evaluated through efficiency.
• Too slow system – reduces the productivity.
• Too much disk space – too expensive to run.
• Too much memory – affects other applications.
• Affects the scalability of a system.
• Complexity of Algorithm plays important role.
User Friendliness
• Easy of Use

• User Interface
Verifiability
• If its properties can be verified easily.
• Through Formal Analysis Methods or Testing.
Maintainability
• Modifications made to a software system after its initial release.

• Divided in to three categories:

Corrective Maintenance

Adaptive Maintenance

Perfective Maintenance
Maintainability

• Repairability – A software system is repairable if it allows the


correction of its defects with a limited effort.

• Evolvability – capacity of a system for adaptive evolution.


Reusability

• Reusing of the same PROCESS.


Portability
• Software is portable – if it can run in different environments.
Understandability
• Easier to understand.

• Follow guidelines to:

Produce more understandable designs.

Write more understandable programs.


Interoperability
• Ability of the system to coexist and cooperate with other systems.
Productivity
• It is a quality of the Software Production Process.

• Measures the efficiency of the process.


Timeliness
• Ability to deliver a product on time.

• Software Crisis

• Requires:
• Careful scheduling,
• accurate work estimation, and
• clearly specified and verifiable milestones.
Visibility

• Visible – if all of its steps and its current status are documented clearly.
Discussed Software Qualities
• Correctness, Reliability and Robustness
• Performance
• User Friendliness
• Verifiability
• Maintainability
• Reusability
• Portability
• Understandability
• Interoperability
• Productivity
• Timeliness
• Visibility
Software Quality Life Cycle
Try This…..
Internal External Product-Related Process-Related
Correctness, Reliability and Robustness
Performance
User Friendliness
Verifiability √ √
Maintainability √ √
Reusability
Portability
Understandability
Interoperability
Productivity
Timeliness √ √
Visibility
Software Problems / Challenges
Software Problems (contd.)
Software is Expensive

Over the past decade, with the advancement of technology, the cost
of hardware has consistently decreased. On the other hand, the cost
of software is increasing.
Software Problems (contd.)
Late, Costly, and Unreliable

Late – behind scheduled time.

Costly – not within budget.

Unreliable – software does not do what it is supposed to do or does


something it is not supposed to do.
Software Problems (contd.)
Failure Curve for Hardware
Software Problems (contd.)
Failure Curve for Software
Software Problems (contd.)
Problem of Change & Rework

Maintenance Phase

Maintenance involves:
• Understanding the existing software.
• Understanding the effects of change.
• Making the changes.
• Testing the new parts.
• Retesting the old parts.

Law of Software Evolution


Software Engineering
Definitions
• It is an outgrowth of hardware and system engineering and has three
key elements: methods, tools & procedures – that enables the
manager to control the process of software development and provide
the practitioner with a foundation for building high-quality software
in a productive manner. - Pressman

• Software Engineering is the systematic approach to the development,


Operation, maintenance and retirement of software. - Jalote
• The goal of software engineering is to take
software development closer to science and
engineering and away from ad-hoc approaches
for development.
Software Engineering

Problems / Challenges
Software Engineering Problems
Problem of Scale (contd.)

The methods that are used for developing small systems


generally do not scale up to the large systems.
Software Engineering Problems
Cost, Schedule and Quality (contd.)

Cost – Total number of person-month (PM) spent in the project.

Schedule – The cycle time from concept to delivery should be small.

Quality – Developing methods that can produce high-quality


software.
Software Engineering Problems
Quality (contd.)

Quality of a software product is having three dimension:

Portability
Maintainability
Reusability
Product Operation Understandability
Verifiability
Interoperability

Product Transition

Product Revision Correctness, Reliability, Robustness


Performance
User Friendliness
Timeliness
Visibility
Productivity
Software Engineering Problems
Problem of Consistency (contd.)

A software development organization should produce consistent


quality with consistent productivity.

Consistency of performance allows:


• Prediction of outcomes with reasonable accuracy.
• Improvement of processes to produce higher-quality
products.
• Improvement of productivity.
Basic objective of Software Engineering

Develop methods and procedures for software


development that can scale up for large systems
and that can be used to consistently produce
high-quality software at low cost and with a small
cycle time.
Software Development Methodologies
Software Development Methodologies
Software Development should be in phases:

Better Management

Achieve Consistency

Lower Cost

Proper Checking for quality & progress


Software Development Methodologies

Feasibility Study
Software Development Methodologies

Requirements Analysis Phase


‘What’ is needed from the system not ‘how’ the system will achieve its goals.

Two major activities:

Problem understanding or analysis

Requirement Specification

Ultimate goal is to produce the Software Requirement Specification (SRS)


document.
Software Development Methodologies

Software Design Phase

Plan a SOLUTION.
First step in moving from the “Problem Doman” to “Solution Domain”.

Most critical part that affects the Quality of the Software.

It has a major impact on later phases like testing & maintenance.

Output of this phase is Design Document.


Software Development Methodologies

Software Design Phase

Activities are divided into Two Phases:

System Design
What components are needed i.e., identifying the modules,
its specifications & how they interact.

Detailed Design
How the components can be implemented in software.
Software Development Methodologies

Software Coding Phase

Translate the design of the system into code in the given


programming language.

It affects both testing & maintenance.

The goal of coding should be to reduce the testing and maintenance


efforts.

Focus on easy to read & understand.


Software Development Methodologies

Software Testing Phase

Quality Control measures.

Basic function is to detect errors in the software.

Testing uncovers requirement, design & coding errors in the


programs, so different levels of testing are used.
Software Development Methodologies

Software Testing Phase


Levels of Testing:

Unit Testing

Integration Testing

System Testing

Acceptance Testing
Software Development Methodologies

Software Maintenance Phase

Removal of residual errors.

Corrective

Adaptive

Perfective

You might also like