SE - Unit 1
SE - Unit 1
UNIT1
• 4. Acceptability--Software must be
acceptable to the type of users for which it
is designed. This means that it must be
understandable, usable and compatible
with other systems that they use.
s/w process
• The systematic approach used is SE is called s/w
process
• A s/w process is a sequence of activities that
leads to the production of a s/w product
• 4 fundamental activities common to all s/w
processes—
• 1) s/w specification– requirements and
constraints
• 2)s/w development – designing and programming
• 3)s/w validation –checking to ensure what
customer requires
• 4) s/w evolution– modification due to change and
market requirements
s/w development life cycle (SDLC)
• SDLC is used to facilitate the development of a large s/w
project in a well defined, systematic and cost-effective way
• SDLC is a multistep iterative process
• SDLC is a generic process framework for software
engineering
• encompasses folowing activities:
• The phases (steps) in SDLC are
• 1. s/w specification
• 2. s/w designing
• 3. s/w coding
• 4. s/w testing
• 5. s/w deployment
• 6. s/w maintenance
• 1. s/w specification
• Communication with customer and stakeholders
(people involved directly or indirectly)
• The intent is to understand stakeholders’ objectives for
the project and to gather requirements that help
define software features and functions.
• Basically knowing all ‘what’ related questions
• Studying the feasibility
• 2. s/w designing
• Planning of a solution of a problem specified in 1st
phase
• Designing is a structure of the s/w to be implemented
• Different types of design documents
• Basically moving from problem domain to solution
domain
• From “what” to “how”…..the problem is solved
• 3. s/w coding –
• Implementation of design
• Writing programs which are easy to read and
understand
• Sometimes design and coding is called as
development
• 4. s/w testing—
• Is intended to show system meets customers
expectations and specification
• Testing Uncovers errors from requirements,
design and coding phases
• In other terms it is validation
• Different types of testing (component, system,
acceptance)
• 5. s/w deployment
• The software is delivered to the customer who
evaluates the delivered product and provides
feedback based on the evaluation
• Installation of the s/w
• 6. s/w maintenance
• s/w evolution
• This is due to changes in requirement,
changes is policy, rules, to remove errors
• Sometimes maintenance cost is higher that
development cost
Software Requirements
• The requirements for a system are the descriptions of what the
system should do—
• The services that it provides and the constraints on its operation
• Requirements convey the expectations of users from the software
product.
• The requirements can be obvious or hidden, known or unknown,
expected or unexpected from client’s point of view.
• It is foundation for entire project
• They must be clear, correct, complete and well defined
• The requirements can be from two view points (different levels)—
• 1. User requirements
• 2. System requirements
• User acceptance majorly depends upon how user can use the
software.
• UI is the only way for users to perceive the system.
• A well performing software system must also be equipped with
attractive, clear, consistent and responsive user interface.
• Otherwise the functionalities of software system can not be used in
convenient way.
• A system is said be good if it provides means to use it efficiently.
• User interface requirements are briefly mentioned
below –
• Content presentation
• Easy Navigation
• Simple interface
• Responsive
• Consistent UI elements
• Feedback mechanism
• Default settings
• Purposeful layout
• Strategical use of colour and texture.
• Provide help information
• User centric approach
• Group based view settings.
Documentation of the s/w
requirements
• The software requirements document is the official statement of
what is required of the system developers.
• Should include both a definition of user requirements and a
specification of the system requirements.
• It is NOT a design document. As far as possible, it should set of
WHAT the system should do rather than HOW it should do it.
• It is also termed as Software Requirements Specification (SRS)
document
• Throwaway prototype---
– A dummy s/w
– Many iterations of prototype
– After each prototype– feedback from customer
– Prototyping is done till Unknown requirements are now known
– Then discard prototype
– Build s/w from scratch
Throwaway prototype
• Evolutionary ----
• Building actual functional prototypes with
minimal functionality in the beginning.
• The prototype developed forms the heart of
the future prototypes on top of which the
entire system is built.
• By using evolutionary prototyping, the well-
understood requirements are included in the
prototype and the requirements are added as
and when they are understood.
• Advantages–
– no frozen requirements like waterfall model
– No big bang approach
– Customers feedback
– Reduces time and cost as defects detected earlier
• problems–
– while developing prototype may be wrong choice of
os, algorithm, programming language used
– Later developer is comfortable with these choices and
may forget reasons why these choices are not
appropriate
– The effort invested in building prototypes may be too
much if it is not monitored properly
The Incremental model
• Suitable for projects where basic requirements are
known, wants to meet early deadline and staff is not
sufficient, for this situatin waterfall model not suitable
• Rather than deliver the system as a single delivery, the
development and delivery is broken down into
increments with each increment delivering part of the
required functionality.
• User requirements are prioritised and the highest
priority requirements are included in early increments.
• The incremental model delivers a series of releases,
called increments, that provide progressively more
functionality for the customer as each increment is
delivered
• word-processing software developed using the
incremental paradigm might deliver basic file
management, editing, and document production
functions in the first increment
• More sophisticated editing and document
production capabilities in the second increment
• Spelling and grammar checking in the third
increment
• Advanced page layout capability in the fourth
increment.
• In incremental model, the first increment is often
a core product
• The incremental model focuses on the delivery of
an operational product with each increment
• Suitable for large projects
• Advantages—
– Results are obtained early and periodically.
– Parallel development can be planned
– Testing and debugging during smaller iteration is
easy
– Customer evaluation and feedback possible after
every increment
– Lower risk of overall project failure
• Problems—
– Not suitable for changing requirements
– More management skills, attention is required
– Not suitable for smaller projects
– Defining increments may require definition of the
complete system.
The Spiral model
• Developed by Boehm
• Is an evolutionary software process model that couples the iterative
nature of prototyping with the controlled and systematic aspects of
the waterfall model
• software is developed in a series of evolutionary releases
• During later iterations more sophisticated version of s/w is
developed
• Model handles risk analysis (risk driven process framework)
• The software process is represented as a spiral, rather than a
sequence of activities with some backtracking from one activity to
another.
• 3. Process Modeling-- The data object that is declared in the data modeling phase
is transformed to achieve the information flow necessary to implement a business
function
• Process descriptions for adding, deleting, retrieving or modifying a data object are
given
• 4. Application generation-- Automated tools are used for the construction of the
software, to convert process and data models into prototypes
• 5. Testing and turnover-- testing time is reduced in the RAD model as the
prototypes are independently tested during every iteration
• The data flow and the interfaces between all the components need to be
thoroughly tested with complete test coverage
• RAD focuses on iterative and incremental delivery of
working models to the customer.
• This results in rapid delivery to the customer and
customer involvement during the complete
development cycle of product reducing the risk of non-
conformance with the actual user requirements
• RAD should be used only when a system can be
modularized to be delivered in an incremental manner
• RAD should be used if there is a high availability of
designers for modelling
• RAD should be used only if the budget permits use of
automated code generating tools.
• RAD should be used where the requirements change
during the project and working prototypes are to be
presented to customer in small iterations of 2-3
months
The Timeboxing model
• In this model iterative development is done in a set of fixed
duration time boxes.
• That is, in each iteration, functionality developed is what can be
“fit” into the time box.
• Each time box is divided into stages of approximately equal duration
• The work of each stage is done by a dedicated team.
• In general, let us consider a time box with duration T and consisting
of n stages – S1, S2, …, Sn.
• The team of each stage has T/n time available to finish their task for
a time box, that is, the duration of each stage is T/n
• Multiple iterations are executed concurrently by employing
pipelining – as the first stage of the first time box completes, the
team for that stage starts its activities for the next time box, while
the team for the next stage carries on with the execution of the first
time box
• Plan-driven development
– A plan-driven approach to software engineering is based around separate
development stages with the outputs to be produced at each of these stages
planned in advance.
– Iteration occurs within activities.
– The outputs from one stage are used as a basis for planning the following
process activity
• Agile development
– Specification, design, implementation and testing are inter-leaved and the
outputs from the development process are decided through a process of
negotiation during the software development process
– Iteration occurs across activities
– So the requirements and the design are developed together, rather than
separately.
• Plan driven and Agile specification
Extreme programming (XP)
• The best-known and most widely used agile
method.
• Extreme Programming (XP) takes an ‘extreme’
approach to iterative development.
– New versions may be built several times per day;
– Increments are delivered to customers every 2
weeks;
– All tests must be run for every build and the build
is only accepted if tests run successfully
XP principles
• Incremental development is supported through
small, frequent system releases.
• Customer involvement means full-time customer
engagement with the team.
• People not process through pair programming,
collective ownership and a process that avoids
long working hours.
• Change supported through regular system
releases.
• Maintaining simplicity through constant
refactoring of code
Requirements scenario
• In XP, a customer or user is part of the XP team
and is responsible for making decisions on
requirements.
• User requirements are expressed as scenarios or
user stories.
• These are written on cards and the development
team break them down into implementation
tasks. These tasks are the basis of schedule and
cost estimates.
• The customer chooses the stories for inclusion in
the next release based on their priorities and the
schedule estimates
The XP release cycle
XP practices
• 1. Incremental planning
• Requirements are recorded on story cards and the
stories to be included in a release are determined by
the time available and their relative priority. The
developers break these stories into development
‘Tasks’.
• 2. Small releases
• The minimal useful set of functionality that provides
business value is developed first. Releases of the
system are frequent and incrementally add
functionality to the first release.
• 3. Simple design
• Enough design is carried out to meet the current
requirements and no more.
• 4. Test-first development
• An automated unit test framework is used to write
tests for a new piece of functionality before that
functionality itself is implemented.
• 5. Refactoring
• All developers are expected to refactor the code
continuously as soon as possible code improvements
are found. This keeps the code simple and
maintainable.
• 6. Pair programming
• Developers work in pairs, checking each other’s work
and providing the support to always do a good job.
• 7. Collective ownership
• The pairs of developers work on all areas of the system,
so that no islands of expertise develop and all the
developers take responsibility for all of the code.
Anyone can change anything.
• 8. Continuous integration
• As soon as the work on a task is complete, it is
integrated into the whole system. After any such
integration, all the unit tests in the system must pass.
• 9. Sustainable pace
• Large amounts of overtime are not considered
acceptable as the net effect is often to reduce code
quality and medium term productivity
• 10. On-site customer
• A representative of the end-user of the system (the
customer) should be available full time for the use of
the XP team. In an extreme programming process, the
customer is a member of the development team and is
responsible for bringing system requirements to the
team for implementation.
Scrum
• The Scrum approach is a general agile method
but its focus is on managing iterative
development rather than specific agile practices.
• There are three phases in Scrum.
– The initial phase is an outline planning phase where
you establish the general objectives for the project
and design the software architecture.
– This is followed by a series of sprint cycles, where
each cycle develops an increment of the system.
– The project closure phase wraps up the project,
completes required documentation such as system
help frames and user manuals and assesses the
lessons learned from the project
The Scrum process
The sprint cycle
• Sprints are fixed length, normally 2–4 weeks. They correspond to the
development of a release of the system in XP.
• The starting point for planning is the product backlog, which is the list of
work to be done on the project.
• The selection phase involves all of the project team who work with the
customer to select the features and functionality to be developed during
the sprint.
• Once these are agreed, the team organize themselves to develop the
software. During this stage the team is isolated from the customer and the
organization, with all communications channelled through the so-called
‘Scrum master’.
• The role of the Scrum master is to protect the development team from
external distractions.
• At the end of the sprint, the work done is reviewed and presented to
stakeholders. The next sprint cycle then begins.
Teamwork in Scrum
• The ‘Scrum master’ is a facilitator who arranges
daily meetings, tracks the backlog of work to be
done, records decisions, measures progress
against the backlog and communicates with
customers and management outside of the team.
• The whole team attends short daily meetings
where all team members share information,
describe their progress since the last meeting,
problems that have arisen and what is planned
for the following day.
– This means that everyone on the team knows what is
going on and, if problems arise, can re-plan short-
term work to cope with them.
Scrum benefits
• The product is broken down into a set of
manageable and understandable chunks.
• Unstable requirements do not hold up progress.
• The whole team have visibility of everything and
consequently team communication is improved.
• Customers see on-time delivery of increments
and gain feedback on how the product works.
• Trust between customers and developers is
established and a positive culture is created in
which everyone expects the project to succeed