Challenge in large projects• Developing large/complex software application is very challenging - Effort intensive - High cost - Long development time - Changing needs for users - High ri
Trang 1Introduction to Software
Engineering
Trang 2• Characteristics of a good process
• Waterfall model for development
• Other models
• Project planning
Trang 3Software systems
• Ubiquitous, used in variety of applications
- Business, engineering, scientific
applications
• Simple to complex, internal to public,
single function to enterprise-wide, one
location to distributed, batch or real time, informational to mission-critical,…
Trang 4Challenge in large projects
• Developing large/complex software application 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-time programs where
author and user are same!
Trang 5Successful software system
• Software development projects have not always been successful
• When do we consider a software application
Trang 6Reasons for failure
• Schedule Slippage
• Cost over-runs
• Does not solve user’s problem
• Poor quality of software
• Poor maintainability
Trang 7Reasons for failure…
• Ad hoc software development results in 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
Trang 8Engineering: other disciplines
• Large projects common and successfully
- Building bridges, dams
effectively and ensuring quality
- Using scientific principles
Trang 9• Requires well-defined approach: repeatable,
predictable
• Large projects requires managing the project itself
- Manage people, money (cost), equipment,
schedule
- Scale makes big difference: compare building a hut, 2-storeyed house, or 50-storeyed apartment building
• Quality extremely important: relates to failures,
efficiency, usability,…
- People willing to pay for quality!
Trang 10Large Projects
• Involve different types of people
- Large building: architect, civil engineer, electrical engineer, workers (masons,
Trang 11Large projects…
• Many deliverables: architecture plan,
model, structure diagrams, electrical
Trang 12Software projects
• Software is different from other products
- Cost of production concentrated in
development
- Maintenance consists of making
corrections and enhancing or adding
functions
- Progress in development is difficult to measure
Trang 13Apply Engineering Approach
• Hence planning and control even more important in software development -> engineering approach
- Attempt to estimate cost/effort
- Plan and schedule work
- Involve users in defining requirements
- Identify stages in development
- Define clear milestones so that progress can be
Trang 14Job of Software developer is difficult
• Dealing with users
- Ill-defined requirements
- Concern with ease-of-use and response
time
• Dealing with technical people
- Concerned with coding, databases, file
structures, etc
• Dealing with management
- Concerned with return on their investment
- Cost-benefit analysis
- Schedule
Trang 15For success in large software
development, it is important to follow an
engineering approach, consisting of a defined process
Trang 16• 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
Trang 17Process types
• Process for managing the project
- defines project planning and control
- effort estimations made and schedule prepared
- resources are provided
- feedback taken for quality assurance
- monitoring done
Trang 18Process types…
• Process for change and configuration
management.
- Resolving requests for changes
- Defining versions, their compositions
- Release control
• Process for managing the above processes
themselves
- Improving the processes based on new
techniques, tools, etc.
- Standardizations and certifications (ISO, CMM)
Trang 19Multiple processes
• A large software development company may
have multiple development processes
A For client-server based conventional
applications (sales processing, payroll)
B For enterprise-level (ERP) projects based on packages and customization
C For web-based e-commerce type
D For data-warehousing/decision-support type
• The company may have many projects in each category
Trang 20Step in a process
• Each step has a well-defined objective
• Requires people with specific skills
• Takes specific inputs and produces defined outputs
well-• Step defines when it may begin (entry criteria) and when it ends (exit criteria)
• Uses specific techniques, tools,
guidelines, conventions
Trang 21- E.g adding more resources
• A steps ends in a review (V&V)
- Verification: check consistency of outputs with inputs (of the step)
- Validation: check consistency with user needs
Trang 22Process step
Project control info
Info for management
(exit criteria)
Review
V &V Inputs
Actions to
be carried
out (entry criteria)
outputs
Trang 23Characteristics of a Good Process
• Should be precisely defined – no ambiguity
about what is to be done, when, how, etc.
• It must be predictable – can be repeated in other projects with confidence about its outcome
- Predictable with respect to effort, cost:
-> Project A: Web-based library application done
by 3 persons in 4 months
-> another project B (guest house bookings),
similar in complexity should also take about 12 persons in a month.
Trang 24A Good Process…
• Predictable for quality, with respect to number and type of defects, performance
• Predictable process is said to be “under
statistical 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
prototype and product
Trang 25A Good Process…
• Facilitates early detection of and removal of defects
- Defects add to project cost
- Late detection/correction is costly
• It should facilitate monitoring and improvement
- Based on feedback
- Permit use of new tools, technologies
- Permit measurements
Trang 26Summary of lecture 1
• Challenges in large software development
• Benefits of engineering approach
• Types of software processes
• A typical step
• Characteristics of a good process
Trang 27Waterfall Model for Development
• Here, steps (phases) are arranged in
linear order
- A step takes inputs from previous step, gives outputs 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 obvious and appears
natural
Trang 28Waterfall Model…
• Produces many intermediate deliverables, usually documents
- Standard formats defined
- Act as “baseline” used as reference (for contractual obligations, for maintenance)
- Important for quality assurance, project management, etc
Trang 29Waterfall model
Trang 30Deliverables in Waterfall Model
• Project plan and feasibility report
• Requirements document (SRS: Software
Requirement Specifications)
• System design document
• Detailed design document
• Test plans and test reports
• Source code
• Software manuals (user manual, installation
manual)
• Review reports
Trang 31Shortcomings of Waterfall model
• Requirements may not be clearly known, especially for applications not having
existing (manual) counterpart
- Railway reservation: manual system
existed, so SRS can be defined
- Knowledge management for central bank -new
Trang 32• Requirements change with time during
project life cycle itself
- Users may find solutions of little use
- Better to develop in parts in smaller
increments; this is common for packages, system software
• Considered documentation-heavy: so
much documentation may not be required for all types of projects
Trang 33Prototyping Model
• When customer or developer is not sure
- Of requirements (inputs, outputs)
- Of algorithms, efficiency,
Trang 34• Quick design focuses on aspects visible to user; features clearly understood need not
be implemented
• Prototype is tuned to satisfy customer needs
- Many interactions may be required to
incorporate changes and new requirements
• Final product follows usual define-design
build-test life cycle
Trang 36Limitations of Prototyping
• Customer may want prototype itself!
• Developer may continue with
implementation choices made during
Trang 37Interactive Development
• Useful for product development where
developers define scope, features to serve many customers
• Early version with limited feature important
to establish market and get customer
feedback
• Initial version may follow any method
• A list of features for future versions
maintained
Trang 383 Develop the software
4 Plan next step
Trang 39- Do prototype for user interface risks
- Use basic waterfall model when user interface and performance issues are understood but only development risk remains
• Risk driven: allows us mix of
specification-oriented, prototype-specification-oriented, simulation based or any other approach
Trang 40Project Management Process
• Runs in parallel to development process
• Project planning, monitoring and control are the basic goals
• Project plan indicates how project will be
executed successfully
- Without plan, there is no management
- Without measurement, not much planning
possible
- Plan allows progress to be measured
- Plan produced before development begins and constantly updated
Trang 41Project Planning
• Prepare cost/effort estimation
- Based on project complexity, scope, productivity levels, other historical data
- Many models available
• Select development process, define milestones and
prepare schedule
- Know how effort is distributed over phases from
historical data
• Decide project staffing
• Make quality control plans: define reviews, inspections, testing strategies to detect/remove defects
Trang 42Project Monitoring and Control
• Plan defines various activities: many ways
to represent: Gantt chart, time bar chart, PERT/CPM project activity network
- Show activities, expected durations,
resources allocated
- Critical paths can be identified
Trang 43Project monitoring
• Each development step gives information for tracking progress for identifying delays, bottlenecks, etc
- Allows corrective action; add more
resources, reduce scope, renegotiate cost/schedule, etc
Trang 44• What is engineering, and importance of
applying engineering approach in software development
• Types of software processes
• Stepwise process definition
• Waterfall, prototype, iterative, spiral
models
• Project management Process
• Project Planning
Trang 451 Lecture Series on Software Engineering
by Prof.N.L Sarda, Prof Umesh
Bellur,Prof.R.K.Joshi and Prof.Shashi
Kelkar, Department of Computer Science
& Engineering ,IIT Bombay
2 P Jalote A Concise Introduction to
Software Engineering Springer, 2008