0% found this document useful (0 votes)
73 views34 pages

Scopeof Software Engineering

This document provides an overview of the key concepts of software engineering. It discusses what software engineering is, why it is needed due to past issues with software quality, and the main stakeholders involved. It also describes common software engineering practices like using an engineering approach, having various roles on a development team, applying problem-solving paradigms, following software development life cycle models, and adopting best practices.

Uploaded by

M Awi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
73 views34 pages

Scopeof Software Engineering

This document provides an overview of the key concepts of software engineering. It discusses what software engineering is, why it is needed due to past issues with software quality, and the main stakeholders involved. It also describes common software engineering practices like using an engineering approach, having various roles on a development team, applying problem-solving paradigms, following software development life cycle models, and adopting best practices.

Uploaded by

M Awi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 34

Scope of Software Engineering

Agenda
 What, Why and Aspects of Software Engineering ?

 Horror Software Failure Stories

 Software Engineer Line of Actions

 Software Engineering Stakeholders

 Engineering Approach

 Roles and Members of Development Team

 Problem Solving Paradigms

 SDLC Models

 Best Practices to be Adopt

 Scrum Methodologies
What is software?
• Computer programs and associated documentation

• Software products may be developed for a particular


customer or may be developed for a general market

• Software products may be

– Generic/COTS - developed to be sold to a


range of
different customers

– Custom- developed for a customer according to their


specification
What is Engineering?
• Engineering is …
– The application of scientific principles and methods to the
construction of useful structures.
Examples:
– Mechanical engineering
– Computer engineering
– Civil engineering
– Chemical engineering
– Electrical engineering
– Nuclear engineering
– Aeronautical engineering
What Actually “Software Engineering”?
• A discipline whose aim in the production of software that

– meets the client‟s needs

– fault-free

– delivered on time

– delivered within budget

– easy to modify
Why the need for Software Engineering?

Software Crisis: Unacceptable low quality of software,


exceeds deadline and budget.

Successf
Canceled,
ul,
23%
28%

*Completed with
Faults, 49%

*Completed late, over


budget, and/or with
features missing
Why Software Engineering ?
• The problem is complexity

• Many sources, but size is a key:

– Mozilla contains 3 Million lines of code

– UNIX contains 4 million lines of code

– Windows 2000 contains 108 lines of code

• Second is roles define

• Third is uncertainty of “inputs” and their timing

• Fourth is the continuing changing “environment” and demands.

Software engineering is about managing all the sources of complexity to


produce effective software.
Software Engineering Aspects

• Historical Aspects:
– , a NATO group coined the term “Software
Engineering”
that
– NATO Software EngineeringConference concurred
“Software production should be an engineering-like activity”
– Using philosophies and paradigms of established engineering
disciplines to solve Software Crisis that the quality of software was
generally unacceptably low and that deadlines and cost limits were
not being met”
Software Engineering Aspects…

• Economic Aspects
– Software Engineering v.s. Computer Science

• The computer scientist investigates ways to produce


several
software, some good and some bad

• But the software engineer is interested in only those


techniques that make sound economic sense.
For example: A coding technique that can execute very efficiently
but with higher maintenance cost may not be a good choice,
since maintenance occupies a lot of resources of the whole life
cycle.
Software Engineering Aspects…
• Maintenance Aspects
– Software Life Cycle / Software Process

• Requirements Phase

• Specification (Analysis) Phase

• Planning Phase

• Design Phase

• Implementation Phase

• Integration Phase

• Maintenance Phase highest cost among all these


phases)

• Retirement
Maintenance Aspects
Maintenance is so important that a major aspect of software
engineering consists of techniques, tools, and practices that lead to a
reduction in maintenance cost

Requirement 2%
Specification 4%
Planning 1%
Design 6%
Module Coding 5%
Maintenance Module Testing 7%
Integration 8%
Maintenance
67%
Approximate relative costs
of the phases of the software
life cycle.
Horror Software Failure Stories
• Patients died as a consequenceof severeoverdoses
of radiation.

• US Treasury Department mailedincorrectly printed


Social Security Checks.

• Interest miscalculated on student loans resulting in higher


monthly payments.

• Mars Climate Orbiter spacecraft crashes into the surface of


Mars because of measurement conversion error.
Consequences of software failures range from inconvenience to death!
Software Engineer Line of Actions
Software Engineers should
– adopt a systematic and organised approach to all aspects
of software development.
– use appropriate tools and techniques depending on
• the problem to be solved,

• the development constraints and

• the resources available


– Understand and communicateprocesses for
improved software development within their organization
– Be effective team members and/or leaders.
– Can be very technical or more managerial depending on
organizational need.
Where Does the Software Engineer Fit In?

• Computer focusing on computer


Science:
hardware, compilers, operating systems, and
programming languages

• Software Engineering: a discipline that uses computer and


software technologies as a problem-solving tools
Where Does the SW Engineer Fit in?...
Relationship between Computer Science and Software
Engineering
Qualities of Good Software?

• Good software engineering must always include a strategy


for producing quality software

• Three ways of considering quality

– The quality of the product

– The quality of the process

– The quality of the product in the context of the business


environment
Who Does Software Engineering?

• Customer: the company, organization, or person who pays


for the software system

• Developer: the company, organization, or person who


is building the software system

• User: the person or people who will actually use the system
Who Does Software Engineering? (continued)
Participants (stakeholders) in a software development project
Engineering Approach
Building a System

• Requirement analysis and


definition

• System design

• Program design

• Writing the programs

• Unit testing

• Integration testing

• System testing

• System delivery

• Maintenance
Members of the Development Team
• Requirement Analysts: work with the customers to identify and document the
requirements

• Designers: generate a system-level description of what the system


us
supposed to do

• Programmers: write lines of code to implement the design

• Testers: catch faults

• Trainers: show users how to use the system

• Maintenance Team: fix faults that show up later

• Librarians: prepare and store documents such as software requirements

• Configuration Management Team: maintain correspondence among various


artefacts.
Members of the Development Team
(continued)

Typical roles played by the members of a development team


Secrets of Successful Projects
Problem Solving Paradigms
 Several techniques have been suggested to help solve the software
crisis
– ~ - : Structured Paradigm
• Structured Systems Analysis, Composite/Structured Design,
Structured
Programming, Structured Testing

• Lead to major improvements for software industry

• But only good for small programs (say, , - , lines of codes)

• Not so good in software maintenance aspects, (for instance, because of the


separation of action-oriented and data-oriented in structured paradigm)
– Object-Oriented Paradigm
• An object is a unified software component that incorporates both
data and
actions that operate of those data --> More Promising!
Why use Object Oriented Paradigm?
• Classical Structured Paradigm

– Focus on functions of system

• Object-Oriented Paradigm

– Focus on objects

– Implementation details
are local to the object

• Regression fault (fault produced by seeming unrelated change) is


greatly reduced.

– Encapsulation: well-designed independent units

– Potential Reuse of objects reduces time and cost


The Software Process

• A structured set of activities required to develop a software system


– Specification;

– Design;

– Validation;

– Evolution.

• A software process model is an abstract representation of a process.

• It presents a description of a process from some particular perspective.


Waterfall Model
System
Engineerin
g

A
n
a
l
y
s
i
s

Design

Code

Testing
Waterfall Model Characteristics

• The classic life cycle - oldest and most widely used paradigm

• Activities „flow‟ from one phase to another

• If there are corrections, return to a previous phase and „flow‟


from there again

• Major advantages: Good for planning and well defined/repeated projects


Problems of Waterfall Model

• Real projects often follow the sequence

• All requirements may not be stated explicitly by customer

• Customer only sees the results after some time

• Developers are often delayed at certain phases


Rapid Application Development (RAD)
Team #2
Team #1 Business
Modeling
Business Data
Modeling
Process
Modeling
Data Modeling
Modeling Application
Generation
Process Testing &
Modeling Turnover
Application

Generation
Testing &
Time period
Turnover
RAD Characteristics
• “High-speed” version of waterfall model

• Primarily for information systems applications

• Requirements well-understood, fullyfunctional system produced


in short time

• The application modularized - major functions can be completed in 3


months

• Separate teams complete the functions, then integrated as a whole

• Requires human resource and commitment


Scrum Agile Methodologies
Importance of Continual Planning,
Testing, Documentation

• After customer has signed off on the specifications, continue to monitor


and adjust plan.

• Software must be fault-free as possible at all times.

• At all times, documentation must be complete, correct and up-to-date.

– personnel overturn

– incomplete implementation

– inaccurate testing

– impossible to maintain
Conclusion
• Tips to Solve a problem

– Analyse Problems

– Synthesize a solution

• Understand that requirements may change

• Must view quality from several different


perspectives

• Use fundamental software engineering concepts

• Keep system boundary in mind


Thank you

You might also like