This document provides a 3 paragraph summary of a software engineering course titled "Software Engineering (KCS-601)" taught by Dr. Radhey Shyam at SRMCEM Lucknow. The course contents were compiled by Dr. Shyam and are available for students' academic use. Students can contact Dr. Shyam via email for any queries regarding the course material.
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
SE UNIT-1 Revised.pdf
1. Software Engineering (KCS-601)
Unit-1: Introduction To Software Engineering
Dr. Radhey Shyam
Professor
Department of Computer Science and Engineering
SRMCEM Lucknow
(Affiliated to Dr. A.P.J. Abdul Kalam Technical University, Lucknow)
Unit-1 have been compiled/prepared by Dr. Radhey Shyam, with grateful acknowledgment who made their
course contents freely available or (Contributed directly or indirectly). Feel free to use this study material
for your own academic purposes. For any query, the communication can be made through my mail
shyam0058@gmail.com.
March 14, 2022
2.
3.
4.
5.
6. chaYniliglies
a a unduitanking sl
Lwtatto
a Chavnblihi
ieemt *
buile
examine
a t malke u
(analysi
desig, Constnmalio testi)olkmA
eA thines -hat umam
Hi built, the Runan
Cretiua peë
tocnlt t a phyical om.
S a logical h a t tha a s
Aas
Candtirinlie Hat ase Conidrablr d4E*
a tiote o
1 s deneleped r emeineeres m s
manuaiuned wa lasic!
Cne.
. s doesn t wa o
3. A m he mdutm
Meuing ownd ombenat
base asembY mat Ha
Ceati me be eusa bulk
Tm
Swae o
(T) mstoneions
ClompiTan prriame) ~hatute
eea4 poonida deirrd unelEB
and pemmanes,(a) data stnains
haF emabla the pooiram t,
chang
A u a l
Cu
a l , andA documen5tat
Resesbea oprt amd ute
o Tams. Tim
7. Software Crisis:
It is a term used in computer science for the difficulty of writing useful and efficient
computer programs in the required time. Software crisis was due to using same workforce,
same methods, same tools even though rapidly increasing in software demand, complexity
of software and software challenges. With increase in the complexity of software, many
software problems arise because existing methods were insufficient.
If we will use same workforce, same methods and same tools after fast increasing in
software demand, software complexity and software challenges, then there arise some
problems like software budget problem, software efficiency problem, software quality
problem, software managing and delivering problem etc. This condition is called software
crisis.
Causes of Software Crisis:
•The cost of owning and maintaining software was as expensive as developing the
software
•At that time Projects was running over-time
•At that time Software was very inefficient
•The quality of software was low quality
•Software often did not meet requirements
•The average software project overshoots its schedule by half
•At that time Software was never delivered
Solution of Software Crisis:
There is no single solution to the crisis.one possible solution of software crisis is Software
Engineering because software engineering is a systematic, disciplined and quantifiable
approach. For preventing software crisis, there are some guidelines:
•Reduction in software over-budget
•The quality of software must be high
•Less time needed for software project
•Experience working team member on software project
•Software must be delivered
8. Similarity and Differences from Conventional Engineering Process:
1.Software Engineering Process :
It is a engineering process which is mainly related to computers and programming and
developing different kinds of applications through the use of information technology.
2. Conventional Engineering Process :
It is a engineering process which is highly based on empirical knowledge and is about
building cars, machines and hardware.
Difference between Software Engineering Process and Conventional Engineering Process :
S.No. Software Engineering Process Conventional Engineering Process
1.
Software Engineering Process is a
process which majorly involves computer
science, information technology and
discrete mathematics.
Conventional Engineering Process is a
process which majorly involves science,
mathematics and empirical knowledge.
2.
It is mainly related with computers,
programming and writing codes for
building applications.
It is about building cars, machines,
hardware, buildings etc.
3.
In Software Engineering Process
construction and development cost is low.
In Conventional Engineering Process
construction and development cost is
high.
4.
It can involve the application of new and
untested elements in software projects.
It usually applies only known and tested
principles to meet product requirements.
5.
In Software Engineering Process, most
development effort goes into building new
designs and features.
In Conventional Engineering Process,
most development efforts are required
to change old designs.
6. It majorly emphasize on quality.
It majorly emphasize on mass
production.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21. References
1. Roger S. Pressman, Software Engineering a Practitioner Approach, 3rd
Edition, TMH, 2005.
2. Rajib Mall, Fundamantal of Software Engineering, 3rd
Edition,PHI Publication, 2007.
3. Deepak Jain, Software Engineering for Practitioners, Ist
Edition, Oxford, 2012.
4. K K Agarwal and Yogesh Singh, Software Engineering, 3rd
Edition,Oxford, 2012.
21
22. Appendix-1:
Software Engineering | Waterfall Model
Classical waterfall model is the basic software development life cycle model. It is
very simple but idealistic. Earlier this model was very popular but nowadays it is not
used. But it is very important because all the other software development life cycle
models are based on the classical waterfall model.
Classical waterfall model divides the life cycle into a set of phases. This model
considers that one phase can be started after completion of the previous phase. That
is the output of one phase will be the input to the next phase. Thus the development
process can be considered as a sequential flow in the waterfall. Here the phases do
not overlap with each other. The different sequential phases of the classical waterfall
model are shown in the below figure:
Let us now learn about each of these phases in brief details:
1 Feasibility Study: The main goal of this phase is to determine whether it
would be financially and technically feasible to develop the software.
23. The feasibility study involves understanding the problem and then determine
the various possible strategies to solve the problem. These different
identified solutions are analyzed based on their benefits and drawbacks,
The best solution is chosen and all the other phases are carried out as per
this solution strategy.
2 Requirements analysis and specification: The aim of the requirement
analysis and specification phase is to understand the exact requirements of
the customer and document them properly. This phase consists of two
different activities.
Requirement gathering and analysis: Firstly all the
requirements regarding the software are gathered from the
customer and then the gathered requirements are analyzed. The
goal of the analysis part is to remove incompleteness (an
incomplete requirement is one in which some parts of the actual
requirements have been omitted) and inconsistencies
(inconsistent requirement is one in which some part of the
requirement contradicts with some other part).
Requirement specification: These analyzed requirements are
documented in a software requirement specification (SRS)
document. SRS document serves as a contract between
development team and customers. Any future dispute between the
customers and the developers can be settled by examining the
SRS document.
3 Design: The aim of the design phase is to transform the requirements
specified in the SRS document into a structure that is suitable for
implementation in some programming language.
4 Coding and Unit testing: In coding phase software design is translated into
source code using any suitable programming language. Thus each designed
module is coded. The aim of the unit testing phase is to check whether each
module is working properly or not.
24. 5 Integration and System testing: Integration of different modules are
undertaken soon after they have been coded and unit tested. Integration of
various modules is carried out incrementally over a number of steps. During
each integration step, previously planned modules are added to the partially
integrated system and the resultant system is tested. Finally, after all the
modules have been successfully integrated and tested, the full working
system is obtained and system testing is carried out on this.
System testing consists three different kinds of testing activities as
described below :
Alpha testing: Alpha testing is the system testing performed by
the development team.
Beta testing: Beta testing is the system testing performed by a
friendly set of customers.
Acceptance testing: After the software has been delivered, the
customer performed the acceptance testing to determine whether
to accept the delivered software or to reject it.
6 Maintainence: Maintenance is the most important phase of a software life
cycle. The effort spent on maintenance is the 60% of the total effort spent to
develop a full software. There are basically three types of maintenance :
Corrective Maintenance: This type of maintenance is carried out
to correct errors that were not discovered during the product
development phase.
Perfective Maintenance: This type of maintenance is carried out
to enhance the functionalities of the system based on the
customer’s request.
Adaptive Maintenance: Adaptive maintenance is usually required
for porting the software to work in a new environment such as
work on a new computer platform or with a new operating system.
25. Advantages of Classical Waterfall Model
Classical waterfall model is an idealistic model for software development. It is very
simple, so it can be considered as the basis for other software development life cycle
models. Below are some of the major advantages of this SDLC model:
This model is very simple and is easy to understand.
Phases in this model are processed one at a time.
Each stage in the model is clearly defined.
This model has very clear and well understood milestones.
Process, actions and results are very well documented.
Reinforces good habits: define-before- design, design-before-code.
This model works well for smaller projects and projects where requirements
are well understood.
Drawbacks of Classical Waterfall Model
Classical waterfall model suffers from various shortcomings, basically we can’t use it
in real projects, but we use other software development life cycle models which are
based on the classical waterfall model. Below are some major drawbacks of this
model:
No feedback path: In classical waterfall model evolution of a software from
one phase to another phase is like a waterfall. It assumes that no error is
ever committed by developers during any phases. Therefore, it does not
incorporate any mechanism for error correction.
Difficult to accommodate change requests: This model assumes that all
the customer requirements can be completely and correctly defined at the
beginning of the project, but actually customers’ requirements keep on
changing with time. It is difficult to accommodate any change requests after
the requirements specification phase is complete.
No overlapping of phases: This model recommends that new phase can
start only after the completion of the previous phase. But in real projects,
this can’t be maintained. To increase the efficiency and reduce the cost,
phases may overlap.
26. Software Engineering | Iterative Waterfall Model
In a practical software development project, the classical waterfall model is hard to use.
So, Iterative waterfall model can be thought of as incorporating the necessary changes
to the classical waterfall model to make it usable in practical software development
projects. It is almost same as the classical waterfall model except some changes are
made to increase the efficiency of the software development.
The iterative waterfall model provides feedback paths from every phase to its
preceding phases, which is the main difference from the classical waterfall
model.
Feedback paths introduced by the iterative waterfall model are shown in the figure
below.
27. When errors are detected at some later phase, these feedback paths allow correcting
errors committed by programmers during some phase. The feedback paths allow the
phase to be reworked in which errors are committed and these changes are reflected in
the later phases. But, there is no feedback path to the stage – feasibility study, because
once a project has been taken, does not give up the project easily.
It is good to detect errors in the same phase in which they are committed. It reduces the
effort and time required to correct the errors.
Phase Containment of Errors:The principle of detecting errors as close to their points
of commitment as possible is known as Phase containment of errors.
Advantages of Iterative Waterfall Model
Feedback Path: In the classical waterfall model, there are no feedback
paths, so there is no mechanism for error correction. But in iterative waterfall
model feedback path from one phase to its preceding phase allows correcting
the errors that are committed and these changes are reflected in the later
phases.
Simple: Iterative waterfall model is very simple to understand and use. That’s
why it is one of the most widely used software development models.
Drawbacks of Iterative Waterfall Model
Difficult to incorporate change requests: The major drawback of the
iterative waterfall model is that all the requirements must be clearly stated
before starting of the development phase. Customer may change
requirements after some time but the iterative waterfall model does not leave
any scope to incorporate change requests that are made after development
phase starts.
Incremental delivery not supported: In the iterative waterfall model, the full
software is completely developed and tested before delivery to the customer.
There is no scope for any intermediate delivery. So, customers have to wait
long for getting the software.
Overlapping of phases not supported: Iterative waterfall model assumes
that one phase can start after completion of the previous phase, But in real
28. projects, phases may overlap to reduce the effort and time needed to
complete the project.
Risk handling not supported: Projects may suffer from various types of
risks. But, Iterative waterfall model has no mechanism for risk handling.
Limited customer interactions: Customer interaction occurs at the start of
the project at the time of requirement gathering and at project completion at
the time of software delivery. These fewer interactions with the customers
may lead to many problems as the finally developed software may differ from
the customers’ actual requirements.
29. Appendix-2:
Spiral Mode
It is one of the most important Software Development Life Cycle models, which provides
support for Risk Handling. In its diagrammatic representation, it looks like a spiral with
many loops. The exact number of loops of the spiral is unknown and can vary from
project to project. Each loop of the spiral is called a Phase of the software
development process. The exact number of phases needed to develop the product
can be varied by the project manager depending upon the project risks. As the project
manager dynamically determines the number of phases, so the project manager has an
important role to develop a product using the spiral model.
The Radius of the spiral at any point represents the expenses(cost) of the project so far,
and the angular dimension represents the progress made so far in the current phase.
The below diagram shows the different phases of the Spiral Model: –
Each phase of the Spiral Model is divided into four quadrants as shown in the above
figure. The functions of these four quadrants are discussed below-
30. 1. Objectives determination and identify alternative solutions:
Requirements are gathered from the customers and the objectives are
identified, elaborated, and analyzed at the start of every phase. Then
alternative solutions possible for the phase are proposed in this quadrant.
2. Identify and resolve Risks: During the second quadrant, all the possible
solutions are evaluated to select the best possible solution. Then the risks
associated with that solution are identified and the risks are resolved using the
best possible strategy. At the end of this quadrant, the Prototype is built for the
best possible solution.
3. Develop next version of the Product:During the third quadrant, the identified
features are developed and verified through testing. At the end of the third
quadrant, the next version of the software is available.
4. Review and plan for the next Phase: In the fourth quadrant, the Customers
evaluate the so far developed version of the software. In the end, planning for
the next phase is started.
Risk Handling in Spiral Model
A risk is any adverse situation that might affect the successful completion of a software
project. The most important feature of the spiral model is handling these unknown risks
after the project has started. Such risk resolutions are easier done by developing a
prototype. The spiral model supports coping up with risks by providing the scope to
build a prototype at every phase of the software development. The prototype model also
supports risk handling, but the risks must be identified completely before the start of the
development work of the project. But in real life project risk may occur after the
development work starts, in that case, we cannot use the Prototyping Model. In each
phase of the Spiral Model, the features of the product dated and analyzed, and the risks
at that point in time are identified and are resolved through prototyping. Thus, this model
is much more flexible compared to other SDLC models.
31. Why Spiral Model is called Meta Model?
The Spiral model is called a Meta-Model because it subsumes all the other SDLC
models. For example, a single loop spiral actually represents the iterative water model.
The spiral model incorporates the stepwise approach of the classical waterfall model.
The spiral model uses the approach of the Prototyping Model by building a prototype
at the start of each phase as a risk-handling technique. Also, the spiral model can be
considered as supporting the evolutionary model – the iterations along the spiral can be
considered as evolutionary levels through which the complete system is built.
Advantages of Spiral Model:
Below are some advantages of the Spiral Model.
1. Risk Handling: The projects with many unknown risks that occur as the
development proceeds, in that case, Spiral Model is the best development
model to follow due to the risk analysis and risk handling at every phase.
2. Good for large projects:It is recommended to use the Spiral Model in large
and complex projects.
3. Flexibility in Requirements: Change requests in the Requirements at later
phase can be incorporated accurately by using this model.
4. Customer Satisfaction: Customer can see the development of the product
at the early phase of the software development and thus, they habituated with
the system by using it before completion of the total product.
Disadvantages of Spiral Model:
Below are some main disadvantages of the spiral model.
1. Complex: The Spiral Model is much more complex than other SDLC models.
2. Expensive:Spiral Model is not suitable for small projects as it is expensive.
32. 3. Too much dependability on Risk Analysis: The successful completion of
the project is very much dependent on Risk Analysis. Without very highly
experienced experts, it is going to be a failure to develop a project using this
model.
4. Difficulty in time management: As the number of phases is unknown at the
start of the project, so time estimation is very difficult.
33. Appendix – 3: Prototype Model
The Prototyping model is also a popular software development life cycle model. The
prototyping model can be considered to be an extension of the Iterative Waterfall model.
This model suggests building a working Prototype of the system, before the development
of the actual software. A prototype is a toy and crude implementation of a system. It has
limited functional capabilities, low reliability, or inefficient performance as compared to the
actual software. A prototype can be built very quickly by using several shortcuts by
developing inefficient, inaccurate or dummy functions.
Necessity of the Prototyping Model –
• It is advantageous to develop the Graphical User Interface (GUI) part of a software
using the Prototyping Model. Through prototype, the user can experiment with a
working user interface and they can suggest any change if needed.
• The prototyping model is especially useful when the exact technical solutions are
unclear to the development team. A prototype can help them to critically examine the
technical issues associated with the product development. The lack of familiarity with a
required development technology is a technical risk. This can be resolved by
developing a prototype to understand the issues and accommodate the changes in the
next iteration.
Phases of Prototyping Model –
The Prototyping Model of software development is graphically shown in the figure below.
The software is developed through two major activities – one is prototype construction and
another is iterative waterfall based software development.
Prototype Development – Prototype development starts with an initial requirements
gathering phase. A quick design is carried out and a prototype is built. The developed
prototype is submitted to the customer for evaluation. Based on the customer feedback,
the requirements are refined and the prototype is suitably modified. This cycle of obtaining
customer feedback and modifying the prototype continues till the customer approves the
prototype.
Iterative Development –Once the customer approves the prototype, the actual software is
developed using the iterative waterfall approach. In spite of the availability of a working
prototype, the SRS document is usually needed to be developed since the SRS Document
34. is invaluable for carrying out tractability analysis, verification and test case design during
later phases.
The code for the prototype is usually thrown away. However, the experience gathered from
developing the prototype helps a great deal in developing the actual software. By
constructing the prototype and submitting it for user evaluation, many customer
requirements get properly defined and technical issues get resolved by experimenting with
the prototype. This minimises later change requests from the customer and the associated
redesign costs.
Advantages of Prototyping Model –This model is most appropriate for the projects that
suffer from technical and requirements risks. A constructed prototype helps to overcome
these risks.
Disadvantages of Prototyping Model –
35. • Cost of the development of the software by using prototyping model can increase in
various cases where the risks are very less.
• It may take more time to develop a software by using Prototyping model.
• The Prototyping model is effective only for those projects for which the risks can be
identified before the development starts. Since the prototype is developed at the start
of the project, so the Prototyping model is ineffective for risks that identified after the
development phase starts.
-------------------------------------------------
Q. Differentiate between iterative Enhancement Model and Evolutionary
Development model.
Ans. Iterative Enhancement Model: This model has the similar phases as the waterfall
model, but with fewer restrictions. In general the phases occur in the same order as in the
waterfall model but these may be conducted in several cycles. A utilizable product is
released at the end of the each cycle with each release providing additional functionality.
Evolutionary Development Model: Evolutionary development model bear a resemblance
to iterative enhancement model. The similar phases as defined for the waterfall model
occur here in a cyclical fashion. This model is different from iterative enhancement model
in the sense that this doesn't require a useable product at the end of each cycle. In
evolutionary development requirements are implemented by category rather than by
priority.
36. Appendix - 4: Difference Between Evolutionary Prototyping and Throw-
Away Prototyping
The prototype converts industrial ideas to concrete realities. A highly trained professional
team will adopt your entrepreneur idea specifications and sketch your ideas using the
latest CAD technology. Next, with the help of computer simulation, these CAD drawings
are transformed into a prototype which is an exact copy of the final product.
Prototyping helps you get an accurate and complete working model of innovation, adjust
the weight of several different options, adjust them, and ultimately create the perfect
design.
Evolutionary Prototyping
In evolutionary prototyping, the concept of the system will be developed as the project
progresses. First of all, we will develop the most visual aspect of the system. You present
a portion of the system to the customer and continue to develop prototypes based on the
feedback received. At some point, you and the customer agree that the prototype is “good
enough” and release the prototype as the final product. It is may be best suited for
business systems where developers can interact frequently and informally with end users.
However, it is suitable for commercial, shrink wrap, and system projects as long as end-
user involvement is obtained. Communication with users of these projects is generally
more structured and formal. If evolved prototyping does not provide more control than is
necessary or if you already know what the system should do, you can use evolutionary
delivery or gradual delivery instead.
37. Advantages of Evolutionary Prototyping
It’s useful for exploratory programming, such as Artificial Intelligence applications, where it
is difficult to frame specifications.
If big problems are anticipated, developers can stop development after several iterations.
This model is very suitable for research projects. For example, in order to develop
software for automatic speech recognition, it is possible to take a small vocabulary and
develop a system. After successful, you can gradually increase your vocabulary. This
approach is superior to starting the development of an unlimited vocabulary speech
recognition system directly.
Disadvantages of Evolutionary Development Model
As the project is open-ended, no time frame is able to be set.
It is difficult to monitor the project.
The visibility is low compared to the waterfall model.
Throw–Away Prototyping
The throw-away prototype is cheap, fast ones, which is designed to model an idea or
feature. They are commonly used in early phases of design when a large number of ideas
are still being considered. Throw-away prototypes may also be used in late stage design in
industries in which products are launched at a low state of refinement.
The throw-away prototype sounds like what it is. You make a prototype, then when you are
done with it, you abandon it. For example, you and your colleagues go to lunch, you come
up with an idea of the new product. When you discuss the idea, write down the idea and
pull out the original design of the paper napkin. When you return to the office, take out the
prototype of the paper napkin and transfer it to your computer. You throw out the napkin. In
that case, the napkin is considered a thrown away prototype.
The throw-away approach is most appropriate in the project acquisition stage, where
prototypes demonstrate the feasibility of new concepts and convince potential sponsors to
fund the proposed development projects. In this situation, available resources are limited
and the ability to convey the benefits of a new approach with a very low-cost
demonstration is essential to create a new project.
38. You can also skip or omit the throwaway code document. If this trial is not recorded,
lessons learned from prototyping efforts may be lost, and without the documentation or
deterioration of the initial design simplification, progress in prototypes is hampered and
customer needs Regarding the scope of prototype effort. The throw-away approach can be
a drawback for insufficient level of technology and is best suited for rough system
mockups used very early in the project.
Advantages of Throw Away Prototyping
Save time and money
Promote consistency of user interface design
Enable early customer engagement
Show concrete ways to show and believe in management to management. Instead of
telling the administrator
Marketers and planners guarantee that customer needs are met.
Disadvantages of Rapid Prototyping
User confusion for prototypes and completed systems
Excessive development time of the prototype
Normally it does not generate reusable code
The development process slows down when placed under formal configuration control
There is no clear stop point