You are on page 1of 15

WHAT IS SOFTWARE ENGINEERING?

† The term S/W Engineering was/is sometimes confusing, firstly because


S/W engineer (some times) work as system programmer, people assume
that the engineering component of the term comes from this source. SO we
have H/W engg and S/W engg.
† Second cause of confusion lies in the fact that there is no generally agreed
definition of software engineering, although many are similar.
† Software Engineering as a term was first coined in 1968 at a NATO
conference in West Germany held to discuss the software crises
† Other definitions such as Fairley’s 1985 explicitly include the concerns of
management in the software development process:
‘Software engineering is the technological and managerial
discipline concerned with systematic production and maintenance
of software products that are developed and modified on time and
within cost estimates.’

Dr. Arshad A. Shahid 21 NU Islamabad

1
What is Software Engineering? (2)

"The establishment and use of sound engineering


principles (methods) in order to obtain economically
software that is reliable and works on real machines"
[Bauer 1972].

"cost-effective Software engineering is that form of


engineering that applies the principles of computer science
and mathematics to achieving solutions to software
problems.“ [CMU/SEI-90-TR-003]

"The application of a systematic, disciplined, quantifiable


approach to the development, operation, and maintenance
of software" [IEEE Standard Computer Dictionary, 610.12,
ISBN 1-55937-079-3, 1990].

Dr. Arshad A. Shahid 22 NU Islamabad

2
What is Software Engineering? (3)

™ Software engineering is concerned with the theories,


methods and tools for developing, managing and evolving
software products. [ I. Sommerville, 6ed.]
™ A discipline whose aim is the production of quality
software, delivered on time, within budget, and satisfying
users' needs. (Stephen R. Schach, Software Engineering,
2ed.)
™ The practical application of scientific knowledge
in the design and construction of computer
programs and the associated documentation
required to develop, operate and maintain them
[B.W. Boehm]
™ Multi-person construction of multi-version software
(Parnas, 1987)

Dr. Arshad A. Shahid 23 NU Islamabad

3
What is Software Engineering? (4)

• Software Engineering 2004 (SE2004)


Curriculum Guidelines for Undergraduate Degree
Programs in Software Engineering. A Volume of
the Computing Curricula Series

The Joint Task Force on Computing Curricula


IEEE Computer Society
Association for Computing Machinery

• Guide to the Software Engineering


Body of Knowledge
2004 Version
SWEBOK®
A project of the IEEE Computer Society
Professional Practices Committee

Dr. Arshad A. Shahid 24 NU Islamabad

4
So, Software Engineering is …

• Scope
– study of software process, development
principles, techniques, and notations
• Goals
– production of quality software,
– delivered on time,
– within budget,
– satisfying customers’ requirements and
users’ needs

Dr. Arshad A. Shahid 25 NU Islamabad

5
The Role/Scope Of S/W Engineering In System Design

• A software system is often a component of a much larger system.

• The software engineering activity is therefore a part of a much


larger system design activity in which the requirements of the
software are balanced against the requirements of other parts of
the system being designed.*
• For Example, A requirement such as “the system must not be down
for more than a second in 20 years” or “when a receiver is taken off-
hook, a dial tone is played within half a second” can be satisfied
with a combination of hardware, software and special devices.
• A trade off is required as what should be done in software and what
should be done in hardware. Software implementation offers
flexibility, while hardware implementation offers performance.$

Dr. Arshad A. Shahid 26 NU Islamabad

6
The Role/Scope Of S/W Engineering In System Design (ctd.)

• To do software engineering right, requires a broader look at the


general problem of system engineering. It requires software
engineer to be involved when requirements are being developed
initially for the whole system.

• It requires that software engineer attempt to understand the


application area rather than just what abstract interfaces the
software must meet.

Dr. Arshad A. Shahid 27 NU Islamabad

7
Knowledge Spectrum

Social Issues
Politics
& Law

Psychology
& Sociology
Economics

Solutions
Theory

Engineering Engineering Engineering Production


Science Installation
Science Design Technology

Industrial
Design

Architecture

Arts
Human factors
Dr. Arshad A. Shahid 28 NU Islamabad

8
A Computing Spectrum

Social Issues
Politics
& Law

Psychology
• Algorithms
• Information theory
& Sociology • Development Environment
• Computability theory • Implementation Standards
Economics

Solutions
Theory

Engineering Engineering Engineering Production


Science
Science Design Technology Installation

Industrial
Design
• Analysis & • System
• System Software Architecture Design Methods Administration
• Computer Architecture • Design Process • End-user Support
• Information storage • Measurements
Arts
Human factors
Dr. Arshad A. Shahid 29 NU Islamabad

9
Computing Professions
Social Issues
•Creates new applications Politics
applying engineering principles & Law Information Systems Practitioner
and CS best practices
•Creates business solutions
Psychology
Software Engineer
& Sociology
Economics

Solutions
Theory

Engineering Engineering Engineering Production


Science Installation
Science Design Technology

Industrial
Computer Scientist Design Information Technologist
Architecture
•Provides end-user solutions
•Creates New Infrastructure
Arts
Human factors

Dr. Arshad A. Shahid 30 NU Islamabad

10
THE RELATIONSHIP OF SOFTWARE ENGINEERING TO
OTHER AREAS OF COMPUTER SCIENCE
[Carlo Ghezzi]
Influence on Programming Language
Team Development
inclusion of modularity features, such as separate and independent
compilation, and the separation of specification from implementation,
in order to support decomposition and large software.

Library of Components
The Ada programming language, for example, supports the
development of “Package”- allowing the separation of the package
interface from its implementation- and libraries of packages that can be
used as component in the development of independent software system.
Recent examples …...classes, patterns, components…

Dr. Arshad A. Shahid 31 NU Islamabad

THE RELATIONSHIP OF SOFTWARE ENGINEERING TO OTHER AREAS OF


COMPUTER SCIENCE:
1. Team Development
2. Library of Components
3. Influence On Operating System
4. Database
5. Artificial intelligence
6. Theoretical models
11
In the opposite direction, programming languages have influenced
software engineering. One example is the idea that requirements and
design should be described precisely, possibly using a language as
rigorous and machine-processable as a programming language.
Influence On Operating System
can be seen the way operating systems are structured and the goals they
try to satisfy. For example, the UNIX operating system attempts to
provide a productive environment for software development. A class of
tools provided in this environment supports configuration management-a
way to maintain and control the relationships among the different
components and versions of a software system (SCCS: Source Code
Control System!). Further LEX, YACC etc [1980’s]
In the opposite direction, Virtual machines, levels of
abstraction, and separation of policy from mechanism are all
concepts from operating system field with general applicability to
any large software system.
Dr. Arshad A. Shahid 32 NU Islamabad

12
Database
‰ The database allows applications to be written that
use data without worrying about the underlying
representation of the data. This independence allows
the database to be changed in certain ways (e.g. to
increase the performance of the system-without any
need to change the applications). This is a perfect
example of the benefit of abstraction and separation of
concerns, two key software engineering principles.
‰ SE requires Now OO data bases

‰ influence of the database field on SE is through the


notion of “data independence”.

Dr. Arshad A. Shahid 33 NU Islamabad

13
Artificial intelligence
SE techniques have been used in AI systems – e.g. in
expert systems. These systems are modularized, with a
clear separation between the fact “known” by the expert
system and the rules used by the system for processing the
fact-for example, a rule to decide on a course of action.
Techniques of AI are being applied to improve software
engineering tasks. For example, “programming
assistants” are being developed to act as consultants to
the programmer, watching for common programming
idioms or the system requirements. Such “assistants” are
also being developed to help in the testing activities of the
software development, to debug the software.
Dr. Arshad A. Shahid 34 NU Islamabad

14
Theoretical models
• SE has also affected theoretical computer science.
Algebraic specification and abstract data type theory
are motivated by the needs of SE.
Management science
• A large part of software engineering is involved with
management issues. Such management has two aspects:
technical management and personnel management. The
generic issues project management include project
estimation, project scheduling, human resource planning,
task decomposition and assignment, and project
monitoring.
• SE has provided management science with a new
domain/challenges in which to test management theories and
models.
Dr. Arshad A. Shahid 35 NU Islamabad

15

You might also like