Unit 1
Unit 1
KCA-302
Unit 1
Bloom’s Knowledge Knowledge
Course Outcomes (COs)
Level (BL) Category (KC)
At the end of this course, Student will be able to
Describe Software Engineering Concepts and
CO-1 BL2 F,C,P
SDLC models.
Prepare Software Requirement Specification
CO-2 (SRS) with Modelling tools and Quality BL3 F,C,P
standards.
Analyse design concepts to software
CO-3 development with software metrics methods. BL4 F,C,P
1. System Software
2. Real Time Software
3. Embedded Software
4. Business Software
5. Personal Computer Software
6. Artificial Intelligence Software
7. Web Based Software
8. Engineering and Scientific Software
Software Characteristics
• Software does not wear out – Like
hardware
• Software may be retired due to
environmental changes, new
requirements, new expectations
• Software is not manufactured
• Software is logical rather than
physical.
• Reusability of components.
• Software is flexible.
• Most software is custom built, rather
than being assembled from existing
components.
Software Crisis
• The situation, where catastrophic
failures have occurred, is known
as Software Crisis. The major causes of
software crisis are the problems
associated with poor quality software
such as malfunctioning of software
systems, inefficient development of
software, and the most important,
dissatisfaction amongst the users of the
software.
• So, the term ‘Software Engineering’
first introduced at a conference in late
1960’s to discuss the software crisis.
Factors contributing to software crisis
• Projects running over-budget.
• Projects running over-time.
• Unrealistic or unarticulated project goals
• Software was very inefficient with lack of resources
• Software was of low quality.
• Software often did not meet requirements.
• Projects were unmanageable and code difficult to maintain.
• Software was never delivered.
Software Engineering Definition
IEEE Comprehensive Definition: -- Software Engineering is the
application of a systematic, disciplined, quantifiable approach to the
development, operation and maintenance of software, i.e., the
application of engineering to software.
Software Engineering deals with cost-effective solutions to practical
problems by applying scientific knowledge in building software arti-
facts in the service of mankind
Software Engineering is the application of methods and scientific
knowledge to create practical cost-effective solutions for the design,
construction, operation and maintenance of software
Software Engineering Processes
• Software Process defines a framework for a set of Key Process
Areas (KPAs) that must be established for effective delivery of software
engineering technology. This establishes the context in which technical
methods are applied, work products such as models, documents, data,
reports, forms, etc. are produced, milestones are established, quality is
ensured, and change is properly managed.
Well Organized – Due to less time consumption this Long time process – There is no scope of
model is beneficial as you can focus more on intermediate delivery. Customer will have to wait for
designing and development. a longtime to get their software.
Cost Effective – Changing the plan or requirements Overlapping is not supported – You cannot overlap
in the model is very cost-effective. Furthermore, it is phases like Real time Project. You will have to wait
ideally suited for dynamic businesses. for completion of phase to start another phase.
Prototype Model
What is Software Prototyping?
Evolutionary Prototyping
In this method, a prototype is made, and the client feedback is received. Based on the
feedback, the prototype is refined until the client considers it the final product. It
follows an incremental development approach and saves time compared to the rapid
throwaway prototyping method as in evolutionary prototyping old prototype is
reworked rather than developing a new prototype from scratch. It is also known as
breadboard prototyping.
Incremental Prototyping:
The final product is decimated into small prototypes and developed individually in
incremental prototyping. The various prototypes are eventually combined into a single
product. This method is useful for reducing feedback time between the user and,
consequently, the application development team.
• The Spiral model is called as a Meta Model because it subsumes all the other
SDLC models. For example, a single loop spiral represents the Iterative
Waterfall Model.
• The spiral model incorporates the stepwise approach of the Classical
Waterfall Model.
• The spiral model uses the approach of 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.
Pros Cons When Spiral Model is appropriate?
Changing requirements can Management is more
• When costs there is a budget
be accommodated. complex. constraint and risk evaluation is
Allows for extensive use of End of project may not be important.
prototypes known early. • For medium to high-risk projects.
Not suitable for small or • Long-term project commitment
Requirements can be low risk projects and could because of potential changes to
captured more accurately. be expensive for small economic priorities as the
requirements change with time.
projects.
• Customer is not sure of their
Users see the system early. Process is complex requirements which is usually the
Development can be divided case.
into smaller parts and more • Requirements are complex and
risky parts can be developed Spiral may go indefinitely. need evaluation to get clarity.
earlier which helps better • New product line which should
risk management. be released in phases to get
enough customer feedback.
Large number of
• Significant changes are expected
intermediate stages requires
in the product during the
excessive documentation. development cycle.
Iterative Enhancement Model
The iterative enhancement model in software engineering combines elements of the
linear sequential model with the iterative philosophy of prototyping. In this model, the
software is broken down into several modules which are incrementally developed and
delivered. Firstly, the development team develops the core module of the system. After
that, it is refined into increasing levels of capacity of adding new functionalities in
successive versions.
Iterative Model design
In this incremental model, the whole requirement is divided into various builds. During
each iteration, the development module goes through the requirements, design,
implementation and testing phases. Each subsequent release of the module adds function
to the previous release. The process continues till the complete system is ready as per the
requirement. During software development, more than one iteration of the software
development cycle may be in progress at the same time."
The key to a successful use of an iterative software development lifecycle is rigorous
validation of requirements, and verification & testing of each version of the software
against those requirements within each cycle of the model.
When to use Iterative Enhancement Model?
• Requirements of the complete system are clearly defined and understood.
• Major requirements must be defined; however, some functionalities or requested
enhancements may evolve with time.
• There is a time to the market constraint.
• A new technology is being used and is being learnt by the development team while
working on the project.
• Resources with needed skill sets are not available and are planned to be used on
contract basis for specific iterations.
• There are some high-risk features and goals which may change in the future.
Advantages:
• Some working functionality can be developed quickly and early in the life
cycle.
• Results are obtained early and periodically.
• Parallel development can be planned.
• Progress can be measured.
• Less costly to change the scope/requirements.
Disadvantages:
• Not suitable for smaller projects.
• More management attention is required.
• Defining increments may require definition of the complete system
• End of project may not be known which is a risk.
• More resources may be required.
• System architecture or design issues may arise because not all requirements are
gathered in the beginning of the entire life cycle.
Evolutionary Model
Key Characteristics of the Evolutionary Model
• Not Suitable for Large Projects: RAD works best for smaller to medium-
sized projects where requirements are flexible and well understood.
• Requires Strong Team Collaboration: It relies heavily on constant
communication between developers and stakeholders.
• Requires Highly Skilled Developers: Rapid prototyping demands a team
capable of quick and efficient development.
Case Study 3: Suppose you are a project manager for a software product in a new and
growing market with your competitors who are also developing a product will be the
same product. Which model to select and why?
Case Study 4: We are creating an online hospital management system and it is
needed immediately, what kind of SDLC model should be used in our
documentation?
Case Study 5: Suppose, you are going to develop a system to control an Aircraft.
You have to design a perfect system, but you do not have any previous experience
about this project. Your system will be pioneer in this case, and you have to ensure
quality, but budget is not a fact because error may lead to a life-threatening
situation.