Software Engineering Course Code: 210253
Software Engineering Course Code: 210253
Software Engineering Course Code: 210253
Engineering
Course Code :
210253
Course
Objectives
• To learn and understand the principles
of software engineering
• To be acquainted with methods of
capturing, visualising and analysing
software requirements
• To apply design and testing principles to
software project management
• To understand project management
through life of the project
Course
Outcomes
• C01: Analyze software requirements and formulate design solution for a software.
• CO2: Design applicable solutions in one or more application domains using
software engineering approaches that integrate ethical, social, legal and economic
concerns.
• CO3: Apply new software models, techniques and technologies to bring out
innovative and novelistic solutions for the growth of the society in all aspects and
evolving into their continuous professional development.
• C04: Model and design User interface and component-level.
• CO5: Identify and handle risk management and software configuration
management.
• C06: Utilize knowledge of software testing approaches, approaches to verification
and validation.
• C07: Construct software of high quality — software that is reliable, and that is
reasonably easy to understand, modify and maintain efficient, reliable, robust and
cost-effective software solutions.
Books
• 1. Roger Pressman, ―Software Engineering: A
Practitioner‘s Approachǁ, McGraw Hill, ISBN 0–
07– 337597–7
• 2. Ian Sommerville, ― Software Engineeringǁ,
Addison and Wesley, ISBN 0-13-703515-2
• Module 1: Introduction to Software
Engineering, Software Process
Models
Objectives
• Software Engineering Fundamentals:
– Introduction to software engineering,
– The Nature of Software, Defining Software, Software Engineering Practice.
• Software Process:
– A Generic Process Model,
– defining a Framework Activity,
– Identifying a Task Set,
– Process Patterns,
– Process Assessment and Improvement,
– Prescriptive Process Models,
– The Waterfall Model,
– Incremental Process Models,
– Evolutionary Process Models,
– Concurrent Models,
– A Final Word on Evolutionary Processes.
– Unified Process,
– Agile software development: Agile methods, plan driven and agile
development.
Introduction – What is Software?
● Software is:
● Instructions (computer programs) that when executed
provide desired features, function, and performance
● Data structures that enable the programs to adequately
manipulate information
● Documentation that describes the operation and use of the
programs
● Software is both a product and a vehicle that delivers a
product(e.g. Operating System)
7
What is Software ?
Software is a product
●Transforms information - produces, manages, acquires,
modifies, displays, or transmits information
●Delivers computing potential of hardware and networks
8
What is Software ?
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. E.g. air traffic monitoring
Definition of software
● Software is ..
● Instructions that when executed provide desired
features, function and performance
● Data structures that enable the program to
manipulate information.
● Documentations or descriptive information in hard
copy and virtual forms that describes the
operation and use of programs
Nature of Software
• System Software
• Application software
• Engineering/Scientific software
• Web application
• Embedded s/w
• Artificial intelligence s/w
Software Engg Practice
• Reason for existence
• Keep it simple
• Vision
• The produce is getting consumed
• Be open to future
• Plan for reuse
Characteristics of S/W
• Software is engineered, not manufactured
• Software does not ware out
• Most s/w is custom built rather than being assembeled
from components
Software Engineering Definition
□ The IEEE definition:
14
Software Process
● A process is not a rigid prescription for how to build computer
software.
● The intent is always to deliver software in a timely manner and with
sufficient quality to satisfy those who have sponsored its creation and
those who will use it.
● Includes umbrella activities which protect and control the process.
● Process Framework has 5 activities:
● Communication
● Planning
● Modeling
● Construction
● Deployment
Process Framework
● Communication : The intent is to understand stakeholders’
objectives for the project and to gather requirements that help
define software features and functions.
● Heavy communication with customers, stakeholders, team
● Encompasses requirements gathering and related activities
● Planning : defines the software engineering work by describing
the technical tasks to be conducted, the risks that are likely, the
resources that will be required, the work products to be produced,
and a work schedule.
● Workflow that is to follow
● Describe technical task, likely risk, resources will require, work products to be
produced and a work schedule
Process Framework
● Modeling : A software engineer create models to better understand
software requirements and the design that will achieve requirements.
● Help developer and customer to understand requirements (Analysis of requirements) & Design of software
19
Software Engineering Practice
● Understand the problem(communication and analysis)
● Plan the solution (modeling and software design).
● Carry out the plan (code generation).
● Examine the result(testing and quality assurance).
20
Generic Process Model
•S/W Process is a structured collection
of activities, actions and tasks for a
work product to be created.
All these reside within a framework or a
model that define the relationship with
the process and with one another.
Software Process is represented in the
figure.
There can be linear, iterative,
evolutionary or parallel process flows
executing framework activities.
21
Process Flow
● Linear Process Flow
● Executes flow from communication to deployment in sequence
22
Process Flow
● Evolutionary Process Flow
● Executes the activities in a ―circular manner to
provide a software version
23
Process Flow
● Parallel Process Flow
Typesof Process Models
● Generic Process Model
● Prescriptive Process Model
● Evolutionary Process Model
Generic Process Model
● A generic process model has:
● 1.Defining a framework activity:
● Work tasks for a simple software project are:
● Make contact with stakeholder via telephone. Discuss requirements
● and take notes.
30
Waterfall Model or Classic Life Cycle
● Integration and system testing: The individual program unit or
programs are integrated and tested as a complete system to
ensure that the software requirements have been met. After
testing, the software system is delivered to the customer.
● Operation and Maintenance: Normally this is the longest phase
of the software life cycle. The system is installed and put into
practical use. Maintenance involves correcting errors which
were not discovered in earlier stages of the life-cycle.
31
Waterfall Model
Waterfall Model
● Disadvantages:
❑ The nature of the requirements will not
change very much During development; during evolution
❑ The model implies that you should attempt to complete a given stage before moving
on❑to the next stage
Does not account for the fact that requirements constantly change.
❑ It also means that customers can not use anything until the entire system is
complete.
❑ The model implies that once the product is finished, everything else is
maintenance.
❑ Surprises at the end are very expensive Some
❑ teams sit ideal for other teams to finish
❑ Therefore, this model is only appropriate when the requirements are well-
understood and changes will be fairly limited during the design process.
Problems:
● Real projects are rarely follow the sequential
model.
1. Difficult for the customer to state all the
requirement explicitly.
2. Assumes patience from customer -
working version of program will not available
until programs not getting change fully.
Incremental Process Model (Ex: The
RAD Model)
● This is used when there is a need to provide limited set of
software functionality to users quickly and then refine and
expand that functionality in later software releases
36
Evolutionary Process Models
● Evolutionary process models produce an increasingly
more complete version of the software with each iteration.
● They are different from incremental model as the
requirements keep on changing here.
● Evolutionary models are iterative.
● Examples include :
● Prototyping
● Spiral Model
● Concurrent Development Model
37
Evolutionary Process Models
● Prototyping :
● The Software Prototyping refers to building
software application prototypes which displays the functionality of the
product under development, but may not actually hold the exact logic of
the original software
● Developing a prototype based on the stakeholders requirements.
● Unsure of the algorithm implemented.
● Many systems are built one after the other.
● Major of them are throwaways
38
Prototyping
● Best approach when:
● Objectives defined by customer are general but does not have details
like input, processing, or output requirement.
● Developer may be unsure of the efficiency of an algorithm, O.S., or the
form that human machine interaction should take.
● It can be used as standalone process model.
● Model assist software engineer and customer to better understand what is to
be built when requirements are fuzzy.
● Prototyping start with communication, between a customer and software
engineer to define overall objective, identify requirements and make a
boundary.
39
Evolutionary Process Models : Spiral
Model
Evolutionary Process Models : Spiral Model
● The spiral model is an evolutionary software process model that
couples the iterative nature of prototyping with the controlled and
systematic aspects of the waterfall model.
● It provides potential for rapid development of increasingly more
complete version of the software.
● Using spiral, software developed in as series of evolutionary
release.
● Early iteration, release might be on paper or prototype.
● Later iteration, more complete version of software.
● Evolutionary process begins in a clockwise direction, beginning
at the center risk
● Each loop/pass through the spiral model consists of risk
assessment and other framework activities from communication
through deployment
Evolutionary Process Models : Spiral
Model
● First circuit around the spiral might result in development of a
product specification.
● Subsequently, develop a prototype and then progressively more
sophisticated version of software.
● Unlike other process models that end when software is
delivered.
● It can be adapted to apply throughout the life of software.
● It maintains the systematic stepwise approach suggested by the
classic life cycle but also incorporates it into an iterative
framework activity.
● If risks cannot be resolved, project is immediately terminated
42
Evolutionary Process Models : Spiral
● Disadvantages: Model
● Can be a costly model to use.
● Risk analysis requires highly specific expertise.
● Project’s success is highly dependent on the risk analysis phase.
● Doesn’t work well for smaller projects
● It may be difficult to convince customers (particularly in contract
situations) that the evolutionary approach is controllable.
● If a major risk is not uncovered and managed, problems will
undoubtedly occur.
43
Evolutionary Process Models : Concurrent Process Models
● The concurrent model is often more appropriate for
product engineering projects where different
engineering teams are involved.
● In simple words, here, the stages run simultaneously
rather than consecutively, with multiple teams
working on them.
● They run concurrently but reside in different states
44
Concurrent Development
Model
45
Concurrent Development
● Visibility of current state of project
● It define network of activities
● Each activities, actions and tasks on the network exists
simultaneously with other activities ,actions and tasks.
● Events generated at one point in the process network
trigger transitions among the states.
Evolutionary Process Models : Concurrent Process Models
● Disadvantages:
● Large upfront investment
● Implementation of early design reviews
● Dependency on efficient communication
● Software compatibility and need for computer
modeling
Unified Process
● It can be defined as ―object oriented, use case driven, architecture-
centric, iterative and incremental software process.
● It is a popular iterative and incremental software development
process framework.
● It is a combination of best features of object oriented analysis and
design methods.
● This resulted in a robust notation of modeling and design i.e., UML-
Unified Modeling Language.
● After a refinement of generic processes, its called Rational Unified
Process-RUP.
● RUP has online repositories, templates and manuals for development
process and management.
Unified Process
● The process is extensible and features include:
● Iterative Development
● Requirements Management
● Component-Based Architectural Vision
● Visual Modeling of Systems
● Quality Management
● Change Control Management
Unified Process
50
Unified Process
● UP has 5 phases as seen in generic process model
● Inception Phase
● Overriding goal is obtained from all interested parties Initial
● requirements capture
Cost
● Benefit Analysis Initial Risk Analysis Project scope
● definition
Defining
● a candidate architecture Development of a disposable
● prototype Initial Use Case Model (10% -20% complete)
● First pass at a Domain Model
●
51
Unified Process
● Elaboration Phase
● Encompasses communication and modeling activities.
● Use cases are refined and expanded
● Uses cases are architecturally represented using
● Use case model
● Requirements model
● Design model
● Implementation model
● Deployment model
● Modifications to plan are often made here.
● Plan is carefully reviewed.
52
Unified Process
● Construction Phase
● Focus is on implementation of the design
● cumulative increase in functionality
● greater depth of implementation
● greater stability begins to appear
● implement all details, not only those of central
architectural value
53
Unified Process
● Transition Phase
● Transfer of the system to the user community
● Includes manufacturing, shipping, installation, training, technical
support and maintenance
● Development team begins to shrink
● Control is moved to maintenance team
● Alpha, Beta, and final releases
● Software updates
● Integration with existing systems (legacy, existing versions, etc.)
Unified Process
● Production Phase
● Coincides with the deployment activity.
● Software is monitored
● Support for the infrastructure is provided
● Defect reports and requests for changes are submitted and
evaluated.
What is Agility?
● Meaning : able to move quickly and easily
● Effective response to change
● Effective communication among all
stakeholders
● Drawing the customer onto the team; eliminate
the “us and them” attitude
● Organizing a team so that it is in control of the
work performed
● Rapid, incremental delivery of software
56
Agility
● Agile engineers believe
● Current software development processes are too heavyweight
or cumbersome
● Too many things are done that are not directly related to
software product being produced
● Current software development is too rigid
● Difficulty with incomplete or changing requirements
● Short development cycles (Internet applications)
● More active customer involvement needed
● CMM(capability maturity model) focuses on process
57
● Agile methods are considered
● Lightweight
● People-based rather than Plan-based
● Set of principles
● Developed by Agile Alliance―Agile is dynamic, content
specific, aggressively change embracing, and growth
oriented
58
● An Agile Process
● Is driven by customer descriptions of what is required (scenarios)
● Recognizes that plans are short-lived
● Develops software iteratively with a heavy emphasis on construction
activities
● Delivers multiple software increments
● Adapts as changes occur
● Agile Methods
● Scrum
Extreme Programming
●
59
● Agility Principles
1. Highest priority is to satisfy the customer through early and continuous delivery of
valuable software.
2. Welcome changes from customer at anytime in the process. 3.Deliver working software
frequently
4.Business people and developers must work together daily throughout the project. 5.Build
projects around motivated individuals.
6. Have face-to-face conversation.
7. Working software is the primary measure of progress.
8. The sponsors, developers, and users should be able to maintain a constant pace
indefinitely.
9. Continuous attention to technical excellence and good design enhances agility.
10.Simplicity
11.The best architectures, requirements, and designs emerge from self–organizing teams.
12.At regular intervals, team tune up and adjust behavior accordingly
60
Plan-driven and agile
Plan Driven Approach
development Agile Approach
Plan Driven Approach identifies separate Agile approach consider design and
stages in the software process with outputs implementation to be the central activities
associated with each stage in the software process
61
Success in Industry
● The success of projects, which follow Extreme
Programming practices, is due to-
● Rapid development.
● Immediate responsiveness to the customer’s changing
requirements.
● Focus on low defect rates.
● System returning constant and consistent value to the customer.
● High customer satisfaction.
● Reduced costs.
● Team cohesion and employee satisfaction
62
Agile Methodologies
● Kanban - Kanban is a simple, visual means of managing
projects that emphasizes visibility.
● Scrum - Scrum focuses on breaking a project down into
sprints, and only planning and managing one sprint at a
time. Scrum also has unique project roles, including a
scrum master and Product Owner.
● Extreme Programming - It focuses on continuous
development and customer delivery and uses intervals or
sprints similar to a scrum methodology
Agile Methodologies
● Feature-Driven Development (FDD) - This methodology involved
creating software models every two weeks and requires a development
and design plan for every software model feature. Therefore, it has more
rigorous documentation requirements than XP. FDD breaks projects
down into five basic activities:
• Develop an overall model
• Plan by feature
• Design by feature
• Build by feature
Agile Methodologies
● Dynamic Systems Development Method (DSDM) -
The Dynamic Systems Development Method (DSDM) cropped up out of the need to provide a
common industry framework for rapid software delivery. Part of DSDM is the mandate that rework
is to be expected, and any development changes that occur must be reversible.This framework is
based on eight key principles:
• Focus on the business need
• Deliver on time
• Collaborate
• Develop iteratively
• Demonstrate control
Agile Methodologies
● Dynamic Systems Development Method (DSDM) -
The Dynamic Systems Development Method (DSDM) cropped up out of the need to provide a
common industry framework for rapid software delivery. Part of DSDM is the mandate that rework
is to be expected, and any development changes that occur must be reversible.This framework is
based on eight key principles:
• Focus on the business need
• Deliver on time
• Collaborate
• Develop iteratively
• Demonstrate control
Introduction to Agile Tools
● The Objective is to help in one or more activities in
agile development.
● Automated support for project planning, use case
development, requirement gathering, code generation
and testing.
● Project management tools focus on preparing
―Earned Value Charts‖ instead of preparing the Gantt
Charts.
● Purpose is to enhance the environment
JIRA
● Developed by Atlassian in 2002.
● Used for bug tracking, issue tracking and project management.
● Inherited from Japanese word ―Gojira meaning Godzilla
● JIRA is a competitor for Bugzilla.
● Written in Java and used for Project Management activities.
● Features:
● Plan development iterations
● Iteration reports
● Bug tracking
● JIRA Issues:
● It is a part of JIRA tool which is used to track bugs in the project.
● JIRA Components
● Sub-sections of project
● Used to group issues into smaller parts.
● Projects can be broken down into features, teams, modules, sub-projects, etc.
● We can generate reports, collect statistics and display it on dashboards
JIRA
● Reports in JIRA
● Progress of the project can be represented using
BurndownChart.
● Different reports like Sprint Report, Version Report,
Control Chart, Cumulative flow diagram, etc. are also
available.