Professional Documents
Culture Documents
Introduction To Software Engineering and Software Process
Introduction To Software Engineering and Software Process
College of Engineering
Computer Engineering Dept.
Software Engineering
2022-2023
Lecture 1
Introduction to Software Engineering and Software
Process
Asst. Prof. Dr. Mayada Faris Ghanim
Books
1. Software Engineering with Java by Stephen R. Schach.
2. Software Engineering by Roger S. Pressman.
2
Hardware Costs vs. Software Costs
3
Failure curve for hardware
4
Failure for hardware
1. High failure rates early in its life (these failures are
often attributable to design or manufacturing faults).
2. Faults are corrected and the failure rate drops to a
steady-state level (ideally, quite low) for some period
of time.
3. As time passes, however, the failure rate rises again as
hardware components suffer from the cumulative
effects of dust, vibration, temperature extremes, and
many other environmental maladies. Stated simply,
the hardware begins to wear out.
5
Idealized and actual failure curves
for software
6
Failure manner for Software
1. In theory, therefore, the failure rate curve for
software should take the form of the
“idealized curve” shown in Figure.
2. Undiscovered defects will cause high failure
rates early in the life of a program.
3. However, these are corrected (ideally,
without introducing other errors) and the
curve flattens as shown.
7
Failure manner for Software
4. During its life, software will undergo change
(maintenance). As changes are made, it is likely that
some new defects will be introduced, causing the
failure rate curve to spike as shown in Figure.
5. Before the curve can return to the original steady-
state failure rate, another change is requested,
causing the curve to spike again.
6. Slowly, the minimum failure rate level begins to rise
the software is deteriorating due to change.
8
Size of programs continues to grow
• Trivial:
1 month, 1 programmer, 500LOC
– Intro programming assignments
• Very small:
4 months, 1 programmer, 2000LOC
– Course project
9
• Small:
2 years, 3 programmers,
50K LOC
– Nuclear power plant
– Pacemaker
•Medium:
3 years, 10s of programmers,
100K LOC
– Optimizing compiler
10
• 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
11
• Very, Very Large:
12
• Ultra-Large Scale:
– Healthcare systems
13
Software Engineering is a collection of techniques,
methodologies and tools that help with the
production of
• a high quality software system
• with a given budget
• before a given deadline while change occurs.
14
Software Engineering
• System software is collection of programs
written to serve other programs (e.g.
compilers , editors and file management ).
15
Why apply software engineering to Systems?
• Provide an understandable process for system
development.
• To improve maintainability
17
Why is software engineering
needed?
• To lower software costs
19
Software Process
• Purpose of process is to deliver software in a
timely manner and with sufficient quality to
satisfy those who have sponsored its creation
and those who will use it.
20
Software Engineering Phases
• Definition: What?
• Development: How?
21
Definition
• Requirements definition and analysis
– Developer must understand:
Application domain
Required functionality
Required performance
User interface
22
Definition
• Project planning
– Allocate resources
– Estimate costs
– Define work tasks
– Define schedule
• System analysis
– Allocate system resources to
Hardware
Software
Users
23
Development
• Software design
– User interface design
– High-level design
Define modular components
Define major data structures
– Detailed design
Define algorithms and procedural detail
24
Development
• Coding
– Develop code for
each module
– Unit testing
• Integration
– Combine modules
– System testing
25
Maintenance
27
Software Engineering Phases
• In general software process has the following phases:
1. Requirement Phase
2. Specification Phase Definition+ Maintenance+
3. Planning Phase Umbrella Activities
4. Design Phase
5. Implementation Phase
6. Integration Phase Development+ Maintenance+
Umbrella Activities
7. Maintenance Phase
8. Retirement Phase
28
Requirement Phase
The first meeting between the customer and the
developer will determine the customer's outline of the
project as he sees it or, as he wants it. From the
developer point of view may be the description of the
project is not clear, is not convincing (contradictory).
Here the customer must specify what exactly he wants
and determines the obligations in the project.
29
Requirement Phase Testing
Testing is to determine whether the product is
exactly matches the customer's needs or not, it is
possible to change the prototype until the customer
convinced that the product includes all the required
activities.
30
Software Quality Assurance Group
The group who is primarily
responsible for ensuring that the
delivered product is what the client
ordered, and the product has been
correctly built in each phase.
31
Specification Phase
In this phase, specifications documents are written
which are a reflection of the requirements documents,
specifications documents include the function of the
product and what it plans to do, and a list of obligations
and limitations between the customer and the
developer. These documents
include the list of entries to
the product and list of outputs.
32
Specification Phase
For this reason, the specifications
document should not contain
vague terms that may seem
obvious, but in practice they are
vague and the team of
specifications needs precise
terms. This is one of the
difficulties that occur during this
phase when the specifications
are incomplete or contradictory.
33
Specification Phase Testing
35
Planning Phase
In general, the customer does not give a general authorization
to complete the project only after making sure that time and
total cost are suitable to complete the project:
1. If the developers give the cost is equal to or less than the
estimation cost then the customer will approve the
implementation of the project and will pay what it wages
without problems.
2. If the developers are giving a higher cost than the cost of
estimation then the customer will stop the implementation
of the project or giving it to other developers team.
36
Planning Phase
3. If the developers complete the project on time,
problems will not happen in delivery.
4. In case of exceeding the specified time to complete the
project the customer will lose confidence and will take
the penalty from the developers’ company according
to the contract between the customer and the
company of developers.
37
Planning Phase
The time and the accurate cost are not the only
obligations for a software development company to
complete the project, there are several other tasks, such
as locating staff in addition to the distribution of the work
to the development teams of product phases … etc.
38
Software Project Management
Plan SPMP
The developers must have plan that manages the work. For
example:
• Coding team can not start working if the specification
documents are not completed and confirmed by SQA team.
• Design team can not work if specifications team did not
complete their tasks.
SPMP should represent a reflection of software phases.
HW
Write SPMP for simple project and discuss the steps sequence
39
Planning Phase Testing
In this testing, SQA group examines the software
project management plan (SPMP) and pay
attention to two things: time and cost so it is
important to determine the cost and the time at
the beginning of the planning phase and then
modify any change may occur.
40
Design Phase
While specification phase includes what the project will work, design
phase main task is to determine how the project will work.
• The design team will determine the internal structure of the product,
based on specifications document and the algorithm and data
structures will be chosen. Input and output will be selected in
specifications phase that presents external product concepts.
• During this phase the flow of internal data will be determined and
the team will work on the product segmentation into independent
modules of software codes.
• Object is a collection of software modules linked together, the work
of each module is determined and also how it will be designed by
the designer.
41
Design Phase
The designers must take into consideration the
future developments of the project where the
design must be of the open end in order to
facilitate changing the product and modifying it
later in several ways to keep pace with future
developments without the need to
comprehensive design, which may be
complicated or impossible to achieve.
42
Design Phase
44
Implementation Phase
In this phase, the documents of design phase
are converted to software codes with the
addition of documents that help in future
maintenance process. After that the software
codes and the expected results of these codes
and outputs of the operations carried out by the
software codes (modules) will be checked .
45
Implementation Test
Implementation Test includes checking and
testing software codes by the programmer in
addition to the test of these codes by software
quality assurance group (SQA) and this
represents a successful and effective process for
detecting software errors.
46
Integration Phase
• In this phase, the software modules are
combined and the developer will determine if
the product is working properly or not.
• The combination is done through two ways:
either all modules are combined in one time
or combined according to the interconnection
diagram schedule.
47
Integration Phase Testing
Now, the team has to make sure that the
combination of the modules has been done
properly so that the product is compatible with
the required specifications.
At the completion of product integration test,
SQA group checks the overall product, its
functions and its matching with specifications
document.
48
Maintenance Phase
This phase begins after the product is delivered
and operated by the customer, in the moment
of a malfunction in the product after it runs a
certain duration in the work environment, it is
necessary to repair it by the developers as well
as to make any change or amendment to the
product or add new functions required by the
customer.
49
Maintenance Phase Testing
There are two types of product changes testing in working
or operating phase:
1. Do the required changes have been changed properly?
2. Test to ensure that the changes on the product did not
affect the other modules or there is no changes
occurred as a result to the first change, which could
affect the product negatively.
The second type of test is called Regression Test, meaning
that it is necessary to repeat all the previous tests on the
product in addition to the operation of the product.
50
Retirement Phase
Good software is maintained but sometimes software is rewritten
from scratch. Software is now un-maintainable because
A drastic change in design has occurred
The product must be implemented on a totally new
hardware/operating system
Documentation is missing or inaccurate
Hardware is to be changed—it may be cheaper to rewrite
the software from scratch than to modify it
True retirement is a rare event
51
Next Lecture
52