Professional Documents
Culture Documents
SE Module - 1 (Introduction To SE) PDF
SE Module - 1 (Introduction To SE) PDF
SOFTWARE ENGINEERING
Syllabus: (CA - 505) SOFTWARE ENGINEERING
Text Book:
Roger S. Pressman – “Software Engineering – A Practitioner’s Approach”, 6th Edn.,
McGraw Hill.
Reference Books:
1. Vliet Haus Van – “ Software Engineering – Principles and Practice –2nd Edn., John Wiley and Sons .
2. Ian Sommerville – “Software Engineering”, 7th Edn., Pearson Education.
3
Book
4
Software and Software Engineering
5
Dual Role of Software
– Vehicle
• Supports or directly provides system functionality
• Controls other programs (e.g., operating systems)
• Effects communications (e.g., networking software)
• Helps build other software (e.g., software tools)
6
Questions About Software Haven't Changed
Over the Decades
7
A Definition of Software
10
Software Failure Curve
11
Changing Nature of Software
• Application software e. g.: real time manufacturing control, POS transection processin
• Product-line softwaree. g.: word processing, spreadsheets CG, multimedia , inventory contro
• Web applications e. g.: WebApps, e-commerce application B2B applications
• Artificial intelligence software e. g.: Robotics, pattern recognition, ANN, expert system
• Ubiquitous computing e. g.: Distributed computing, small wireless devices
• Net-sourcing (net-wide computing) e. g.: personal financial planning
• Open source e. g.: OS, database, development enviornment
• The ".com" marketing applications e. g.: SMS, Instant massaging, Napester
12
Legacy Software - Characteristics
13
Reasons for Evolving the Legacy Software
(Note: These are also the three major reasons for any software maintenance)
14
Software Myths - Management
15
Software Myths - Customer
16
Software Myths - Practitioner
• "Once we write the program and get it to work, our
job is done"
– 60% to 80% of all effort expended on software occurs after it
is delivered
• "Until I get the program running, I have no way of
assessing its quality
– Formal technical reviews of requirements analysis
documents, design documents, and source code (more
effective than actual testing)
• "The only deliverable work product for a successful
project is the working program"
– Software, documentation, test drivers, test results
• "Software engineering will make us create
voluminous and unnecessary documentation and will
invariably slow us down"
– Creates quality, not documents; quality reduces rework and 17
provides software on time and within the budget
LAYERED TECHNOLOGY
Tools
Methods
Processes
Quality Focus
• Communication
Involves communication among the customer and other stake
holders; encompasses requirements gathering
• Planning
Establishes a plan for software engineering work; addresses
technical tasks, resources, work products, and work schedule
• Modeling (Analyze, Design)
Encompasses the creation of models to better understand the
requirements and the design
• Construction (Code, Test)
Combines code generation and testing to uncover errors
• Deployment
Involves delivery of software to the customer for evaluation and
feedback
7/18/2019 Faclitator: Dr. B. B. Sagar 20
Umbrella Activities
• Software requirements management
• Risk management
• Repeatable (Level 2)
– Basic project management processes are established
to track cost, schedule, and functionality
– The necessary process discipline is in place to repeat
earlier successes on projects with similar applications
• Managed (Level 4)
– Detailed measures of the software process and product quality
are collected
– Both the software process and products are quantitatively
understood and controlled
• Optimized (Level 5)
– Continuous process improvement is enabled by
quantitative feedback from the process and from piloting
innovative ideas and technologies
7/18/2019
Prescriptive Process Models
7/18/2019
Generic Process Framework
• Communication
– Involves communication among the customer and other stake holders;
encompasses requirements gathering
• Planning
– Establishes a plan for software engineering work; addresses technical
tasks, resources, work products, and work schedule
• Modeling (Analyze, Design)
– Encompasses the creation of models to better under the requirements and
the design
• Construction (Code, Test)
– Combines code generation and testing to uncover errors
• Deployment
– Involves delivery of software to the customer for evaluation and feedback
7/18/2019 37
Modeling: Software Requirements Analysis
7/18/2019 38
Modeling: Software Design
• Brings together customer requirements, business needs, and technical
considerations to form the “blueprint” for a product
• Creates a model that that provides detail about software data structures,
software architecture, interfaces, and components that are necessary to
implement the system
• Architectural design
– Represents the structure of data and program components that are required
to build the software
– Considers the architectural style, the structure and properties of components
that constitute the system, and interrelationships that occur among all
architectural components
• User Interface Design
– Creates an effective communication medium between a human and a
computer
– Identifies interface objects and actions and then creates a screen layout that
forms the basis for a user interface prototype
• Component-level Design
– Defines the data structures, algorithms, interface characteristics, and
communication mechanisms allocated to each software component
7/18/2019 39
Prescriptive Process Model
7/18/2019 40
Waterfall Model (Diagram)
Communication
Project initiation
Requirements
gathering
Planning
Estimating
Scheduling
Tracking Modeling
Analysis
Design Construction
Code
Test Deployment
Delivery
Support
Feedback
7/18/2019 41
Waterfall Model (Description)
7/18/2019 42
Waterfall Model (Problems)
7/18/2019 43
Waterfall Model with Feedback
(Diagram)
Communication
Project initiation
Requirements
gathering
Planning
Estimating
Scheduling
Tracking Modeling
Analysis
Design Construction
Code
Test Deployment
Delivery
Support
Feedback
7/18/2019 44
Incremental Process Model
Incremental Model (Diagram)
Increment #1
Communication
Planning
Modeling
Construction
Deployment
Increment #2
Communication
Planning
Modeling
Construction
Deployment
Increment #3
Communication
Planning
Modeling
Construction
Deployment
7/18/2019 45
Incremental Model (Description)
7/18/2019 46
Rapid Application Development (RAD)
7/18/2019
Evolutionary Process Model
Prototyping Model (Diagram)
Quick
Planning
Communication
Start
Modeling
Quick Design
Deployment,
Delivery,
and Feedback
Construction
Of Prototype
7/18/2019 48
Prototyping Model (Description)
7/18/2019 49
Prototyping Model (Potential Problems)
7/18/2019 50
Spiral Model (Diagram)
Planning
Communication
Start Modeling
Start
Deployment Construction
7/18/2019 51
Spiral Model (Description)
7/18/2019
• The concurrent model is often more appropriate for system
engineering projects where different engineering teams are involved.
• All activities exist concurrently but reside in different states.
• For example, early in the project the communication activity has
completed its first iteration and exists in the awaiting changes
state. The modeling activity which existed in the none state while
initial communication was completed now makes a transition into
underdevelopment state.
• If, however, the customer indicates the changes in requirements
must be made, the modeling activity moves from the under
development state into the awaiting changes state.
• The concurrent process model defines a series of events that will
trigger transitions from state to state for each of the Software
engineering activities, actions, or tasks.
7/18/2019
General Weaknesses of
Evolutionary Process Models
1) Prototyping poses a problem to project planning because of
the uncertain number of iterations required to construct the
product
2) Evolutionary software processes do not establish the
maximum speed of the evolution
• If too fast, the process will fall into chaos
• If too slow, productivity could be affected
3) Software processes should focus first on flexibility and
extensibility, and second on high quality
• We should prioritize the speed of the development over
zero defects
• Extending the development in order to reach higher
quality could result in late delivery
7/18/2019 55
Specialized Process Models
Component-based Development Model
• Consists of the following process steps
– Available component-based products are
researched and evaluated for the application
domain in question
– Component integration issues are considered
– A software architecture is designed to
accommodate the components
– Components are integrated into the architecture
– Comprehensive testing is conducted to ensure
proper functionality
• Relies on a robust component library
• Capitalizes on software reuse, which leads to
documented savings in project cost and time
7/18/2019 56
Formal Methods Model (Description)
7/18/2019 57
Formal Methods Model (Challenges)
7/18/2019 58
Unified Process Model (Background)
Inception Elaboration
planning
modeling
communication
construction
Construction
deployment
Production Transition 61
7/18/2019
Inception Phase
7/18/2019 62
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
7/18/2019 63
Construction Phase
7/18/2019 64
Transition Phase
7/18/2019 65
Production Phase
7/18/2019 66
Unified Process Work Products
7/18/2019 67
Agile Development
Common Fears for Developers
• The project will produce the wrong product.
Yielding …
70
An Agile Process
71
Principles of Agility
Agile Alliiance [AGI03] defines 12 principles for those,
who want to achieve agility:ur
1. Our highest priority is to satisfy the customer through
early and continuous delivery of valuable software.
74
Extreme Programming (XP)
75
Extreme Programming (XP) cont..
• XP Design
– Follows the KIS principle
– Encourage the use of CRC cards (see Chapter 8)
– For difficult design problems, suggests the creation of
spike solutions — a design prototype
– Encourages refactoring — an iterative refinement of the
internal program design
• XP Coding
– Recommends the construction of a unit test for a store
before coding commences
– Encourages pair programming
• XP Testing
– All unit tests are executed daily
– Acceptance tests are defined by the customer and
executed to assess customer visible functionality
76
Extreme Programming (XP)
77
Other Agile Processes
• Scrum
• Crystal