View
220
Download
0
Category
Preview:
Citation preview
8/14/2019 Software Engineerig- Introduction
1/58
8/14/2019 Software Engineerig- Introduction
2/58
2
OutlineNature of software projectsEngineering approaches
Software processA process step
Characteristics of a good process
Waterfall model for development
Other models
Project planning
8/14/2019 Software Engineerig- Introduction
3/58
3
Software SystemsUbiquitous, used in variety ofapplications
Business, engineering, scientificapplications
Simple to complex, internal to public,single function to enterprise-wide, one
location to distributed, batch or real-time, informational to mission-critical,.
8/14/2019 Software Engineerig- Introduction
4/58
4
Challenge in large projectsDeveloping large/complex softwareapplication is very challenging
Effort intensive
High cost
Long development time
Changing needs for users
High risk of failure, user acceptance,performance, maintainability,
Quite different from one-timeprograms where author and user are
same !
8/14/2019 Software Engineerig- Introduction
5/58
5
Successful software systemSoftware development projects havenot always been successful
When do we consider a softwareapplication successful? Development completed
It is useful
It is usable, and It is used
Cost-effectiveness, maintainabilityimplied
8/14/2019 Software Engineerig- Introduction
6/58
6
Reasons for failureSchedule slippage
Cost over-runs
Does not solve users problemPoor quality of software
Poor maintainability
8/14/2019 Software Engineerig- Introduction
7/587
Reasons for failure .Ad hoc software development resultsin such problems
No planning of development work (e.g.no milestones defined)
Deliverables to user not identified
Poor understanding of user
requirements No control or review
Technical incompetence of developers
Poor understanding of cost and effort by
both developer and user
8/14/2019 Software Engineerig- Introduction
8/588
Engineering: other disciplinesLarge projects common andsuccessfully done
Buildings bridges, dams Power plants
Aircrafts, missiles,
engineering a solution:
To design, develop (build, fabricate) anartifact that meets specificationsefficiently, cost-effectively and ensuringquality
Using scientific principles.
8/14/2019 Software Engineerig- Introduction
9/589
Engineering Requires well-defined approach :repeatable, predictable
Large projects requires managing theproject itself
Manage people, money (cost),equipment, schedule
Scale makes big difference: compare
building a hut, 2storeyed house, or 50-storeyed apartment building
Quality extremely important : relatesto failures, efficiency, usability, .
People willing to pay for quality !
8/14/2019 Software Engineerig- Introduction
10/5810
Large Projects
Involve different types of people Large building : architect, civil engineer,
electrical engineer, workers (masons,carpenters), .
Continuous supervision for qualityassurance
On site supervisors (check cement/steelquality, ensuring proper mix of sand &cement, .)
8/14/2019 Software Engineerig- Introduction
11/5811
Large projects Many deliverables : architecture plan,model, structure diagrams, electricalcabling layouts,
Standards, regulations, conventionsneed to be followed
Steps, milestones defined and reviews
are carried out; progress is visibleProject planning and projectmanagement essential
8/14/2019 Software Engineerig- Introduction
12/5812
Software projects
Software is different from otherproducts
Cost of production concentrated indevelopment
Maintenance consists of makingcorrections and enhancing or adding
functions
Progress in development is difficult tomeasure
8/14/2019 Software Engineerig- Introduction
13/58
13
Apply Engineering ApproachHence planning and control even moreimportant in software development engineering approach:
Attempt to estimate cost/effort
Plan and schedule work
Involve user in defining requirements
Identify stages in development
Define clear milestones so that progress can be
measured Schedule reviews both for control and quality
Define deliverables
Plan extensive testing
8/14/2019 Software Engineerig- Introduction
14/58
14
Job of Software Developer is
difficultDealing with users
Ill-defined requirements
Concern with ease-of-use and response time
Dealing with technical people
Concerned with coding, databases, filestructures, etc.
Dealing with management
Concerned with return on their investment
Cost-benefit analysis
Schedule
8/14/2019 Software Engineerig- Introduction
15/58
15
Software ProcessProcess consists of activities/steps tobe carried out in a particular order
Software process deals with bothtechnical and management issues
Consists of different types of process
Process for software development:
produces software as end-result multiple such processes may exist
a project follows a particular process
8/14/2019 Software Engineerig- Introduction
16/58
16
Process Types Process for managing the project
defines project planning and control
effort estimations made and scheduleprepared
resources are provided
feedback taken for quality assurance
monitoring done.
8/14/2019 Software Engineerig- Introduction
17/58
17
Process Types Process for change and configurationmgmt.
Resolving requests for changes
Defining versions, their compositions Release control
Process for managing the aboveprocesses themselves
Improving the processes based on newtechniques, tools, etc.
Standardizations and certifications (ISO,CMM)
8/14/2019 Software Engineerig- Introduction
18/58
18
Multiple processes A large software development
company may have multipledevelopment processesA. For client-server based conventional
applications (sales processing, payroll)
B. For enterprise-level (ERP) projects based onpackages and customization
C. For web-based e-commerce typeD. For data-warehousing/decision-support type
The company may have manyprojects in each category
8/14/2019 Software Engineerig- Introduction
19/58
19
Step in a ProcessEach step has a well-definedobjective
Requires people with specific skillsTakes specific inputs and produceswell-defined outputs
Step defines when it may begin
(entry criteria) and when it ends (exitcriteria)
Uses specific techniques, tools,
guidelines, conventions.
8/14/2019 Software Engineerig- Introduction
20/58
20
Process step
Step must be executed as per project planthat gives duration, effort, resources,constraints, etc.
It must produce information formanagement so that corrective actionscan be taken
E.g., adding more resources
A step ends in a review (V&V) Verification: check consistency of outputs
with inputs (of the step)
Validation: check consistency with user needs
8/14/2019 Software Engineerig- Introduction
21/58
8/14/2019 Software Engineerig- Introduction
22/58
8/14/2019 Software Engineerig- Introduction
23/58
23
A Good Process
Predictable for quality: with respect to number andtype of defects, performance,
Predictable process is said to be understatistical control , where actual values are
close to expected values
It supports testing and maintainability
Maintenance by third party
Follow standards, provide necessary documentation
This characteristic differentiates between prototypeand product
8/14/2019 Software Engineerig- Introduction
24/58
8/14/2019 Software Engineerig- Introduction
25/58
25
Waterfall Model for
DevelopmentHere, steps (phases) are arranged inlinear order
A step take inputs from previous step,
gives output to next step (if any) Exit criteria of a step must match with
entry criteria of the succeeding step
It follows specify, design, build
sequence that is intuitively obviousand appears natural
8/14/2019 Software Engineerig- Introduction
26/58
26
Waterfall Model
Produces many intermediatedeliverables, usually documents
Standard formats defined
Act as baseline used as reference (forcontractual obligations, formaintenance)
Important for quality assurance, project
management, etc.
It is widely used (with minorvariations) when requirements are
well understood
8/14/2019 Software Engineerig- Introduction
27/58
27
Waterfall Modelsystem
engineering
AnalysisProject planning
design
code
testing &integration
Installation &
maintenance
-software part of some larger system-establish requirements for all elements of the system; assign some
to software
-understand information domain, functions, performance
and interfacing. Project plans made
-translate requirements into s/w architecture, data structures
and procedural details. A detailed design step can be
added
-programming
-test logic and function interfaces
-deployment; make changes for
-Errors, performance-changes in requirement
8/14/2019 Software Engineerig- Introduction
28/58
28
Deliverables in Waterfall
ModelProject plan and feasibility reportRequirements document (SRS :Software Requirement Specifications)
System design documentDetailed design document
Test plans and test reports
Source codeSoftware manuals (user manual,installation manual)
Review reports
8/14/2019 Software Engineerig- Introduction
29/58
29
Cost/Effort Distribution
Accumulated cost increases dramatically asprogrammers, operators, technical writers andcomputer time is committed.
Cost of discovering and fixing errors also increases with
steps
Problemdefinitio
n
Feasibility study
Analysis Systemdesign
Detaileddesign
Implemen-
tation
Mainten-
ance
Total accumulatedcost
8/14/2019 Software Engineerig- Introduction
30/58
30
Shortcomings of Waterfall
ModelRequirements may not be clearlyknown, especially for applications nothaving existing (manual) counterpart
Railway reservation: manual systemexistes, so SRS can be defined
On-line container management for
railways - new Knowledge management for a central
bank new
8/14/2019 Software Engineerig- Introduction
31/58
31
Shortcomings Requirements change with timeduring project life cycle itself
Users may find solution of little use
Better to develop in parts in smallerincrements; this is common forpackages, system software
Considered documentation-heavy: so
much documentation may not berequired for all types of projects.
8/14/2019 Software Engineerig- Introduction
32/58
32
Prototyping Model
When customer or developer is notsure
Of requirements (inputs, outputs)
Of algorithms, efficiency, human-machineinteraction
A throwaway prototype built from
currently known user needsWorking or even paper prototype
8/14/2019 Software Engineerig- Introduction
33/58
33
Prototyping
Quick design focuses on aspectsvisible to user; features clearly
understood need not be implementedPrototype is tuned to satisfy customerneeds
Many iterations may be required toincorporate changes and newrequirements
Final product follows usual define-design-build-test life cycle
8/14/2019 Software Engineerig- Introduction
34/58
34
Prototyping
Requirementsgathering
Quick
design buildprototype
evaluate &refine
Engineerproduct
8/14/2019 Software Engineerig- Introduction
35/58
8/14/2019 Software Engineerig- Introduction
36/58
36
Iterative Development
Useful for product development wheredevelopers define scope, features toserve many customers
Early version with limited featureimportant to establish market and getcustomer feedback
Initial version may follow any method
A list of features for future versionsmaintained
Each version is analyzed to decide
feature list for next iteration
8/14/2019 Software Engineerig- Introduction
37/58
37
Evolutionary Development model [SE-7, Fig4.2]
ValidationFinalversion
DevelopmentIntermediate
versions
Specification Initialversion
Outline
description
Concurr ent
activities
8/14/2019 Software Engineerig- Introduction
38/58
38
Evolutionary Development.. Main characteristics:
The phases of the software construction areinterleaved
Feedback from the user is used throughout theentire process
The software product is refined through manyversions
Types of evolutionary development: Exploratory development
Throw-away prototyping
8/14/2019 Software Engineerig- Introduction
39/58
39
Evolutionary Development Advantages:
Deals constantly with changes
Provides quickly an initial version of the system
Involves all development teams
Disadvantages:
Quick fixes may be involved
Invisible process, not well-supported bydocumentation
The systems structure can be corrupted bycontinuous change
8/14/2019 Software Engineerig- Introduction
40/58
40
Evolutionary Development
Disadvantages [contd]: Special tools and techniques may be
necessary
The client may have the impression the firstversion is very close to the final product andthus be less patient
Applicability: When requirements are not well understood
When the client and the developer agree ona rapid prototype that will be thrown away
Good for small and medium-sized softwaresystems
8/14/2019 Software Engineerig- Introduction
41/58
41
Component-based Software
Engineering
Requirementsspecification Componentanalysis
Developmentandintegration
Systemdesignwithreuse
Requirementsmodification
Systemvalidation
8/14/2019 Software Engineerig- Introduction
42/58
42
Component-based Software
Engineering..
Main characteristics:
Makes intensive use of existing reusable
componentsThe focus is on integrating the
components rather than on creatingthem from the scratch
8/14/2019 Software Engineerig- Introduction
43/58
8/14/2019 Software Engineerig- Introduction
44/58
44
Component-based Software
Engineering Disadvantages:
Compromises in requirements are needed
Less control over the systems evolution
Applicability:
When there is a pool of existingcomponents that could satisfy therequirements of the new product
Emerging trend: integration of webservices from a range of suppliers
8/14/2019 Software Engineerig- Introduction
45/58
45
Spiral ModelActivities are organized in a spiral having
many cycles
Four quadrants in each cycle
1. Determine objectives,Alternatives, constraints
2. Evaluate alternatives,identify and handle risks
4. Plan next step 3. Develop the software
8/14/2019 Software Engineerig- Introduction
46/58
8/14/2019 Software Engineerig- Introduction
47/58
47
The Spiral Model
8/14/2019 Software Engineerig- Introduction
48/58
48
Spiral Model
Main characteristics:
Also a hybrid model that support processiteration
The process is represented as a spiral, eachloop in the spiral representing a process phase
Four sectors per loop: objective setting, riskassessment and reduction, development and
validation, planning Risk is explicitly taken into consideration
8/14/2019 Software Engineerig- Introduction
49/58
49
Spiral Model Advantages:
Risk reduction mechanisms are in place
Supports iteration and reflects real-world practices
Systematic approach
Disadvantages: Requires expertise in risk evaluation and reduction
Complex, relatively difficult to follow strictly
Applicable only to large systems
Applicability: Internal development of large systems
8/14/2019 Software Engineerig- Introduction
50/58
50
The Rational Unified Process
P h as e i te rat i o n
In cep t i o n E l ab o ra t i o n C o n s t ru c t i o n Tran s i t i o n
8/14/2019 Software Engineerig- Introduction
51/58
51
Major work products in UP phases
Inception phase Vision doc, early use cases, feasibility, project
plans
Elaboration phase
Detailed use cases, analysis, architecturedesign, detailed plan, preliminary user manual
Construction phase Detailed design, components, test plans/cases,
implementation, detailed manuals
Transition phase Delivery, beta/acceptance, user feedback
8/14/2019 Software Engineerig- Introduction
52/58
52
What is CASE (Computer-Aided
Software Engineering)
Software systems that are intended toprovide automated support for softwareprocess activities.
CASE systems are often used for methodsupport.
Upper-CASE Tools to support the early process activities of
requirements and design;
Lower-CASE Tools to support later activities such as
programming, debugging and testing.
8/14/2019 Software Engineerig- Introduction
53/58
53
Classification of CASE technology [SE-7, Fig 4.14]
Single-methodworkbenches
General-purposeworkbenches
Multi-methodworkbenches
Language-specificworkbenches
Programming TestingAnalysis anddesign
Integratedenvironments
Process-centredenvironments
Filecomparators
CompilersEditors
EnvironmentsWorkbenchesTools
CASEtechnology
8/14/2019 Software Engineerig- Introduction
54/58
54
Project Management Process
Runs in parallel to development process
Project planning, monitoring and controlare the basic goals
Project plan indicates how project will beexecuted successfully
Without plan, there is no management
Without measurement, not much planningpossible
Plan allows progress to be measured
Plan produced before development beginsand constantly updated
8/14/2019 Software Engineerig- Introduction
55/58
8/14/2019 Software Engineerig- Introduction
56/58
56
Project Monitoring and
ControlPlan defines various activities: manyways to represent: Gantt chart, time
bar chart, PERT/CPM project activitynetwork
Show activities, expected durations,resources allocated
Critical paths can be identified
8/14/2019 Software Engineerig- Introduction
57/58
57
Project monitoring
Each development step givesinformation for tracking progress for
identifying delays, bottlenecks, etc. Allows corrective action: add more
resources reduce scope, re-negotiatecost/schedule, etc.
8/14/2019 Software Engineerig- Introduction
58/58
SummaryChallenges in software development andneed for engineering approach
Step-by-step methodology with specificdeliverables
Types of software processes For development, for project management,
Precise definition of a step
Waterfall model : natural, widely followed
in spite of its limitationsProject management for planning,monitoring and control
Recommended