Software Engineering - GH Raisoni Polytechnic, Nagpur

advertisement
Presentation on
SOFTWARE ENGINEERING(17513)
Course Code:- CM5G
Subject Teacher :- Mr. Shailesh D. Patre
Dept :- Computer Technology
G. H. Raisoni polytechnic college, Nagpur
1
Lecture-01
UNIT : 01
Overview Of Software Engineering
And The Software
Development Process
2
Introduction to Software Engineering
What is Software?
The product that software professionals build and then support over the long term.
Software encompasses: (1) instructions (computer programs) that when executed
provide desired features, function, and performance; (2) data structures that enable
the programs to adequately store and manipulate information and (3)
documentation that describes the operation and use of the programs.
Software products
Generic products
Stand-alone systems that are marketed and sold to any customer who wishes to
buy them. Examples – PC software such as editing, graphics programs, project
management tools; CAD software; software for specific markets such as
appointments systems for dentists.
Customized products
Software that is commissioned by a specific customer to meet their own needs.
Examples – embedded control systems, air traffic control software, traffic
monitoring systems.
3
Characteristics /Features of Software?
Its characteristics that make it different from other things human being build.
Features of such logical system:
Software is developed or engineered, it is not manufactured in the classical
sense which has quality problem.
Software doesn't "wear out.” but it deteriorates (due to change). Hardware has
bathtub curve of failure rate ( high failure rate in the beginning, then drop to steady state, then
cumulative effects of dust, vibration, abuse occurs).
Although the industry is moving toward component-based construction (e.g.
standard screws and off-the-shelf integrated circuits), most software continues
to be custom-built. Modern reusable components encapsulate data and
processing into software parts to be reused by different programs. E.g.
graphical user interface, window, pull-down menus in library etc.
4
Go to Question
Types / Categories / Changing nature of Software
1. System software: such as compilers, editors, file management utilities
2. Application software: stand-alone programs for specific needs.
3. Engineering/scientific software: Characterized by “number
crunching”algorithms. such as automotive stress analysis, molecular biology,
orbital dynamics etc
4. Embedded software: resides within a product or system. (key pad control
of a microwave oven, digital function of dashboard display in a car)
5. Product-line software: focus on a limited marketplace to address mass
consumer market. (word processing, graphics, database management)
6. Web Application software: network centric software. As web 2.0 emerges,
more sophisticated computing environments is supported integrated with
remote database and business applications.
7. Artficial Intelligence: software uses non-numerical algorithm to solve
complex problem. Robotics, expert system, pattern recognition game playing
5
Go to Question
Essential attributes of good software
6
Product characteristic
Description
Maintainability
Software should be written in such a way so that it can evolve
to meet the changing needs of customers. This is a critical
attribute because software change is an inevitable requirement
of a changing business environment.
Dependability and
security
Software dependability includes a range of characteristics
including reliability, security and safety. Dependable software
should not cause physical or economic damage in the event of
system failure. Malicious users should not be able to access or
damage the system.
Efficiency
Software should not make wasteful use of system resources
such as memory and processor cycles. Efficiency therefore
includes responsiveness, processing time, memory utilisation,
etc.
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.
Software Engineering - A Layered Technology
Lecture-02
tools
methods
process model
a “quality” focus




7
Any engineering approach must rest on organizational commitment to quality
which fosters a continuous process improvement culture.
Process layer as the foundation defines a framework with activities for effective
delivery of software engineering technology. Establish the context where
products (model, data, report, and forms) are produced, milestone are established,
quality is ensured and change is managed.
Method provides technical how-to’s for building software. It encompasses many
tasks including communication, requirement analysis, design modeling, program
construction, testing and support.
Tools provide automated or semi-automated support for the process and methods.
Software Process
Communication: communicate with customer to understand objectives and
gather requirements.
Planning: creates a “map” defines the work by describing the tasks, risks and
resources, work products and work schedule.
Modeling: Create a “sketch”, what it looks like architecturally, how the
constituent parts fit together and other characteristics.
Construction: code generation and the testing.
Deployment: Delivered to the customer who evaluates the products and
provides feedback based on the evaluation.
These five framework activities can be used to all software development
regardless of the application domain, size of the project, complexity of the
efforts etc, though the details will be different in each case.
For many software projects, these framework activities are applied iteratively
as a project progresses. Each iteration produces a software increment that
provides a subset of overall software features and functionality.
8
Go to Question
Activities of a Generic Process framework
Lecture-03
Process framework
A common process framework is estsblished by defing a small number of
framework activities that are applicable to all software projects, regardless of
their size or complexity. Umbrella activities are independent of any one
framework activity and occur through the process.
Framework activities
A common process framework is established by defining a small
number of framework activities.
Software process framework can be used to all software projects.
It consist of a number of task sets. Each set is a collection of
software engineer work tasks, project milestone, work product and
quality assurance points.
9
Go to Question
Umbrella Activities
Complement the five process framework activities and help team manage and control
progress, quality, change, and risk.
 Software project tracking and control: assess progress against the plan and take actions to
maintain the schedule.
 Risk management: assesses risks that may affect the outcome and quality.
 Software quality assurance: defines and conduct activities to ensure quality.
 Technical reviews: assesses work products to uncover and remove errors before going to
the next activity.
 Measurement: define and collects process, project, and product measures to ensure
stakeholder’s needs are met.
 Software configuration management: manage the effects of change throughout the
software process.
 Reusability management: defines criteria for work product reuse and establishes
mechanism to achieve reusable components.
 Work product preparation and production: create work products such as models,
10
documents, logs, forms and lists.
Software Process framework
Software Process
Process framework
Umbrella Activity
Framework Activity #1
Task-1
Set-1
Software Engineering Action #1
Task-N
Set-N
Framework Activity #N
Task-1
Set-1
Software Engineering Action #N
Task-N
11
Set-N
Lecture-04
Personal and Team process model
 Personal and team process model are required while developing software process.
 These model are useful to significant adaption to meet the requirement of the
project team.
 In the given model team itself will design its own process, and simultaneously
meet very small need and the broader requirement of the organization.
 t is said that it is possible to create a personal software process and or a team
software process. to develop these both type of processes, coordination and hard
work training is required.
 These both help a lot and contribute significantly in successful software
development process.
12
Personal Software Process (PSP)
 The PSP process is designed for individual use. It helps you and your
organization meet the increasing demands for high quality and timely software.
 As a software professional, you are responsible for your personal process. You
should measure, track, and analyze your work.
 You should learn from your performance variations.
 You should incorporate lessons learned into your personal practices.
 The quality of a software component is governed by the individual who
developed
 The key to quality is the individual developer’s skill, commitment, and
personal process discipline.
13
Go to Question
Activities defined in PSP
With this PSP makes the practitioner get actually involve and make
responsible for project planning. The main goal of PSP is personal
measurement of both the work product that is produced and the resultant
quality of that work product.
 There are five framework activities are defined in PSP
Planning
High level design
High level design review
Development
Postmortem
14
Team Software Process (TSP)
The team should be self-directed team that can plan and track their own work,
establish their own goals and their own process and plans.
The TSP builds and guides cross-functional teams. It provides
– a defined team building process
– a team working framework
– a supportive management environment
It includes
– a full set of process forms, scripts, and standards
– standard team-member roles
– a structured launch and tracking process
– a team and engineer support system
15
Go to Question
Activities defined in PSP
Requirements
•TSP projects can start on any phase.
•The strategy is to
– overlap phases
– develop in increments
– balance team workload
– accelerate tasks wherever
possible
High-Level
Design
Implementation
Integration
and Test
Postmortem
16
Adapting a Process Model
Lecture-05
Prescriptive and Agile Process Models
The prescriptive process models stress detailed definition, identification, and
application of process activates and tasks. Intent is to improve system quality,
make projects more manageable, make delivery dates and costs more predictable,
and guide teams of software engineers as they perform the work required to build
a system.
Unfortunately, there have been times when these objectives were not achieved. If
prescriptive models are applied dogmatically and without adaptation, they can
increase the level of bureaucracy. e.g. Waterfall model, Incremental model, RAD
model, spiral model, prototyping.
Agile process models emphasize project “agility” and follow a set of principles
that lead to a more informal approach to software process. It emphasizes
maneuverability and adaptability. It is particularly useful when Web applications
are engineered.
17
Waterfall Model
 It is the oldest paradigm for Software Engineering. When requirements are
well defined and reasonably stable, it leads to a linear fashion.

In some respect, waterfall is the ”common sense” approach introduced by
Royce 1970.
 The classic life cycle suggests a systematic, sequential approach to software
development.
 This process begins with customer specification of requirement and progress
through different activities like planning, modeling, construction and
deployment and ends in complete software product.
 A variation of waterfall model depicts the relationship of quality assurance
actions to the actions associated with communication, modeling and early code
construction activates.
18
The Waterfall Lifecycle Workflow
Communication
requirement gathering
Planning
Estimating, Scheduling, Tracking
Modeling
Analysis design
Construction
Code test
Deployment
Delivery, support, feedback
19
Go to Question
Communication: communicate with customer to understand objectives and gather
requirements.
Planning: creates a “map” defines the work by describing the tasks, risks and
resources, work products and work schedule.
Modeling: Create a “sketch”, what it looks like architecturally, how the constituent
parts fit together and other characteristics.
Construction: code generation and the testing.
Deployment: Delivered to the customer who evaluates the products and provides
feedback based on the evaluation.
Advantages
1.
2.
3.
4.
5.
20
Easy to understand and implement.
Widely used and known.
Reinforces good habits: define-before- design, design-before-code
Identifies deliverables and milestones
Works well on mature products and weak teams.
Disadvantages
1.
2.
3.
4.
5.
6.
7.
21
Idealised, doesn’t match reality well.
Doesn’t reflect iterative nature of exploratory development.
Unrealistic to expect accurate requirements so early in project
Software is delivered late in project, delays discovery of serious errors.
Difficult to integrate risk management
Difficult and expensive to make changes to documents, ”swimming
upstream”.
Significant administrative overhead, costly for small teams and projects.
Go to Question
Lecture-06
Incremental Model
 In the incremental model, software is developed in a series of steps.
 When initial requirements are reasonably well defined, but the overall scope of
the development effort precludes a purely linear process. A compelling need to
expand a limited set of new functions to a later system release.
 It combines elements of linear and parallel process flows. Each linear
sequence produces deliverable increments of the software.
 The first increment is often a core product with many supplementary features.
Users use it and evaluate it with more modifications to better meet the needs.
22
Incremental Model
23
Go to Question
Advantages
 Initial product delivery is faster.
 Lower initial delivery cost. Core product is developed first i.e main functionality is
added in the first increment.
 After each iteration, regression testing should be conducted. During this testing,
faulty elements of the software can be quickly identified because few changes are
made within any single iteration.
 It is generally easier to test and debug than other methods of software development
because relatively smaller changes are made during each iteration. This allows for
more targeted and rigorous testing of each element within the overall product.
 With each release a new feature is added to the product.
 Customer can respond to feature and review the product.
 Risk of changing requirement is reduced
24
Disadvantages
• Requires good analysis.
• Resulting cost may exceed the cost of the organization.
• Each phase of an iteration is rigid and do not overlap each other.
• As additional functionality is added to the product, problems may arise
related to system architecture which were not evident in earlier prototypes.
25
Go to Question
Lecture-07
Rapid application development (RAD) Model
 Rapid application development
 RAD is incremental software development process model that allows usable
systems to be built in as early as possible.
 RAD model is an incremental software software process model that focuses
on short development cycle time.
 This model is a high speed model which adopts many steps from waterfall
model in which rapid development is achieved by using component based
construction approach.
 The RAD model used for information systems development.
 RAD approaches to software development put less emphasis on planning
tasks and more emphasis on development. In contrast to the waterfall model,
which emphasizes rigorous specification and planning.
26
T-n
Modeling
Construction
Communication
T-2
Modeling
Planning
Deployment
Construction
T-1
Modeling
Construction
27
Advantages
 Quick initial reviews are possible
 Constant integration isolate problems and encourage
customer feedback
 Well defined project, easy to run
Disadvantages
 Requires a systematic approach for modularized
 Requires highly skilled and well-trained developers
28
Go to Question
Lecture-08
Evolutionary Models: Prototyping
 Customer defines a set of general objectives but does not identify detailed
requirements for functions and features. Or Developer may be unsure of the
efficiency of an algorithm, the form that human computer interaction should
take.
 Begins with communication by meeting with stakeholders to define the
objective, identify whatever requirements are known, outline areas where
further definition is mandatory. A quick plan for prototyping and modeling
(quick design) occur. Quick design focuses on a representation of those
aspects the software that will be visible to end users. ( interface and output).
Design leads to the construction of a prototype which will be deployed and
evaluated. Stakeholder’s comments will be used to refine requirements.
 Both stakeholders and software engineers like the prototyping paradigm.
Users get a feel for the actual system, and developers get to build something
immediately. However, engineers may make compromises in order to get a
prototype working quickly. The less-than-ideal choice may be adopted
forever after you get used to it.
29
Prototyping
Advantages
Quick
plan
communication
Modeling
Quick design



Accelerated Delivery
Makes User Commit
Look like feel
Disadvantages
Deployment
delivery &
feedback
30
Construction
of prototype


Availability of specialist skills
Maintenance over long term
Benefits of Software Prototyping
It makes the developers clear about the missing requirements. Lets the developers know
what actually the users want.
Reduces the loss by bringing the manufacturer to a conclusion weather the system
which we are about to build is feasible or not rather than building the whole
system and finding it .
One can have a working system in before hand.
It brings the user to get involved in the system design
31
Go to Question
Spiral Model
 It couples the iterative nature of prototyping with the controlled and systematic
aspects of the waterfall model and is a risk-driven process model generator that is
used to guide multi-stakeholder concurrent engineering of software intensive
systems.
 Two main distinguishing features: one is cyclic approach for incrementally
growing a system’s degree of definition and implementation while decreasing its
degree of risk. The other is a set of anchor point milestones for ensuring
stakeholder commitment to feasible and mutually satisfactory system solutions.
 A series of evolutionary releases are delivered. During the early iterations, the
release might be a model or prototype. During later iterations, increasingly more
complete version of the engineered system are produced.
 The first circuit in the clockwise direction might result in the product specification;
subsequent passes around the spiral might be used to develop a prototype and then
progressively more sophisticated versions of the software. Each pass results in
adjustments to the project plan. Cost and schedule are adjusted based on feedback.
Also, the number of iterations will be adjusted by project manager.
32
 Good to develop large-scale system as software evolves as the process
progresses and risk should be understood and properly reacted to. Prototyping
is used to reduce risk.
 However, it may be difficult to convince customers that it is controllable as it
demands considerable risk assessment expertise.

Since end-user requirements are hard to obtain/define, it is natural to
develop software in an experimental way.
 This loop approach gives rise to structured iterative lifecycle models.
 In 1988 Boehm developed the spiral model as an iterative model which
includes risk analysis and risk management.
 Key idea: on each iteration identify and solve the sub-problems with the
highest risk.
33
Spiral Model
34
Go to Question
Each cycle follows a waterfall model by:
1.
2.
3.
4.
5.
6.
7.
Determining objectives
Specifying constraints
Generating alternatives
Identifying risks
Resolving risks
Developing next-level product
Planning next cycle
Advantages
1.
2.
3.
4.
35
Realism: the model accurately reflects the iterative nature of software
development on projects with unclear requirements
Flexible: incoporates the advantages of the waterfal and rapid prototyping
methods
Comprehensive model decreases risk
Good project visibility.
Disadvantages



36
Needs technical expertise in risk analysis to really work
Model is poorly understood by non-technical management, hence not so
widely used
Complicated model, needs competent professional management. High
administrative overhead.
Go to Question
Question Bank
1. Describe Changing Nature of Software.(S-13) (W-14)
2. What are the core principles of software Engineering? (W-14)
3. What are the characteristics of software Engineering? (W-12)
4. Explain TSP and PSP .(W-14) (S-13) (S-12)
5. List any four software characteristics and describe failure curve for software.(S-12)
6. Draw and Explain Spiral model. (S-14) .(W-14)
7. Draw and Explain Waterfall Model. (W-13)
8. Explain incremental model with neat diagram. (S-14) (W-14) (W-13)
9. Describe prototyping in detail. (W-14)
10.Explain software process framework. (S-12) .(W-14)
11.Explain in brief software engineering a layered technology.(W-12) (W-14)
12.Explain RAD model with neat diagram. (W-14)
13.Explain objectives of TSP. (W-12)
Sample Question Paper-17513 - Software Engineering
37
Download