Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

SE Module1

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 64

Amity School of Engineering &

Technology

Software Engineering
Module-1
1
Introduction to Software Engineering
Software Engineering is an engineering discipline whose focus is the cost-effective
development of high-quality software systems. It is a sub discipline of Computer
Science that attempts to apply engineering principles to the creation, operation,
modification and maintenance of the software components of various systems.

The cost of software engineering includes roughly 60% development costs and 40%
testing costs.

The three terms in Software Engineering are:

Engineering: Engineering is an application of well-understood scientific methods to


the construction, operation, modification and maintenance of useful devices and
systems.
Software: Software is not just the programs but also all associated documentation
and configuration data that is needed to make the programs to operate correctly
System : A system is a grouping of components that interact in a manner among
themselves and possibly, with the world outside the system boundary.
Why Software Engineering
 Change in nature and complexity of software
 We all want improvement
 Ready for change
The Evolving Role of Software
Evolving role of Software

As per the IBM report, “31%of the project get cancelled before they are
completed, 53% overrun their cost estimates by an average of 189% and for
every 100 projects, there are 94 restarts
Factors Contributing to Software Crisis

Larger problems,
 Lack of adequate training in software engineering,
 Increasing skill shortage,
Low productivity improvements.
Some Software failures
What is Software
Characteristics of Software

Software is logical rather than a physical system


element. Hence, software has different characteristics
than that of hardware:
a) Software is not manufactured as in the traditional
sense rather it engineered and developed.
b) Software don’t “wear down”.
c) Although the industry is moving toward component-
based assembly, most software continues to be
custom built
Software Myths (Management Perspectives)
Software Myths(Customer Perspectives)
Software Myths(Developer Perspective)
Key Principles of Software Engineering
1. Modularity: Breaking the software into smaller, reusable components that can be developed
and tested independently.
2. Abstraction: Hiding the implementation details of a component and exposing only the
necessary functionality to other parts of the software.
3. Encapsulation: Wrapping up the data and functions of an object into a single unit, and
protecting the internal state of an object from external modifications.
4. Reusability: Creating components that can be used in multiple projects, which can save time
and resources.
5. Maintenance: Regularly updating and improving the software to fix bugs, add new features,
and address security vulnerabilities.
6. Testing: Verifying that the software meets its requirements and is free of bugs.
7. Design Patterns: Solving recurring problems in software design by providing templates for
solving them.
8. Agile methodologies: Using iterative and incremental development processes that focus on
customer satisfaction, rapid delivery, and flexibility.
9. Continuous Integration & Deployment: Continuously integrating the code changes and
deploying them into the production environment.
Software Applications
System Software

Real Time Software

Business Software

Software applications Engineering and


Scientific Software

Embedded Software

Personal Computer
Software

Web based Software

Artificial Intelligence
Software

Software Crisis
Objectives of Software Engineering
The objectives of software engineering is to develop high quality software, in a timely
manner, within the budget and under the software production constraints. Below are
some basic objectives of software engineering:
 Maintainability
 Correctness
 Reusability
 Testability
 Reliability
 Portability
 Adaptability
Software Development Life Cycle
Software development life cycle
(SDLC) is a structured process that is
used to design, develop, and test good-
quality software. SDLC, or software
development life cycle, is a
methodology that defines the entire
procedure of software development step-
by-step.

The goal of the SDLC life cycle model is


to deliver high-quality, maintainable
software that meets the user’s
requirements.
Stage 1:Planning and Requirement Analysis
Planning is a crucial step in everything, just as in
software development. In this same stage, requirement analysis
is also performed by the developers of the organization. This is
attained from customer inputs, and sales department/market
surveys.
Stage2:Defining Requirement
Once the requirement analysis is done, the next stage is to certainly represent
and document the software requirements and get them accepted from the
project stakeholders.
This is accomplished through "SRS"- Software Requirement Specification
document which contains all the product requirements to be constructed and
developed during the project life cycle.
Stage3: Designing the Software
The next phase is about to bring down all the knowledge of requirements, analysis,
and design of the software project. This phase is the product of the last two, like
inputs from the customer and requirement gathering.

Stage4: Developing the project

In this phase of SDLC, the actual development begins, and the programming is
built. The implementation of design begins concerning writing code.
Developers have to follow the coding guidelines described by their
management and programming tools like compilers, interpreters, debuggers,
etc. are used to develop and implement the code.
Stage 5:Testing
After the code is generated, it is tested against the requirements to make sure
that the products are solving the needs addressed and gathered during the
requirements stage.
During this stage, unit testing, integration testing, system testing, acceptance
testing are done.
Stage6: Deployment
Once the software is certified, and no bugs or errors are stated, then it is
deployed.
Then based on the assessment, the software may be released as it is or with
suggested enhancement in the object segment.
After the software is deployed, then its maintenance begins.
Stage7: Maintenance
Once when the client starts using the developed systems, then the real issues
come up and requirements to be solved from time to time.
This procedure where the care is taken for the developed product is known as
maintenance.
SDLC MODELS
 A software life cycle model is a descriptive representation of the software development cycle.
SDLC models might have a different approach but the basic phases and activity remain the
same for all the models.

 The different life cycle models used in software development are:


 Waterfall Model
 Spiral Model
 Incremental Model
 V-Model
 Prototyping Model
 RAD Model
Waterfall Model
 Waterfall model is the very first model that is used in SDLC. It is also known as the linear
sequential model.
 In this model, the outcome of one phase is the input for the next phase. Development of the
next phase starts only when the previous phase is complete.
 In this model, the outcome of one phase is the input for the next phase. Development of the
next phase starts only when the previous phase is complete.
Waterfall Model
 First, Requirement gathering and analysis is done.
Once the requirement is freeze then only the System
Design can start. Herein, the SRS document created is
the output for the Requirement phase and it acts as
an input for the System Design.
 In System Design Software architecture and Design,
documents which act as an input for the next phase
are created i.e. Implementation and coding.
 In the Implementation phase, coding is done and the
software developed is the input for the next phase i.e.
testing.
 In the testing phase, the developed code is tested
thoroughly to detect the defects in the software.
Defects are logged into the defect tracking tool and
are retested once fixed. Bug logging, Retest,
Regression testing goes on until the time the software
is in go-live state.
 In the Deployment phase, the developed code is
moved into production after the sign off is given by
Advantages
Disadvantages
 This model is very simple and
easy to use.  The scope is adjusted during the
 Easy to manage because each life cycle which can adversely
phase has specific deliverables impact the project.
and review process.  The risk in this model is very high.
 This model is not suitable for
 Suitable for small projects long-term projects.
where requirements are known  The software is developed at the
clearly. later stage of the life cycle
 The phases are processed and
completed one at a time
Spiral Model

Each cycle in the spiral is


divided into four parts:
1. Objective setting
2. Risk Assessment and
Reduction
3. Development and
Validation
4. Planning
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. Risk Analysis includes identifying, estimating and monitoring
the technical feasibility and management risks, such as schedule slippage and cost overrun.
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.
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 development phase depends on the remaining risks. For example, if performance or user-
interface risks are treated more essential than the program development risks, the next phase
may be an evolutionary development that includes developing a more detailed prototype for
solving the risks.
Spiral Model

Advantages
 Risk analysis is too high in this life cycle
model.
 Used for large and critical projects.
 Software is developed in the early stage
of the life cycle.

Disadvantages

 This model is costly to use.


 Success of the project depends on
the risk analysis phase.
 Not suitable for small projects.
Incremental Model
 The incremental model has same
phases that are in waterfall model. But
itis iterative in nature. The incremental
model has various phases like analysis,
design, coding and testing.

 The incremental model delivers series


of releases to the customer. These
releases are called increments. More
and more functionality is associated
with each increment.

 The first increment is called core


product. In this release the basic
requirements are implemented and
then in subsequent increments new
requirements are added.
Incremental Model
Advantages
 The incremental model can be Disadvantages
adopted when there are less
number of people involved in the  More of management and
project. technical level planning is required.
 With each increment technical risks  It becomes invalid when clients do
can be managed. not accept phased deliverables.
 At least core product can be
delivered to the customer within a
short time span
 Early feedback is generated because
implementation occurs rapidly fora
small subset of the complete
product
V-Model
The V-model is an SDLC model where execution of processes happens in a
sequential manner in a V-shape. It is also known as Verification and
Validation model.
Verification: It involves a static analysis method (review) done without executing
code. It is the process of evaluation of the product development process to find whether
specified requirements meet.

Validation: It involves dynamic analysis method (functional, non-functional), testing is


done by executing code. Validation is the process to classify the software after the
completion of the development process to determine whether the software meets the
customer expectations and requirements.
Verification Phases
1. Business requirement analysis: This is the first step where product requirements understood
from the customer's side. This phase contains detailed communication to understand
customer's expectations and exact requirements.
2. System Design: In this stage system engineers analyze and interpret the business of the
proposed system by studying the user requirements document.
3. Architecture Design: The baseline in selecting the architecture is that it should understand
all which typically consists of the list of modules, brief functionality of each module, their
interface relationships, dependencies, database tables, architecture diagrams, technology
detail, etc. The integration testing model is carried out in a particular phase.
4. Module Design: In the module design phase, the system breaks down into small modules.
The detailed design of the modules is specified, which is known as Low-Level Design
5. Coding Phase: After designing, the coding phase is started. Based on the requirements, a
suitable programming language is decided. There are some guidelines and standards for
coding. Before checking in the repository, the final build is optimized for better performance,
and the code goes through many code reviews to check the performance.
Validation phases
1. Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed during the
module design phase. These UTPs are executed to eliminate errors at code level or
unit level. A unit is the smallest entity which can independently exist, e.g., a
program module. Unit testing verifies that the smallest entity can function
correctly when isolated from the rest of the codes/ units.
2. Integration Testing: Integration Test Plans are developed during the Architectural
Design Phase. These tests verify that groups created and tested independently can
coexist and communicate among themselves.
3. System Testing: System Tests Plans are developed during System Design Phase.
Unlike Unit and Integration Test Plans, System Tests Plans are composed by the
client?s business team. System Test ensures that expectations from an application
developer are met.
4. Acceptance Testing: Acceptance testing is related to the business requirement
analysis part. It includes testing the software product in user atmosphere.
Acceptance tests reveal the compatibility problems with the different systems,
which is available within the user atmosphere. It conjointly discovers the non-
functional problems like load and performance defects within the real user
atmosphere.
Advantages and Disadvantages of V-Model
Advantages
1. Easy to Understand.
2. Testing Methods like planning, test designing happens well before coding.
3. This saves a lot of time. Hence a higher chance of success over the waterfall model.
4. Avoids the downward flow of the defects.
5. Works well for small plans where requirements are easily understood.

Disadvantages
1. Very rigid and least flexible.
6. Not a good for a complex project.
7. Software is developed during the implementation stage, so no early prototypes of the
software are produced.
8. If any changes happen in the midway, then the test documents along with the required
documents, has to be updated.
Agile Model
 The meaning of Agile is swift or versatile.
 "Agile process model" refers to a software development approach based on iterative
development. Agile methods break tasks into smaller iterations, or parts do not directly involve
long term planning.
 The project scope and requirements are laid down at the beginning of the development process.
Plans regarding the number of iterations, the duration and the scope of each iteration are clearly
defined in advance.
 Each iteration is considered as a short time "frame" in the Agile process model, which typically
lasts from one to four weeks. The division of the entire project into smaller parts helps to
minimize the project risk and to reduce the overall project delivery time requirements.
Phases of Agile Model
1. Requirements gathering: In this phase, you must define the requirements. You should explain
business opportunities and plan the time and effort needed to build the project. Based on this
information, you can evaluate technical and economic feasibility.
2. Design the requirements: When you have identified the project, work with stakeholders to
define requirements. You can use the user flow diagram or the high-level UML diagram to show
the work of new features and show how it will apply to your existing system.
3. Construction/ iteration: When the team defines the requirements, the work begins. Designers
and developers start working on their project, which aims to deploy a working product. The
product will undergo various stages of improvement, so it includes simple, minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's performance and
looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team receives
feedback about the product and works through the feedback.
Prototype Model
The prototype model requires
that before carrying out the
development of actual software,
a working prototype of the
system should be built. A
prototype is a toy
implementation of the system. A
prototype usually turns out to be
a very crude version of the
actual system, possible
exhibiting limited functional
capabilities, low reliability, and
inefficient performance as
compared to actual software.
RAD Model
RAD Model or Rapid Application Development model is a software development process based
on prototyping without any specific planning. In RAD model, there is less attention paid to the
planning and more priority is given to the development tasks. It targets at developing software
in a short span of time.
• Business Modeling – In this phase, business functions and product scope
are decided during various meetings between the requirements planning
team and the client team.

• Data Modeling – In the data modeling phase, all the information derived
in the business modeling phase is analyzed and separated into different
data elements important for the business.

• Process Modeling – In this phase, all the data objects gathered in the
process modeling phase are transformed into required useful
information.

• Application Generation – In this stage, the actual prototype is developed


using different automated CASE tools.

• Testing and Turnover – In this stage, all the modules and interfaces of the
prototype are tested
Evolutionary Process Model
What are standards

• A standard might simply be defined as 'a set


of rules for ensuring quality'.
• A standard is an agreed way of doing
something. It could be about making a
product, managing a process, delivering a
service or supplying materials – standards
can cover a huge range of activities
undertaken by organizations and used by
their customers.
Benefits of standards to software Quality
• Decreased number of defects and errors in software
• Less rework as a result of less software defects
• Reduced development and maintenance cost
• Increased software reliability
• Increased customer satisfaction
• Happier software practitioners
ISO 9000
ISO 9000 is one of the popular standards. It is a written set of standard which describe and define
the basic elements/clauses of the quality system needed to ensure that an organization’s
products/or services meet or exceed customer needs and expectations
ISO 9000 deals with the fundamentals of quality management systems

 ISO 9000 is based on documentation and is based on the following:


- Document what you do;
- Do what your document;
- Prove it and improve it
Who Uses ISO-9000 Standards
Other IOS standards
ISO 9001 is the broadest standard and provides a model for
design, development, production, installation and servicing

ISO 9002 is limited to production, installation and servicing

ISO 9003 is further limited to inspection and testing


ISO 9000-3 is further limited for software quality
A company should first use ISO 9000 to design and to
implement a quality system. Once the quality has been
installed, the company may use the quality assurance
models of ISO 9001, ISO 9002, or ISO 9003 to demonstrate
the adequacy of the quality system.
ISO 9000-3
ISO 9000-3, the guidelines offered by ISO, represent implementation
of the ISO 9000 standards to the special case of software
development and maintenance.

ISO 9000-3 is a standard for quality software systems.

It is very short (approximately 30 pages) and very high level


(abstraction).

It explains what to do and not how to do !!

It can not be implemented until ISO 9000 is succesfully implemented


CMM Model
• The Capability Maturity Model (CMM) is a procedure used to develop and refine an
organization's software development process.
• The model defines a five-level evolutionary stage of increasingly organized and
consistently more mature processes.
• CMM was developed and is promoted by the Software Engineering Institute (SEI), a
research and development center promote by the U.S. Department of Defense
(DOD).
• Capability Maturity Model is used as a benchmark to measure the maturity of an
organization's software process.
Level 1:Initial
• No KPIs defined.
• Processes followed are Adhoc and immature and are not well defined.
• Unstable environment for software development.
• No basis for predicting product quality, time for completion, etc.
• Limited project management capabilities, such as no systematic tracking of schedules,
budgets, or progress.
• We have limited communication and coordination among team members and stakeholders.
• No formal training or orientation for new team members.
• Little or no use of software development tools or automation.
• Highly dependent on individual skills and knowledge rather than standardized processes.
• High risk of project failure or delays due to a lack of process control and stability.
Level2-Repeatable
• Focuses on establishing basic project management policies.
• Experience with earlier projects is used for managing new similar-natured
projects.
• Project Planning- It includes defining resources required, goals, constraints, etc.
for the project. It presents a detailed plan to be followed systematically for the
successful completion of good-quality software.
• Configuration Management- The focus is on maintaining the performance of the
software product, including all its components, for the entire lifecycle.
• Requirements Management- It includes the management of customer reviews
and feedback which result in some changes in the requirement set. It also consists
of accommodation of those modified requirements.
• Subcontract Management- It focuses on the effective management of qualified
software contractors i.e. it manages the parts of the software developed by third
parties.
• Software Quality Assurance- It guarantees a good quality software product by
following certain rules and quality standard guidelines while developing.
Level 3:Defined
At this level, documentation of the standard guidelines and procedures takes
place.
It is a well-defined integrated set of project-specific
software engineering and management processes.
Peer Reviews: In this method, defects are removed by using a number of
review methods like walkthroughs, inspections, buddy checks, etc.
Intergroup Coordination: It consists of planned interactions between different
development teams to ensure efficient and proper fulfillment of customer
needs.
Organization Process Definition: Its key focus is on the development and
maintenance of standard development processes.
Organization Process Focus: It includes activities and practices that should be
followed to improve the process capabilities of an organization.
Training Programs: It focuses on the enhancement of knowledge and skills of
the team members including the developers and ensuring an increase in work
efficiency.
Level 4:Managed
• At this stage, quantitative quality goals are set for the organization for
software products as well as software processes.
• The measurements made help the organization to predict the product
and process quality within some limits defined quantitatively.
• Software Quality Management: It includes the establishment of plans
and strategies to develop quantitative analysis and understanding of the
product’s quality.
• Quantitative Management: It focuses on controlling the project
performance in a quantitative manner.
Level 5:Optimizing
• This is the highest level of process maturity in CMM and focuses on
continuous process improvement in the organization using quantitative
feedback.
• The use of new tools, techniques, and evaluation of software processes is
done to prevent the recurrence of known defects.
• Process Change Management: Its focus is on the continuous
improvement of the organization’s software processes to improve
productivity, quality, and cycle time for the software product.
• Technology Change Management: It consists of the identification and use
of new technologies to improve product quality and decrease product
development time.
• Defect Prevention It focuses on the identification of causes of defects and
prevents them from recurring in future projects by improving project-
defined processes.
MCQ on SDLC models
Which is the following is the most important feature of the spiral model?
a. Efficiency management
b. Time Management
c. Quality management
d. Risk management

2. Which is the following is the most important feature of the spiral model?
e. Coding
b. Design
c. Preliminary Investigation and Analysis
d. Testing
3. Which is the following is the not a life cycle model?
a. Spiral
b. Protyping
c. Waterfall
d. CMM

4. Which is the following are the phases of SDLC?


e. Implementation
f. Feasability
g. Coding
h. All of the above

5. Waterfall model is not suitable for


(a) small projects
(b) accommodating change
(c) complex projects
(d) none of the above
Amity School of Engineering &
Technology

Thank you

64

You might also like