2. Lecture One
Introduction to Software Engineering
´Software Engineering Concepts
´Scope and Principles
´Software Life cycle
2
3. Software Engineering
´ Software engineering is a discipline whose aim is the production of fault-
free software, delivered on time and within budget, that satisfies the
client’s need.
´ It is process of solving customers’ problems by the systematic
development and evolution of large, high- quality software systems within
cost, time and other constraints.
è The software must be easy to modify when the user’s needs change.
3
4. Software
´ Software consists of not just code in machine-readable form but also all
the documentation that is an intrinsic component of every project.
´ The specification document
´ The design document
´ Legal and accounting documents of all kinds
´ The software project management plan and other management
documents
´ All types of manuals.
4
5. People: Three Parties Involved
´ Client: The client is the individual who wants a product to be built
(developed).
´ Developers: The developers are the members of a team responsible
for building that product.
´ User: The user is the person or persons on whose behalf the client has
commissionedthe product and who will utilize the software.
5
6. Ethics in Software Engineering:
´ Software engineers shall
q Act consistently with public interest
q Act in the best interests of their clients
q Develop and maintain with the highest standards possible
q Maintain integrity and independence
q Promote an ethical approach in management
q Advance the integrity and reputation of the profession
q Be fair and supportive to colleagues
q Participate in lifelong learning
6
7. Software Development Life Cycle (SDLC)
´ The Software Development Life Cycle (SDLC) is a framework
for describing the phases involved in developing and
maintaining information systems. It has two types of process
v Sequential (Classic, Waterfall)
v Evolutionary (Iterative, spiral)
´ Typical SDLC phases include planning, analysis, design,
implementation, and support.
7
8. What is SDLC?
— SDLC is a process followed for a software project, within a software
organization.
— It consists of a detailed plan describing how to develop, maintain, replace
and alter or enhance specific software.
— The life cycle defines a methodology for improving the quality of software
and the overall development process.
— A typical Software Development Life Cycle consists of the following stages
q Planning and Requirement Analysis
q Defining Requirements
q Designing the Product Architecture
q Building or Developing the Product
q Testing the Product
q Deployment in the Market and Maintenance
8
10. SDLC Models
— There are various software development life cycle models defined and
designed which are followedduring the software development process.
— Each process model follows a Series of steps unique to its type to ensure
success in the process of software development.
— Following are the most important and popular SDLC models followedin
the industry
qWaterfall Model
qIterative Model
qSpiral Model
qV-Model
10
11. SDLC - Waterfall Model
´ The Waterfall Model was the first Process Model to be introduced. It is also
referred to as a linear-sequentiallife cycle model.
´ It is very simple to understand and use.
´ In a waterfall model, each phase must be completed before the next
phase can begin and there is no overlapping in the phases.
´ The Waterfall model is the earliest SDLC approach that was used for
software development.
´ The waterfall Model illustrates the software development process in a linear
sequential flow. This means that any phase in the development process
begins only if the previous phase is complete. In this waterfall model, the
phases do not overlap.
11
12. Waterfall Model - Design
— In "The Waterfall" approach, the whole process of software development is
divided into separate phases.
— In this Waterfall model, typically, the outcome of one phase acts as the
input for the next phase sequentially.
— The sequential phases in Waterfall model are -
q Requirement Gathering and analysis
q System Design
q Implementation
q Integration and Testing
q Deployment of system
q Maintenance
— All these phases are cascaded to each other in which progress is seen as
flowing steadily downwards (waterfall) through the phases.
12
14. Waterfall Model - Advantages
Some of the basic advantages in waterfall models are:-
q Simple and easy to understand and use
q Easy to manage due to the rigidity of the model. Each
phase has specific deliverables and a review process.
q Phases are processed and completed one at a time.
q Works well for smaller projects where requirements are
very well understood.
q Clearly defined stages.
q Well understood milestones.
q Easy to arrange tasks.
q Process and results are well documented.
14
15. Waterfall Model - Disadvantages
The major disadvantages of the Waterfall Model are as follows:-
q Once an application is in the testing stage, it’s very difficult to go
back and change something that was not well-thought out in the
concept stage.
q High amounts of risk and uncertainty.
q Not a good model for complex and object-oriented projects.
q Poor model for long and ongoing projects.
q Not suitable for the projects where requirements are at a moderate to
high risk of changing. So, risk and uncertainty is high with this process
model.
q It is difficult to measure progress within stages.
q Cannot accommodate changing requirements.
q Adjusting scope during the life cycle can end a project.
15
16. SDLC – Iterative / Incremental Model
´ The iterative process starts with a simple implementation of a small set of
the software requirements and iteratively enhances the evolving versions
until the complete system is implemented and ready to be deployed.
´ An iterative life cycle model does not attempt to start with a full
specification of requirements.
´ This process is repeated, producing a new version of the software at the
end of each iteration of the model.
´ The development begins by specifying and implementing just part of the
software, which is then reviewed to identify further requirements.
16
17. Iterative Model - Design
´ Iterative process starts with a simple implementation of a subset of the
software requirements and iteratively enhances the evolving versions until
the full system is implemented.
´ At each iteration, design modifications are made and new functional
capabilities are added.
´ The basic idea behind this method is to develop a system through repeated
cycles (iterative) and in smaller portions at a time (incremental).
´ During software development, more than one iteration of the software
development cycle may be in progress at the same time.
17
19. Iterative Model - Pros and Cons
´ The advantages of the Iterative and Incremental SDLC
Model are as follows:-
q Parallel development can be planned.
q Less costly to change the scope/requirements.
q Easier to manage risk - High risk part is done first
q Risk analysis is better
q Testing and debugging during smaller iteration is easy.
q It supports changing requirements.
q Progress can be measured.
q Some working functionality can be developed quickly
and early in the life cycle.
19
20. continue
— The disadvantages of the Iterative and Incremental SDLC
Model are as follows :-
q More resources may be required.
q More management attention is required.
q Not suitable for smaller projects.
q Highly skilled resources are required for risk
analysis
q Projects progress is highly dependent upon the
risk analysis phase.
q Defining increments may require definition of the
complete system.
q System architecture or design issues may arise
20
21. SDLC - Spiral Model
— The spiral model combines the idea of iterative development with the
systematic, controlled aspects of the waterfall model.
— Spiral model is a combination of iterative development process model and
sequential linear development model
— It allows incremental releases of the product or incremental refinement
through each iteration around the spiral.
— The spiral model has four phases. A software project repeatedly passes
through these phases in iterations called Spirals.
q Identification
q Design
q Construction
q Evaluation
21
23. Spiral Model - Pros and Cons
The advantages of the Spiral SDLC Model are as follows −
q It allows elements of the product to be added in,
when they become available or known.
q Allows extensive use of prototypes.
q Users see the system early
q Requirements can be captured more accurately.
q Changing requirements can be accommodated.
q Development can be divided into smaller parts
q Risky parts can be developed earlier which helps in
better risk management.
23
24. continue
The disadvantages of the Spiral SDLC Model are as follows −
q Management is more complex.
q End of the project may not be known early.
q Process is complex
q Spiral may go on indefinitely.
q Large number of intermediate stages requires
excessive documentation.
q Not suitable for small or low risk projects and could
be expensive for small projects.
24
25. SDLC - V-Model
´ The execution of processes happens in a sequential manner in a V-shape.
´ It is also known as Verification and Validation model.
´ The V-Model is an extension of the waterfall model and is based on the
association of a testing phase for each corresponding development stage.
´ For every single phase in the development cycle, there is a directly
associated testing phase.
´ This is a highly-disciplinedmodel and the next phase starts only after
completion of the previous phase.
25
27. V-Model - Design
´ Under the V-Model, the corresponding testing phase of the development
phase is planned in parallel.
´ there are Verification phases on one side of the ‘V’ and Validation phases
on the other side. The Coding Phase joins the two sides of the V-Model.
´ The verification and validation phases are joined in a coding phase.
´ Some of the verification phase are:- requirement analysis, system design,
architecture and module designs.
´ Some of the validation phases are:- unit testing, integration testing, system
testing and acceptance testing.
´ The coding phase is performed based on the coding guidelines and
standards. The code goes through numerous code reviews
27
28. V-Model - Pros and Cons
— The advantages of the V-Model method are as follows
q highly-disciplinedmodel and Phases are completed one at a
time.
q Works well for smaller projects where requirements are very well
understood.
q Simple and easy to understand and use.
q Easy to manage due to the rigidity of the model.
q Each phase has specific deliverables and a review process.
28
29. continue
— The disadvantages of the V-Model method are as follows −
q Not a good model for complex and object-oriented projects.
q Poor model for long and ongoing projects.
q Once an application is in the testing stage, it is difficult to go
back and change a functionality.
q Not suitable for the projects where requirements are at a
moderate to high risk of changing.
q High risk and uncertainty.
29
30. Lecture One Review Question
Q1. Briefly Explain the difference between software and software engineering?
Q2. List at least four ethics of software engineering?
Q3. Explain the stages of software development life cycle?
Q4. For the following SDLC models, explain the pros and cons:
´Waterfall model
´Iterative models
´Spiral model
´V-model
30