0% found this document useful (0 votes)
28 views27 pages

SE Lec 1

Uploaded by

hazik jaffri
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views27 pages

SE Lec 1

Uploaded by

hazik jaffri
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 27

Lecture # 1:

Topic: Overview of Software Engineering


Importance and challenges of building software systems

Resource Person:
Muhammad Nadem,
Email: Muhammad.Nadeem@umt.edu.pk
Why Software Engineering is
Important?
◦ Financial, security, and safety critical systems rely
on software
◦ The economies of all developed nations are
dependent on software
◦ There is an increasing need to cost effectively
develop high-quality software
Motivation and need of software
engineering:
1.Higher rate of change in user requirements
2.Environment on which the software is
working.
3.Large software
4.Scalability
5.Cost
6.Dynamic Nature
7.Quality Management
Motivation and need of
software engineering:
 To predict time, effort, and cost
 To improve software quality
 To improve maintainability
 To meet increasing demands
 To lower software costs
 To successfully build large, complex

software systems
 To facilitate group effort in developing

software
So what is Software
Engineering?
 The branch of engineering associated with
the development of software product using
well-defined scientific principles, methods
and procedures is called software
engineering.
 The outcome of software engineering is an

efficient and reliable software product


 Improve quality and Reduce costs
What is Software Engineering (SE)?

◦ Software engineering is an engineering discipline


that applies theories, methods, and tools to solve
problems related to software production and
maintenance
◦ Software engineers strive to deliver high-quality
software, on time and within budget
Definition of Software
Engineering by IEEE:
◦ The application of a systematic, disciplined,
quantifiable (measureable) approach to the
development, operation and maintenance of
software.
◦ We can alternatively view Software
Engineering as:
A systematic collection of past
experience.
The experience is arranged in the form
of methodologies and guidelines.
Two Important tools used by Software
Engineering to reduce problem complexity:
 1. Abstraction. The principle of abstraction implies
that a problem can be simplified by omitting
irrelevant details.
◦ In other words, the main purpose of abstraction is to
consider only those aspects of the problem that are
relevant for certain purpose and putdown other aspects
that are not relevant for the given purpose.
◦ Once the simpler problem is solved, then the omitted details
can be taken into consideration to solve the next lower level
abstraction, and so on. Abstraction is a powerful way of
reducing the complexity of the problem.
 2. Decomposition. In this technique, a complex
problem is divided into several smaller problems and
then the smaller problems are solved one by one.
History of software
engineering:
 The notion of ‘software engineering’ was first proposed in
1968 at a conference held to discuss what was then called
the ‘software crisis’ (Naur and Randell, 1969).
 It became clear that individual approaches to program
development did not scale up to large and complex
software systems. These were unreliable, cost more than
expected, and were delivered late.
 Throughout the 1970s and 1980s, a variety of new software
engineering techniques and methods were developed, such
as:
◦ structured programming
◦ information hiding
◦ object-oriented development.
◦ Tools and standard notations were developed and are now
extensively used.
Frequently Asked Questions
about software:
Historical Perspective
(cont.)
 1980s: networking, personal computing,
embedded systems, parallel architectures
 1990s: information superhighway,

distributed systems, OO in widespread use.


 2000s: virtual reality, voice recognition,

video conferencing, global computing


 2010s: autonomous vehicles, new security

awareness, ..
Hardware Costs vs Software
Costs
Why is software so
expensive?
 Hardware has made great advances
 But, software has made great advances ...
 We do the least understood tasks in

software.
◦ When task is simple & understood, encode it in
hardware
◦ Why?
 Demand more and more of software
◦ Consider your cell phone
Size of programs continues to
grow
 Trivial (small): 1 month, 1 programmer, 500
LOC,
◦ Intro programming assignments
 Very small: 4 months, 1 programmer, 2000
LOC
◦ Course project
 Medium: 3 years, 10s of programmers, 100K
LOC
◦ Optimizing compiler
 Large: 5 years, 100s of programmers, 1M LOC
◦ MS Word, Excel
 Very large: 10 years, 1000s of programmers, 10M
LOC
◦ Air traffic control,
◦ Telecommunications, space shuttle
 Very, Very Large: 15+ years, 1000s programmers,
35M LOC
◦ W2K
 Ultra-Large Scale: ? years, ? developers distributed,
1000s of sensors, decision units, heterogeneous
platforms, decentralized control Intelligent
transportation systems; healthcare systems
Whatʼs the problem?
 Software cannot be built fast enough to
keep up with
◦ H/W advances
◦ Rising expectations
◦ Feature explosion
 Increasing need for high reliability software
Whatʼs the problem?
(cont)
 Software is difficult to maintain “aging
software”
 Difficult to estimate software costs and

schedules
 Too many projects fail
 Why ?
Why is software development so
difficult?
 Communication
◦ Between customer and developer
 Poor problem definition is largest cause of
failed software projects
 Within development team
 More people = more communication
 New programmers need training
Why is software development so
difficult? (cont)
 Project characteristics
◦ Novelty
◦ Changing requirements
 5 x cost during development up to 100 x
cost during maintenance
◦ Hardware/software conjuration
◦ Security requirements
◦ Real time requirements
◦ Reliability requirements
Why is software development so
difficult? (cont)
 Personnel characteristics
◦ Ability
◦ Prior experience
◦ Communication skills
◦ Team cooperation
◦ Training
Why is software development so
difficult? (cont)
 Facilities and resources
◦ Identification
◦ Acquisition
Challenges of building
Software System:
 Management issues
◦ Realistic goals
◦ Cost estimation
◦ Scheduling
◦ Resource allocation
◦ Quality assurance
◦ Version control
◦ Contracts
Muhammad Nadeem, muhamma
d.nadeem@pucit.edu.pk
Importance of Building
Software Systems:
 Promote your business
 Improves sales and service

Direct communication
 Increases customers’ engagement
 Helps in marketing your business

Muhammad Nadeem, muhamma


d.nadeem@pucit.edu.pk
Key Points:
 Software is developed or engineering but
not manufactured.
 Understand the problem before you build a

solution.
 Software does not wear-out but it is

deteriorate or decline.
 Advice: if you want to reduce software

deterioration, you will have to do better


software design.
Summary:
 Overview of Software Engineering
 Importance and challenges of building

software systems
 Key points

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy