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 offhook, 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

Science

Engineering Science

Engineering Design Industrial Design Architecture Arts

Engineering Technology

Production Installation

Human factors
28 NU Islamabad

Dr. Arshad A. Shahid

8

A Computing Spectrum
Politics & Law
• Algorithms • Information theory • Computability theory

Social Issues

Psychology & Sociology Economics Engineering Design Industrial Design

• Development Environment • Implementation Standards

Solutions

Theory

Science

Engineering Science

Engineering Technology

Production Installation

• System Software • Computer Architecture • Information storage

Architecture Arts

• Analysis & Design Methods • Design Process • Measurements

• System Administration • End-user Support

Human factors
29 NU Islamabad

Dr. Arshad A. Shahid

9

Computing Professions
•Creates new applications applying engineering principles and CS best practices Software Engineer

Politics & Law Psychology & Sociology Economics

Social Issues
Information Systems Practitioner •Creates business solutions

Solutions

Theory

Science

Engineering Science

Engineering Design Industrial Design Architecture

Engineering Technology

Production Installation

Computer Scientist

Information Technologist •Provides end-user solutions

•Creates New Infrastructure

Arts

Human factors
30 NU Islamabad

Dr. Arshad A. Shahid

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

Sign up to vote on this title
UsefulNot useful