You are on page 1of 52

University of Mosul

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.

3. An Introduction to Object-Oriented Programming with


JavaTM by C.Thomas Wu

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:

15+ years, 1000s programmers, 35M LOC


– Windows 10

12
• Ultra-Large Scale:

? years, ? developers distributed,

‣ 1000s of sensors, decision units,

‣ heterogeneous platforms, decentralized control


–Intelligent transportation systems

– 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 ).

• Application software consists of standalone


program that solve a specific business need
such as Microsoft Excel.

15
Why apply software engineering to Systems?
• Provide an understandable process for system
development.

• Develop systems and software that are maintainable


and easily changed.

• Develop robust software and system.

• Allow the process of creating computing based


systems to be repeatable and manageable.
16
Why is software engineering
needed?
• To predict time, effort, and cost

• To improve software quality

• To improve maintainability

• To meet increasing demands

17
Why is software engineering
needed?
• To lower software costs

• To successfully build large, complex software


systems

• To facilitate group effort in developing


software
18
Software Process
• Software process is a
collection of activities,
actions and tasks that
are performed when
software system is to be
created.

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?

• Maintenance: Managing change

• Umbrella Activities: Throughout lifecycle

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

• Correction: Fix software defects


• Adaptation: Accommodate changes
– New hardware
– New company policies
• Enhancement: Add functionality
• Prevention: make more maintainable
26
Umbrella Activities
• Reviews: assure quality
• Documentation: improve maintainability
• Version control: track changes
• Configuration management: integrity of
collection of components

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

• The main source of errors in the product which was


delivered to the customer is the errors that appear in
the specifications documents that are not detected
until the product is in operating phase.
• At the end of specifications phase, software quality
assurance team tests the phase to make sure that there
are no contradictions or vague things and all
specifications are clear and obvious. Now each
statement in specifications document back to a
statement in the requirements documents.
34
Traceability

• Traceability: It must be possible to trace each


statement in the specification document back
to a statement made by the client during
requirement phase.

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

At the end of this phase we get two designs:

The first: is an architectural design, which


describes the product as software modules.

The second: is a detailed design for each


software module, what it includes and
description of all its relating matters.
43
Design Phase Testing

Checking the parts of the design with


specifications document, each part of the design
must match a sentence in specification
document. Good reviews here are important
and represent an effective tools for SQA team to
ensure the quality of the product.

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

Software Life Cycle Models

52

You might also like