Software Engineering
Chapter 1
Prepared By: Rahmat Ullah Khan
rahmatniazi88@gmail.com
Reference Books
Software Engineering, 10th Edition,
by Ian Sommerville
Addison-Wesley, 2015
Fundamentals of Object Oriented Design in
UML by Miler Page-Jones
Objectives
To introduce software engineering and to
explain its importance
To set out the answers to key questions about
software engineering
To introduce ethical and professional issues
and to explain why they are of concern to
software engineers
Objectives cont
Appreciate Software Engineering:
Build complex software systems in the context of
frequent change
Understand how to
produce a high quality software system within time
while dealing with complexity and change
Acquire technical knowledge (main
emphasis)
Acquire managerial knowledge
What is an Engineering System?
Engineering system = capability for the
development of systems, hardware, or
software
Components:
People
Process
Technology
Knowledge
Interfaces:
Internal (among components)
External (to stakeholders and customers)
Why Software Engineering?
Software development is hard !
Important to distinguish easy systems
(one developer, one user) from hard
systems (multiple developers, multiple
users,
The problem is complexity
Many sources, but size is key:
Software engineering is about
managing this complexity
Software Engineering as defined
by IEEE
Software Engineering is the application of a
systematic, disciplined, quantifiable approach to
the development, operation, and maintenance of
software; that is, the application of engineering to
software
The seminal definition:
[Software engineering is] the establishment and
use of sound engineering principles in order to
obtain economically software that is reliable and
works efficiently on real machines
The five Ps of Software
Engineering
People - who develop, manage, and run the
software
Product - the software itself
Project - activity of creating the software
Process - the manner in which the project
proceeds (Bug tracking, Change approval,
Quality assurance)
Professionalism - the attitude of all involved
People + Processes + Tools Product
What is the difference between software
engineering and system engineering?
Software engineering is part of System
engineering
System engineering is concerned with all aspects
of computer-based systems development including
hardware,
software and
process engineering
System engineers are involved in
system specification,
architectural design,
integration and deployment
Software costs
Software costs often dominate computer
system costs. The costs of software on a PC
are often greater than the hardware cost.
Software costs more to maintain than it does
to develop. For systems with a long life,
maintenance costs may be several times
development costs.
What is a Software?
Software is
Instructions (computer programs) that when
executed provide desired features, functions
and performance.
Data Structures that enable the programs to
adequately manipulate information.
Documents that describe the operation and
use of the programs.
Why Software is Important?
The economies of ALL developed nations
are dependent on software.
Modern systems are software controlled
(e.g., transportation, medical,
telecommunications, military, industrial,
entertainment)
Expenditure on software represents a
significant fraction of GNP in all developed
countries.
Characteristics of Software
Software is developed or engineered, it is not
manufactured
Software does not wear out
Components Based Development
Wear Out VS Deterioration
Software Categories
1. System software: such as compilers, editors, file management
utilities
2. Application software: stand-alone programs for specific needs
3. Engineering/scientific software: Characterized by number
crunchingalgorithms. such as automotive stress analysis, molecular
biology, orbital dynamics etc.
4. Embedded software resides within a system. (key pad control of a
microwave oven, digital function of dashboard display in a car)
5. Product-line software focus on mass consumer market. (word
processing, graphics, database management)
6. Web Apps (Web applications) network centric software. As web 2.0
emerges, computing environments is integrated with remote database
and business applications.
7. AI software uses algorithm to solve complex problem. Robotics,
expert system, pattern recognition game playing
Legacy Software
Legacy software can be characterized
informally as old software that is still
performing a useful job for the community.
Legacy software systems are programs that
are still well used by the community or have
some potential inherent value but that were
developed years ago using early versions of
Fortran or other languages.
Software Myths
Management Myths
1. We already have a book that's full of standards and
procedures for building software, won't that provide
my people with everything they need to know?
2. If we get behind schedule, we can add more
programmers and catch up (sometimes called the
Mongolian horde concept).
3. If I decide to outsource the software project to a
third party, I can just relax and let that firm build it.
Software Myths (cont)
Customer Myths
1. A general statement of objectives is sufficient to
begin writing programs, we can fill in the details
later.
2. Project requirements continually change, but
change can be easily accommodated because
software is flexible.
Software Myths (cont)
Practitioners Myths
1. Once we write the program and get it to work, our
job is done.
2. Until I get the program "running" I have no way of
assessing its quality.
3. The only deliverable work product for a successful
project is the working program.
4. Software engineering will make us create
voluminous and unnecessary documentation and
will invariably slow us down.
FAQ about software engineering
Essential attributes of good
software