Está en la página 1de 35

Scope of Software Engineering

Muhammad Naveed Zafar


Educational Background

Professional Experience

BS in Computer Science
(Bahria University)

Project Manager
(NevTech)

MS in Software Project
Management
(FAST University)*

Faculty Member
(Aptech MSG)
Project Coordinator
AMI
Software Engineer
GoSafe Systems

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 clients 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.

*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:
1967, a NATO group coined the term Software Engineering
1968 NATO Software Engineering Conference concurred that
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 several ways to produce
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.

Maintenance
67%

Approximate relative costs of


the phases of the software
life cycle.

Horror Software Failure Stories


Patients died as a consequence of severe overdoses of
radiation.
US Treasury Department mailed incorrectly 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 communicate processes 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 Science: focusing on computer 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.
~1975-1985: 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, 5,000-50,000 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
Engineering
Analysis
Design
Code
Testing
Maintenance

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 #1

Team #2
Business
Modeling

Business
Modeling
Data
Modeling
Process
Modeling

Data
Modeling
Process
Modeling
Application
Generation
Testing &
Turnover

Application
Generation
Time period

Testing &
Turnover

RAD Characteristics
High-speed version of waterfall model
Primarily for information systems applications
Requirements well-understood, fully functional 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

También podría gustarte