First Module PDF
First Module PDF
By
Dr Shivakumar C
Introduction
What are the fundamental software engineering Software specification, software development,
activities? software validation, and software evolution.
What is the difference between software Computer science focuses on theory and
engineering and computer science? fundamentals; software engineering is concerned
with the practicalities of developing and delivering
useful software.
What is the difference between software System engineering is concerned with all aspects of
engineering and system engineering? computer-based systems development including
hardware, software, and process engineering. Software
engineering is part of this more general process.
FAQs about software engineering
What are the key challenges facing software Coping with increasing diversity, demands for reduced
engineering? delivery times, and developing trustworthy software.
What are the costs of software engineering? Roughly 60% of software costs are development
costs; 40% are testing costs. For custom software,
evolution costs often exceed development costs.
What are the best software engineering techniques While all software projects have to be professionally
and methods? managed and developed, different techniques are
appropriate for different types of system.
For example,
- games should always be developed using a series of
prototypes
-whereas safety critical control systems
require a complete and analyzable specification to be
developed. You can’t, therefore, say that one method
FAQs about software engineering
What differences has the Web made to software The Web has led to the availability of software
engineering? services and the possibility of developing highly
distributed service-based systems. Web-based
systems development has led to important advances
in programming languages and software reuse.
Kinds of Software Products
• Generic products
• Customized (or bespoke) products
Definition of software engineering
• Software engineering is an engineering discipline that is concerned with all aspects of software
production from the early stages of system specification through to maintaining the system after it
has gone into use.
Essential attributes of good software
Difference between software engineering and computer
science
Difference between software engineering and system
engineering
Software Process
• A software process is a set of related activities • Different software processes
that leads to the production of a software
product. These activities may involve the
• Software specification
development of software from scratch in a • Software design and implementation
standard programming language like Java or
C. • Software validation
• Software evolution
software process models
• Waterfall model
• Incremental Process Models
• Evolutionary Process Models
• Spiral development
• Prototyping
Waterfall model
Waterfall model
• In the olden days, Waterfall model was used to develop enterprise
applications like :
• Customer Relationship Management (CRM) systems,
• Human Resource Management Systems (HRMS),
• Supply Chain Management Systems,
• Inventory Management Systems,
• Point of Sales (POS) systems for Retail chains etc.
Advantages of waterfall model
• This model is simple and easy to understand and use.
• It is easy to manage due to the rigidity of the model – each phase has specific
deliverables and a review process.
• In this model phases are processed and completed one at a time. Phases do
not overlap.
• Waterfall model works well for smaller projects where requirements are
clearly defined and very well understood.
Disadvantages of waterfall model
• Once an application is in the testing stage, it is very difficult to go back and change
something that was not well-thought out in the concept stage.
• No working software is produced until late during the life cycle.
• High amounts of risk and uncertainty.
• Not a good model for complex and object-oriented projects.
• Poor model for long and ongoing projects.
• Not suitable for the projects where requirements are at a moderate to high risk of
changing.
When to use the waterfall model
• This model is used only when the requirements are very well known, clear
and fixed.
• Product definition is stable.
• Technology is understood.
• There are no ambiguous requirements
• Ample resources with required expertise are available freely
• The project is short.
Incremental Process Models
Incremental Process Models
• Incremental Model, also known as the successive version model
• It is a widely adopted model of software development process where the
software requirements are divided or broken down into multiple stand-alone
modules/increments in the SDLC (Software Development Life Cycle).
• Each increment is treated as a sub-project and goes through all phases of the
SDLC incremental model.
When we use the Incremental Model?
• When the requirements are superior.
• A project has a lengthy development schedule.
• When Software team are not very well skilled or trained.
• When the customer demands a quick release of the product.
• You can develop prioritized requirements first.
Advantage of Incremental Model
• Errors are easy to be recognized.
• Easier to test and debug
• More flexible.
• Simple to manage risk because it handled during its iteration.
• The Client gets important functionality early.
Disadvantage of Incremental Model
• Need for good planning
• Total Cost is high.
• Well defined module interfaces are needed.
Evolutionary Process Models
Evolutionary Process Models
• Evolutionary model is a combination of Iterative and Incremental model of
software development life cycle.
• The Evolutionary development model divides the development cycle into
smaller, incremental waterfall models in which users are able to get access to
the product at the end of each cycle.
• Feedback is provided by the users on the product for the planning stage of
the next cycle and the development team responds, often by changing the
product, plan or process.
Evolutionary Process Models
• All the models have the disadvantage that the duration of time from start of the project to
the delivery time of a solution is very high.
• Evolutionary model solves this problem in a different approach.
• Evolutionary model suggests breaking down of work into smaller chunks, prioritizing them
and then delivering those chunks to the customer one by one.
• The number of chunks is huge and is the number of deliveries made to the customer.
• The main advantage is that the customer’s confidence increases as he constantly gets
quantifiable goods or services from the beginning of the project to verify and validate his
requirements.
Application of Evolutionary Model:
• It is used in large projects where you can easily find modules for incremental
implementation.
• Evolutionary model is commonly used when the customer wants to start
using the core features instead of waiting for the full software.
• Evolutionary model is also used in object oriented software development
because the system can be easily portioned into units in terms of objects.
Advantages:
• In evolutionary model, a user gets a chance to experiment partially developed
system.
• It reduces the error because the core modules get tested thoroughly.
Disadvantages
• Sometimes it is hard to divide the problem into several versions that would
be acceptable to the customer which can be incrementally implemented and
delivered.
Spiral development
Spiral development
• The spiral model, initially proposed by Boehm.
• It is an evolutionary software process model that couples the iterative feature
of prototyping with the controlled and systematic aspects of the linear
sequential model.
• It implements the potential for rapid development of new versions of the
software.
Spiral development
• Using the spiral model, the software is developed in a series of incremental
releases.
• During the early iterations, the additional release may be a paper model or
prototype.
• During later iterations, more and more complete versions of the engineered
system are produced.
Spiral development
• Objective setting: Each cycle in the spiral starts with the identification of purpose
for that cycle, the various alternatives that are possible for achieving the targets, and
the constraints that exists.
• Risk Assessment and reduction: The next phase in the cycle is to calculate these
various alternatives based on the goals and constraints. The focus of evaluation in
this stage is located on the risk perception for the project
• Development and validation: The next phase is to develop strategies that resolve
uncertainties and risks. This process may include activities such as benchmarking,
simulation, and prototyping.
Spiral development
• Planning: Finally, the next step is planned. The project is reviewed, and a
choice made whether to continue with a further period of the spiral.
• If it is determined to keep, plans are drawn up for the next step of the
project.
• The risk-driven feature of the spiral model allows it to accommodate any
mixture of a specification-oriented, prototype-oriented, simulation-oriented,
or another type of approach
When to use Spiral Model?
• When deliverance is required to be frequent.
• When the project is large
• When requirements are unclear and complex
• When changes may require at any time
• Large and high budget projects
Advantages
• High amount of risk analysis
• Useful for large and mission-critical projects.
Disadvantages
• Can be a costly model to use.
• Risk analysis needed highly particular expertise
• Doesn't work well for smaller projects.
Prototyping
Prototyping
• This model is used when the customers do not know the exact project
requirements beforehand.
• In this model, a prototype of the end product is first developed, tested, and
refined as per customer feedback repeatedly till a final acceptable prototype is
achieved which forms the basis for developing the final product.
Steps Prototyping Model
• Requirement Gathering and Analysis:
• Quick Design
• Build a Prototype
• Initial User Evaluation
• Refining Prototype
• Implement Product and Maintain
Advantages of Prototyping Model
• The customers get to see the partial product early in the life cycle. This ensures a
greater level of customer satisfaction and comfort.
• New requirements can be easily accommodated as there is scope for refinement.
• Missing functionalities can be easily figured out.
• Flexibility in design.
• Early feedback from customers and stakeholders can help guide the development
process and ensure that the final product meets their needs and expectations.
Disadvantages of the Prototyping Model
• Costly with respect to time as well as money.
• There may be too much variation in requirements each time the prototype is
evaluated by the customer.
• Poor Documentation due to continuously changing customer requirements.
• It is very difficult for developers to accommodate all the changes demanded
by the customer
Component based software engineering
• Components
• Reusability
• Interoperability
• Modularity
• Composition
• Standardization
• Lifecycle Management
• Component Repository
Advantages of CBSE
• Faster Development
• Higher Quality
• Cost-Effectiveness
• Flexibility
Challenges and Considerations:
• Component Selection
• Compatibility
• Maintenance
• Documentation
• Overhead
Examples of CBSE Frameworks
• JavaBeans: A component architecture for Java that allows the creation and reuse of components.
• Microsoft .NET: A framework that enables the development and execution of software
components on multiple platforms.
• CORBA (Common Object Request Broker Architecture): A middleware solution for creating
distributed, interoperable components.
• OSGi (Open Service Gateway Initiative): A modular framework for Java that supports dynamic
component management
The unified process
• The main goal of this phase involves delimiting the project scope. This is where
we define why we are making this product in the first place. It should have the
following:
• What are the key features?
• How does this benefit the customers?
• Which methodology will we follow?
• What are the risks involved in executing the project?
• Schedule and cost estimates.
Elaboration
• We build the system given the requirements, cost, and time constraints and
all the risks involved. It should include the following:
• Develop with the majority of the functional requirements implemented.
• Finalize the methodology to be used.
• Deal with the significant risks involved.
Construction
• This phase is where the development, integration, and testing take place.
• We build the complete architecture in this phase and hand the final
documentation to the client.
Transition
• This phase involves the deployment, multiple iterations, beta releases, and
improvements of the software.
• The users will test the software, which may raise potential issues. The
development team will then fix those errors.
Attributes of good software