Professional Documents
Culture Documents
(I)
Lecture(1)
2
Course Objectives
To learn about all the difficulties in
developing software so that we can avoid
pitfalls and myths in software design
To learn about different software processes
so that we can choose a suitable one
To learn to design high-quality efficient
software so that it is usable and maintainable
To learn about advanced methods for
software engineering
3
Chapter 1
Introduction to Software Engineering
Crisis:أزمة
Evolution:تطور
4
What is Software?
5
What is Software Engineering?
Different focuses for this term exist in various
textbooks. Some are listed below.
“The application of a منهجيsystematic, منضبط
disciplined, quantifiable قابلة للقياسapproach to
development, operation, and maintenance of
software. “
(IEEE Standard Computer Dictionary, 610.12, ISBN 1-
55937-079-3, 1990)
6
What is Software (ctd.)?
◦ Software consists of
(1) instructions (computer programs) that when
executed provided desired function and performance,
(2) data structures that enable the programs to
adequately manipulate information, and
(3) documents that describe the operation and use of
the programs.
7
What is Software Engineering? (ctd)
9
10
Symptom of Software Crisis
About US$250 billions spent per year in
the US on application development
Out of this, about US$140 billions wasted
due to the projects getting abandoned or
reworked; this in turn because of not
following best practices and standards
abandoned :مهمل او مهجور
11
Observed Problems
Software products:
◦ fail to meet user requirements
◦ crash frequently
◦ expensive
◦ difficult to alter, debug, enhance
◦ often delivered late
◦ use resources non-optimally
12
Why is the Statistics so Bad?
Misconception on software development
◦ Not distinguishing the coding of a computer program
from the development of a software product
Software programs have exponential growth in
complexity and difficulty level with respect to size.
Software professionals lack engineering training
◦ Programmers have skills for programming but
without the engineering mindset about a
process discipline
13
How is Software usually Constructed …
The requirements The developers This is how the This is how the
specification was understood it in problem was problem is
defined like this that way solved before. solved now
That is the program This is how the program is This, in fact, is what the
after debugging described by marketing dept. customer wanted … ;-)14
Software Myths األساطير
(Customer Perspectives)
Application requirements can never be stable;
software can be and has to be made flexible enough
to allow changes to be incorporated as they
happen.
متطلبات المستخدم غير مستقرة ويعتقد ان يمكن أن تكون البرامج
مرنة دائما ويجب أن تكون مرنة بما يكفي للسماح بإدراج
.التغييرات فور حدوثها
15
Software Myths
(Developer Perspectives)
Once the software is established, the job is done.
16
Software Myths
(Developer Perspectives)
Until the software is coded and is available for testing,
there is no way for assessing its quality.
هناك الكثير من األخطاء الصغيرة التي يتم إدخالها في كل مرحلة والتي تنمو في الحجم والتعقيد، عادة
!أثناء تقدمها خالل مراحل أخرى
17
Software Myths
(Developer Perspectives)
The only deliverable for a software
development project is the tested code.
The code is only
the externally visible
component
of the entire software
complement!
18
Software Myths
(Management Perspectives)
As long as there are good standards and clear procedures in my
company, I shouldn’t be too concerned.
19
Software Myths
(Management Perspectives)
The environment is
only one of the several factors
that determine the quality
of the end software product!
20
Misplaced Assumptions
افتراضات في غير محلها
All requirements can be pre-specified
Users are experts at specification of their
needs
Users and developers are both good at
visualization
The project team is capable of
unambiguous communication
22
Software Programming ≠ Software
Engineering
Software engineering
◦ Teams of developers with multiple roles
◦ Complex systems
◦ Indefinite lifespan فترة الحياة
◦ System families
◦ Reuse to amortize يستهلكcosts
◦ Maintenance accounts for over 60% of overall
development costs
23
Confused with Programs and
Products
Programs Software Products
Usually small in size Large
Author himself is sole user Large number of
users
Ad hoc development.
Systematic development
Why is it called ad hoc?
is used to describe something that has been formed or used for a special and
immediate purpose, without previous planning 24
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
25