SE - Introduction - SDLC
SE - Introduction - SDLC
SE - Introduction - SDLC
CS1502
• int counter =
MAX_INT;counter++;
• System software
• Application software
• Engineering/scientific software
• Embedded software
• Product line software
• Web applications
• Artificial intelligence software
Software Application Domains
• System Software:
• System software is a collection of programs written to service other
programs.
• It is characterized by heavy interaction with computer hardware; heavy
usage by multiple users; concurrent operation that requires scheduling,
resource sharing, and sophisticated process management; complex data
structures; and multiple external interfaces.
• Ex. Compilers, operating system, drivers etc.
• Business Software :
• Application software consists of standalone programs that solve a specific
business need.
• Application software is used to control the business function in real-time.
• Engineering /Scientific software:
• Characterized by "number crunching" algorithms.
• Applications range from astronomy to volcano logy, from automotive stress
analysis to space shuttle orbital dynamics, and from molecular biology to
automated manufacturing.
• Ex. Computer Aided Design (CAD), system stimulation etc.
Software Application Domains
• Embedded Software:
• It resides in read-only memory and is used to control products and systems
• Embedded software can perform limited and esoteric functions.
• Ex. keypad control for a microwave oven.
• Personal Computer software:
• Designed to provide a specific capability for use by many different customers, product line software can
focus on a limited and esoteric marketplace.
• Ex. Word processing, spreadsheet, CG, multimedia, etc.
• Web Applications:
• Web apps can be little more than a set of linked hypertext files.
• It evolving into sophisticated computing environments that not only provide standalone features, functions
but also integrated with corporate database and business applications.
• Artificial Intelligence software
• AI software makes use of non-numerical algorithms to solve complex problems that are not amenable to
computation or straightforward analysis
• Ex. Robotics, expert system, game playing, pattern Recognition, ANN etc.
Software Applications – New
• Open world computing—pervasive, distributed computing
• Ubiquitous computing—wireless networks
• Netsourcing—the Web as a computing engine
• Open source—”free” source code open to the computing
community (a blessing, but also a potential curse!)
• And also …
• Data mining
• Grid computing
• Cognitive machines
• Software for nanotechnologies
Hardware vs. Software
Hardware Software
• Reusability of components.
• Software is flexible.
Software Myths
• Software is easy to change.
• Software provide greater reliability than the devices they
replace.
• Testing software can remove all the errors.
• Reusing the software increases the safety.
• Software can work right the first time.
• Software can be designed thoroughly enough to avoid most
integration problems.
• Software with more features is better software.
• Addition of more software engineers will make up the delay.
• Aim to develop working programs.
What are the attributes of good software?
• Particular characteristic of engineers is that they take seriously their responsibility for
correctness, suitability, and safety of the results of their efforts.
• In this regard they consider themselves to be responsible to their customer (including
their employers where relevant), to the users of their machines and systems, and to the
public at large.”
Engineering
Software Engineering
• Software engineering : the systematic use of many
disciplines, tools, and resources for the practical
application.
• This is a broad definition which includes everything except
hardware.
• According to Fritz Bauer :Software engineering is the
establishment and use of sound engineering principles in
order to obtain economically software that is reliable and
works efficiently on real machines.
Why process :
• A process defines who is doing what, when and how to reach a certain goal.
• To build complete software process.
• Identified a small number of framework activities that are applicable to all
software projects, regardless of their size or complexity.
• It encompasses a set of umbrella activities that are applicable across the entire
software process.
Software Process
A software process – as a framework for the tasks that are required to build
high-quality software.
Process Framework
V
E V
R A Verification: Are we building the product right?
I L
F Verification is Static Testing.
I
I D
Validation: Are we building the right product?
C A Validation is the Dynamic Testing.
A T
T I
I O
O N
N
Advantages of Waterfall model
C- Communication
P - Planning
M – Modeling
C - Construction
D - Deployment
• User requirements are prioritised and the highest priority requirements are included in
early increments.
• Once the development of an increment is started, the requirements are frozen though
requirements for later increments can continue to evolve.
• Customer value can be delivered with each increment so system functionality is available
earlier.
• Early increments act as a prototype to help elicit requirements for later increments.
• Lower risk of overall project failure.
• The highest priority system services tend to receive the most testing.
Advantages
• Rigid nature of sequential approach.
• This method is great help when organization is low on staffing.
• Generate working software quickly and early during the
software life cycle.
• More flexible – less costly to change scope and requirements.
• Easier to test and debug during a small iteration.
• Easier to manage risk because risky pierces are identified and
handled during its iteration.
• Each increment is an easily managed milestone.
Disadvantages
• Incremental
• Develop some portions at a time
• Gradually build up functionality
• Allows value to be delivered early
Evolutionary Models:
Prototyping
Quick
plan
communication
Modeling
Quick design
Deployment
delivery & Constructio
feedback Construction
n
ofofprototype
prototype
Prototyping Model
• Best approach when:
• Objectives defines by customer are general but does not have details like input,
processing, or output requirement.
• Developer may be unsure of the efficiency of an algorithm, O.S., or the form that
human machine interaction should take.
• It can be used as standalone process model.
• Model assist software engineer and customer to better understand what is to be built
when requirement are fuzzy.
• Prototyping start with communication, between a customer and software engineer to
define overall objective, identify requirements and make a boundary.
• Going ahead, planned quickly and modeling (software layout visible to the
customers/end-user) occurs.
• Quick design leads to prototype construction.
• Prototype is deployed and evaluated by the customer/user.
• Feedback from customer/end user will refine requirement and that is how iteration
occurs during prototype to satisfy the needs of the customer.
Prototyping (cont..)
• Prototype can be serve as “the first system”.
• Both customers and developers like the prototyping paradigm.
• Customer/End user gets a feel for the actual system
• Developer get to build something immediately.
Problem Areas:
• Developer often makes implementation in order to get a prototype working
quickly without considering other factors in mind like OS, Programming
language, etc.
• Customer cries foul and demand that “a few fixes” be applied to make the
prototype a working product, due to that software quality suffers as a
result.
Customer and developer both must be agree that the prototype is built to
serve as a mechanism for defining requirement.
Evolutionary Models: The
Spiral
Spiral Model
• Couples iterative nature of prototyping with the controlled and systematic
aspects of the linear sequential model
• It provide potential for rapid development of increasingly more complete version
of the software.
• Using spiral, software developed in as series of evolutionary release.
• Early iteration, release might be on paper or prototype.
• Later iteration, more complete version of software.
• Divided into framework activities (C,P,M,C,D). Each activity represent one
segment.
• Evolutionary process begins in a clockwise direction, beginning at the center risk.
• First circuit around the spiral might result in development of a product
specification. Subsequently, develop a prototype and then progressively more
sophisticated version of software.
• Unlike other process models that end when software is delivered.
• It can be adapted to apply throughout the life of software.
Spiral Model
• Advantages:
• It is realistic approach for development for large scale system
• High amount of risk analysis
• Good for large and mission-critical projects
• Software is produced early in the software life cycle
Spiral Model
Disadvantages
• It is not widely used.
• Can be a costly to use
• Risk analysis requires highly specific expertise.
• Project’s success is highly dependent on the risk
analysis phase.
• Doesn’t work well for smaller projects.
• It demands considerable risk assessment expertise and
relies on this expertise for success.
• It may be difficult to convince customers that the
evolutionary approach is controllable.
Waterfall vs Spiral Model
Concurrent Development Model
• It represented schematically as series of major technical activities, tasks, and their
associated states.
• It is often more appropriate for system engineering projects where different
engineering teams are involved.
• The activity-modeling may be in any one of the states for a given time.
• All activities exist concurrently but reside in different states.
E.g.
• The analysis activity (existed in the none state while initial customer
communication was completed) now makes a transition into the under
development state.
• Analysis activity moves from the under development state into the awaiting
changes state only if customer indicates changes in requirements.
• Series of event will trigger transition from state to state.
E.g. During initial stage there was inconsistency in design which was uncovered. This
will triggers the analysis action from the Done state into Awaiting Changes state.
Evolutionary Models: Concurrent
Evolutionary Processes
• Use-case driven
• Architecture-centric
• Driving design
Use case
drive influence
System
architecture
III. Iterative and Incremental ??
inception
UP Phases
UP Work Products
Inception Phase
83
Elaboration Phase
• Encompasses both the planning and modeling activities of the generic process
• Refines and expands the preliminary use cases
• Expands the architectural representation to include five views
• Use-case model
• Analysis model
• Design model
• Implementation model
• Deployment model
• Often results in an executable architectural baseline that represents a first cut
executable system
• The baseline demonstrates the viability of the architecture but does not provide
all features and functions required to use the system
84
Construction Phase
85
Transition Phase
• Encompasses the last part of the construction activity and the first part of the
deployment activity of the generic process
• Software is given to end users for beta testing and user feedback reports on
defects and necessary changes
• The software teams create necessary support documentation (user manuals,
trouble-shooting guides, installation procedures)
• At the conclusion of this phase, the software increment becomes a usable
software release
86
Production Phase
• Encompasses the last part of the deployment activity of the generic process
• On-going use of the software is monitored
• Support for the operating environment (infrastructure) is provided
• Defect reports and requests for changes are submitted and evaluated
87
UP strengths
• Strength of RUP:
• Work products are produced in each of the first four phases of the
unified process
• In this course, we will concentrate on the analysis model and the
design model work products
• Analysis model includes
• Scenario-based model, class-based model, and behavioral model
• Design model includes
• Component-level design, interface design, architectural design, and
data/class design
90
☺
Workflows of the UP
• A workflow is a sequence of activities that produces a result of discernible value.
In the UP, there are nine core process workflows. They are:
• Business Modeling Workflow
• Requirements Workflow
• Design Workflow
• Implementation Workflow
• Test Workflow
• Deployment Workflow
• Project Management Workflow
• Configuration and Change management Workflow
• Environment Workflow
Business Modeling Workflow