0% found this document useful (0 votes)
3 views69 pages

First Module PDF

Software engineering is a discipline focused on all aspects of software production, including specification, design, validation, and evolution. It encompasses various development models such as Waterfall, Incremental, Evolutionary, Spiral, and Prototyping, each with its own advantages and disadvantages. Key challenges include managing complexity, changing requirements, project management, quality assurance, and risk management.

Uploaded by

sujitagrahari555
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views69 pages

First Module PDF

Software engineering is a discipline focused on all aspects of software production, including specification, design, validation, and evolution. It encompasses various development models such as Waterfall, Incremental, Evolutionary, Spiral, and Prototyping, each with its own advantages and disadvantages. Key challenges include managing complexity, changing requirements, project management, quality assurance, and risk management.

Uploaded by

sujitagrahari555
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 69

Software Engineering

By
Dr Shivakumar C
Introduction

• Software engineering is intended to support professional software development, rather than


individual programming.
• It includes techniques that support program specification, design, and evolution, none of which are
normally relevant for personal software development.
• software is not just the programs themselves but also all associated documentation and
configuration data that is required to make these programs operate correctly.
• The system usually consists of a number of separate programs and configuration files that are used
to set up these programs.
FAQs about software engineering

What is software? Computer programs and associated documentation.


Software products may be developed for a
particular customer or may be developed for a
general market.
What are the attributes of good software? Good software should deliver the required
functionality and performance to the user and
should be maintainable, dependable, and usable.
What is software engineering? Software engineering is an engineering discipline
that is concerned with all aspects of software
production.
FAQs about software engineering

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

• Prototyping is defined as the process of developing a working replication of a


product or system that has to be engineered.
• It offers a small-scale facsimile of the end product and is used for obtaining
customer feedback.
• The Prototyping Model is one of the most popularly used Software
Development Life Cycle Models (SDLC models)
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

• Component-Based Software Engineering (CBSE) is a software development


approach that focuses on building software systems by assembling pre-built,
reusable software components.
• These components are modular, self-contained units that encapsulate specific
functionality and can be combined to create complex software applications.
Key Concepts

• 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 Unified Process (UP) is a software development framework used for


object-oriented modeling.
• The framework is also known as Rational Unified Process (RUP) and the
Open Unified Process (Open UP)
Key features
• It defines the order of phases.
• It is component-based, meaning a software system is built as a set of
software components. There must be well-defined interfaces between the
components for smooth communication.
• It follows an iterative, incremental, architecture-centric, and use-case driven
approach
The Unified Process
Phases

• We can represent a unified process model as a series of cycles.


• Each cycle ends with the release of a new system version for the
customers. We have four phases in every cycle.
• Inception
• Elaboration
• Construction
• Transition
Phases of Unified Process
Inception

• 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

1. Functionality: Good software should meet its intended purpose and


provide the features and capabilities that users require. It should
accurately and efficiently perform the tasks it was designed for.
2. Reliability: Reliable software is consistent in its performance, operates
without unexpected crashes or errors, and produces accurate results
under various conditions.
3. Usability: Usable software is designed with user-friendliness in mind. It
should have an intuitive user interface, clear navigation, and
well-organized features to minimize the learning curve and user errors.
Attributes of good software
3. Efficiency: Efficient software utilizes system resources (such as
memory and processing power) optimally to deliver high performance and
responsiveness. It accomplishes tasks with minimal waste of resources.
4.Maintainability: Maintainable software is designed and structured in a
way that makes it easy to modify, enhance, and fix issues. Clean code,
modular design, and appropriate documentation contribute to
maintainability.
5.Scalability: Scalable software can handle growing workloads and user
demands without significant degradation in performance. It can be
expanded to accommodate increased usage.
Key challenges facing by software engineering

• Software engineering faces a variety of challenges that impact the


development, delivery, and maintenance of software systems.
• These challenges are often complex and can vary depending on factors such
as project size, technology used, organizational culture, and market demands.
• Here are some key challenges facing software engineering:
• 1. Complexity: Software systems are becoming increasingly
complex due to the growing number of features, integration points,
and interactions.
Key challenges facing by software
engineering
2. Changing Requirements: Requirements can change throughout
the development process due to evolving user needs, market
dynamics, or new technologies. Handling changing requirements
effectively without compromising project schedules or quality is a
challenge.
3. Project Management: Balancing scope, schedule, and resources
is a constant challenge. Meeting deadlines, managing resources, and
keeping projects on track while delivering high-quality software is
often a complex task.
Key challenges facing by software
engineering
4. Quality Assurance: Ensuring software quality through testing, code
reviews, and quality assurance processes is challenging. Detecting and
fixing bugs, vulnerabilities, and performance issues require significant
effort.
5. Risk Management: Identifying and mitigating risks, whether technical,
organizational, or external, is crucial. Failure to manage risks effectively
can lead to project delays, cost overruns, or even project failure.
6. Security: Developing secure software and protecting against
vulnerabilities, data breaches, and cyberattacks is an ongoing challenge.
Security considerations need to be integrated into the software
development lifecycle.
Verification

• Verification is a critical phase of the software development lifecycle that


focuses on evaluating whether the software product or component meets its
specified requirements and adheres to the design and standards.
• It involves assessing the software to ensure that it has been built correctly,
without necessarily considering whether it meets the actual user needs or
functions as intended.
• Verification activities aim to confirm that the software has been developed
according to the established guidelines, standards, and specifications.
Verification
• verification process typically unfolds:
• Requirement Analysis
• Design Verification
• Code Inspection and Review
• Static Analysis
• Testing
Validation

• Validation is a crucial phase in the software development lifecycle


that focuses on evaluating whether the developed software product
meets the actual user needs and requirements.
• Unlike verification, which aims to ensure that the software is built
correctly according to specifications, validation aims to ensure that
the right software is being built—one that satisfies the intended
purpose and delivers value to users.
Validation
• Validation process typically unfolds
• User Acceptance Testing (UAT)
• Functional Testing
• Usability Testing
• Performance Testing
• Compatibility Testing
• Regression Testing
Computer Based System

• A Computer-Based System (CBS), also known as a Computer-Based Information


System (CBIS), is a software-intensive system that utilizes computer technology to
gather, process, store, and disseminate information to support various tasks and
activities within an organization or domain.
• These systems play a pivotal role in managing and automating business processes,
decision-making, and data management.
• Computer-Based Systems are a fundamental concept in software engineering and
are designed to improve efficiency, accuracy, and effectiveness in a wide range of
applications.
Business Process Engineering

• Business Process Engineering (BPE), also known as Business Process


Reengineering (BPR),
• It is a management approach that focuses on the fundamental redesign and
optimization of business processes to achieve substantial improvements in
performance, efficiency, and effectiveness.
• BPE involves rethinking and restructuring processes from the ground up to align
with strategic goals, leverage emerging technologies, and adapt to changing market
conditions.
• This concept emerged as a response to the need for organizations to adapt and
transform in rapidly evolving business landscapes.
End of Module 1

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy