Professional Documents
Culture Documents
1
What is Software Engineering? (2)
2
What is Software Engineering? (3)
3
What is Software Engineering? (4)
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
5
The Role/Scope Of S/W Engineering In System Design
6
The Role/Scope Of S/W Engineering In System Design (ctd.)
7
Knowledge Spectrum
Social Issues
Politics
& Law
Psychology
& Sociology
Economics
Solutions
Theory
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
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
Industrial
Computer Scientist Design Information Technologist
Architecture
•Provides end-user solutions
•Creates New Infrastructure
Arts
Human factors
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…
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
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