0% found this document useful (0 votes)
72 views47 pages

Se Unit-1

Uploaded by

bdg08372
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)
72 views47 pages

Se Unit-1

Uploaded by

bdg08372
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/ 47

SOFTWARE DEVELOPMENT

METHODOLOGIES
G.PRAVEEN BABU
Associate Professor of CSE
School of Information Technology
JNTUH, Hyderabad

pravbob@jntuh.ac.in
FAQs about software
engineering
 What is software?
 What is software engineering?
 What is the difference between software
engineering and computer science?
 What is the difference between software
engineering and system engineering?
 What is a software process?
 What is a software process model?
FAQs about software
engineering
 What are the costs of software
engineering?
 What are software engineering methods?
 What is CASE (Computer-Aided Software
Engineering)
 What are the attributes of good software?
 What are the key challenges facing
software engineering?
What is Software?
Software is a set of items or objects
that form a “configuration” that
includes
• programs
• documents
• data ...
Software

 Programs
 Documentation during the development of
programs (e.g. specification)
 Primary aids for running the programs
(e.g. user manuals)
 Secondary aids for running the programs
(e.g. key boards overlays)
Software is not just programs!
What is software?
 Computer programs and associated
documentation such as requirements, design
models and user manuals.
 Software products may be developed for a
particular customer or may be developed for a
general market.
 Software products may be
 Generic - developed to be sold to a range of different
customers e.g. PC software such as Excel or Word.
 Bespoke (custom) - developed for a single customer
according to their specification.
 New software can be created by developing new
programs, configuring generic software systems
or reusing existing software.
What is Software?

 software is engineered
 software doesn’t wear out
 software is complex
Wear vs. Deterioration
Software’s Dual Role
 Software is a product
 Delivers computing potential
 Produces, manages, acquires, modifies, displays,
or transmits information
 Software is a vehicle for delivering a product
 Supports or directly provides system functionality
 Controls other programs (e.g., an operating
system)
 Effects communications (e.g., networking
software)
 Helps build other software (e.g., software tools)
Software Applications
 system software
 application software
 engineering/scientific
software
 embedded software
 product-line software
 WebApps (Web
applications)
 AI software
Software—New Categories
 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!)
 Also …
 Data mining
 Grid computing

 Cognitive machines

 Software for nanotechnologies


Scope of Software Engineering
 Historical Aspects:
 1967, a NATO group coined the term
“Software Engineering”
 1968 NATO Software Engineering Conference
concurred that “Software production should
be an engineering-like activity”.
 Using philosophies and paradigms of
established engineering disciplines to solve
“Software Crisis: that the quality of software
was generally unacceptably low and that
deadlines and cost limits were not being met”.
What is software engineering?

 Software engineering is an engineering


discipline that is concerned with all aspects of
software production.

 Software engineers should adopt a systematic


and organised approach to their work and use
appropriate tools and techniques depending on
the problem to be solved, the development
constraints and the resources available.
Software Engineering
 Software Engineering is the establishment and use of
sound engineering principles in order to obtain
economically software that is reusable and works
efficiently on real machines - Fritz Bauer (1969).

 Software Engineering is the application of systematic,


disciplined, quantifiable approach to the development,
operation and maintenance of software. – IEEE
(1993).
Scope of Software Engineering

 Software engineering is a discipline whose


aim is the production of fault-free software,
that is delivered on time, within budget, and
satisfies the user’s needs.
What is the difference between software
engineering and computer science?
 Computer science is concerned with theory
and fundamentals; software engineering is
concerned with the practicalities of
developing and delivering useful software.

 Computer science theories are still


insufficient to act as a complete underpinning
for software engineering (unlike e.g. physics
and electrical engineering).
 Economic Aspects
 Software Engineering v.s. Computer Science
 The computer scientist investigates several ways to
produce software, some good and some bad.
 But the software engineer is interested in only those
techniques that make sound economic sense.

For example: A coding technique that can execute


very efficiently but with higher maintenance cost
may not be a good choice.
Building a house vs. software
 Determining and analyzing  Requirements
requirements analysis and
 Producing and documenting the definition
design
 System design
 Detailed specifications
 Identifying and designing  Program design
components  Writing programs
 Building components  Unit testing
Testing components

 Integration testing
 Integrating components
 System testing
 Making final modifications
 Continuing maintenance  System delivery
 Maintenance
Wasserman’s basis for good
software engineering
 Abstraction
 Analysis and design methods and notations
 User interface prototyping
 Software architecture
 Software process
 Reuse
 Measurement
 Tools and integrated environments
What is the difference between software
engineering and system engineering?
 System engineering is concerned with all
aspects of computer-based systems
development including hardware, software and
process engineering. Software engineering is
part of this process concerned with developing
the software infrastructure, control,
applications and databases in the system.

 System engineers are involved in system


specification, architectural design, integration
and deployment.
What is a software process?
 A set of activities whose goal is the
development or evolution of software.
 Generic activities in all software processes
are:
 Specification - what the system should do and
its development constraints
 Development - production of the software
system
 Validation - checking that the software is what
the customer wants
 Evolution - changing the software in response
to changing demands.
What is a software process
model?
 A simplified representation of a software
process, presented from a specific perspective.
 Examples of process perspectives are
 Workflow perspective - sequence of activities;
 Data-flow perspective - information flow;
 Role/action perspective - who does what.
 Generic process models
 Waterfall;
 Iterative development;
 Component-based software engineering.
What are the costs of software
engineering?
 Roughly 60% of costs are development
costs, 40% are testing costs. For custom
software, evolution costs often exceed
development costs.
 Costs vary depending on the type of
system being developed and the
requirements of system attributes such as
performance and system reliability.
 Distribution of costs depends on the
development model that is used.
Software Myths
 Affect managers, customers (and other non-
technical stakeholders) and practitioners
 Are believable because they often have
elements of truth,
but …
 Invariably lead to bad decisions,
therefore …
 Insist on reality as you navigate your way
through software engineering
Manager myths
 We already have a book that’s full of standards
and procedures for building software. Won’t
that provide my people with everything they
need to know?
 If we get behind schedule, we can add more
programmers and catch up.
 If I decide to outsource the software project to
a third party I can just relax and let that firm
build it.
Customer myths
 A general statement of objectives is sufficient
to begin writing programs we can fill in the
details later.
 Project requirements continually change, but
change can be easily accommodated because
software is flexible.
Practitioner’s myths
 Once we write the program and get it to work,
our job is done.
 Until I get the program running, I have no way
of assessing its quality.
 The only deliverable work product for a
successful project is the working program.
What are the key challenges facing
software engineering?
 Heterogeneity, delivery and trust.
 Heterogeneity
 Developing techniques for building software that can
cope with heterogeneous platforms and execution
environments;
 Delivery
 Developing techniques that lead to faster delivery of
software;
 Trust
 Developing techniques that demonstrate that
software can be trusted by its users.
Process: A Generic View

A process defines who is doing what, when and how to reach a


certain goal – Ivar Jacobson, Grady Booch and James Rambaugh
A Layered Technology
Software Engineering

tools

methods

process model

a “quality” focus
A Layered Technology
 The bedrock that supports software engineering(SE) is a
quality focus.
 The foundation for SE is process layer which holds
technology layers together and enables rational and timely
development of computer software.(involves in
management control,technical methods are applied,
documents, data, reports, forms, milestones are set,
quality is ensured, change management.
 Methods provide technical “how to’s” for building
software. Involves in requirement analysis, design
modeling, program construction, testing and support.
 Tools provide automated or semi-automated support for
the methods and process.Eg:CASE.
A Process Framework
Software Process
Process Framework
Umbrella Activities
Framework activity 1
Software Engineering action 1
work tasks
work products
milestones &
deliverables
QA checkpoints

Framework activity 2
Framework Activities

 Communication
 Planning
 Modeling
 Analysis of
requirements
 Design
 Construction
 Code generation
 Testing
 Deployment
Umbrella Activities
 Software project management
 Formal technical reviews

 Software quality assurance

 Software configuration management

 Work product preparation and production

 Reusability management

 Measurement

 Risk management
The Process Model:
Adaptability

 the framework activities will always be


applied on every project ... BUT
 the tasks (and degree of rigor) for each
activity will vary based on:
 the type of project
 characteristics of the project
 common sense judgment; concurrence of
the project team
The Capability Maturity Model
Integration (CMMI)
 Software Engineering Institute (SEI) has developed
a comprehensive process meta-model.
 The CMMI defines each process area in terms of
“specific goals” and the “specific practices” required
to achieve these goals.
 Specific goals establish the characteristics that must
exist if the activities implied by a process area are to
be effective.
 Specific practices refine a goal into a set of process-
related activities.
CMMI
 Level 0: Incomplete
 The process area(e.g., requirements management)
is either not performed or does not achieve all goals
and objectives defined by the CMMI for level 1
capability.
 Level 1: Performed
 All of the specific goals of the process area (as
defined by the CMMI) have been satisfied. Work tasks
required to produce defined work products are being
conducted.
 Level 2: Managed
 All level 1 criteria have been satisfied. In addition,
all work associated with the process area conforms
to an organizationally defined policy; all people
doing the work have access to adequate resources
to get the job done; stakeholders are actively
involved in the process area as required; all work
tasks and work products are “monitored, controlled
and reviewed; and are evaluated for adherence to
the process description”
 Level 3: Defined
 All level 2 criteria have been achieved. In addition,
the process is “tailored from the organization’s set
of standard processes according to the
organizations’ tailoring guidelines, and contributes
work products, measures, and other process
improvement information to the organizational
process assets.”
 Level 4: Quantitatively managed
All level 3 criteria have been achieved. In
addition, the process area is controlled and
improved using measurement and quantitative
assessment. “Quantitative objectives for
quality and process performance are
established and used as criteria in managing
the process.”
 Lever 5: Optimized
All capability level 4 criteria have been
achieved. In addition, the process area is
adapted and optimized using quantitative
(statistical) means to meet changing customer
needs and to continually improve the efficacy
of the process area under consideration.”
Process Patterns
 Process patterns define a set of activities,
actions, work tasks, work products and/or
related behaviors
 A template is used to define a pattern

 Typical examples:
 Customer communication (a process activity)
 Analysis (an action)

 Requirements gathering (a process task)

 Reviewing a work product (a process task)

 Design model (a work product)


Process Assessment
 The process should be assessed to ensure that it meets a set
of basic process criteria that have been shown to be
essential for a successful software engineering.
 Many different assessment options are available:
 SCAMPI (Standard CMMI Assessment Method for Process
Improvement)
 CBA IPI (CMM Based Appraisal for Internal Process
Improvement)
 SPICE (ISO/IEC 15504)

 ISO 9001:2000 for Software


Assessment and Improvement
Software Process

identifies is examined by identifies capabilities


modifications to and risk of

Software Process
Assessment

leads to leads to Capability


Software Process Determination
Improvement
motivates
Personal Software Process
(PSP)
 Recommends five framework activities:
 Planning
 High-level design
 High-level design review
 Development
 Postmortem
 stresses the need for each software engineer
to identify errors early and as important, to
understand the types of errors
Team Software Process (TSP)
 Each project is “launched” using a
“script” that defines the tasks to be
accomplished
 Teams are self-directed
 Measurement is encouraged
 Measures are analyzed with the
intent of improving the team process
The Primary Goal of Any Software
Process: High Quality
Remember:

High quality = project timeliness

Why?

Less rework!

You might also like