The Software Process: Foundations of Software Engineering - Sweg-601

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 41

The Software

Process
Foundations of Software
Engineering -- SwEg-601
Dr. Hussien Seid
hussien.seid@aastu.edu.et

2/18/21
Software Process Structure

Chapter 3

02/18/2021 Foundations of Software Engineering - SwEg-601


-2-
Overview (1)
 The roadmap to building high quality software
products is software process.
 Software processes are adapted to meet the needs
of software engineers and managers as they
undertake the development of a software product.
 A software process provides a framework for
managing activities that can very easily get out of
control.
 Modern software processes must be agile,
demanding only those activities, controls, and
work products appropriate for team or product.
02/18/2021 Foundations of Software Engineering - SwEg-601 -3-
Overview (2)
 Different types of projects require different
software processes.
 The software engineer's work products
(programs, documentation, data) are
produced as consequences of the activities
defined by the software process.
 The best indicators of how well a software
process has worked are the quality,
timeliness, and long-term viability of the
resulting software product.
02/18/2021 Foundations of Software Engineering - SwEg-601 -4-
Software Process
 Framework for the activities, actions, and
tasks required to build high quality
software
 Defines approach taken as software is
engineered
 Adapted by creative, knowledgeable
software engineers so that it is appropriate
for the products they build and the
demands of the marketplace
02/18/2021 Foundations of Software Engineering - SwEg-601 -5-
Generic Process Framework
 Communication
 Planning
 Modeling
 Construction
 Deployment

02/18/2021 Foundations of Software Engineering - SwEg-601 -6-


Process Flow (1)
 Describes how each of the five framework
activities, actions, and tasks are organized with
respect to sequence and time
 Linear process flow executes each of the
framework activities in order beginning with
communication and ending with deployment
 Iterative process flow executes the activities in a
circular manner creating a more complete version
of the software with each circuit or iteration
 Parallel process flow executes one or more
activities in parallel with other activities
02/18/2021 Foundations of Software Engineering - SwEg-601 -7-
Process Flow (2)

02/18/2021 Foundations of Software Engineering - SwEg-601 -8-


Process Flow (3)

02/18/2021 Foundations of Software Engineering - SwEg-601 -9-


Task Sets
 Each software engineering action associated
with a framework activity can be
represented by different task sets
 Small one person projects do not require
task sets that are as large and detailed as
complex projects team oriented project task
sets
 Task sets are adapted to meet the specific
needs of a software project and the project
team characteristics
02/18/2021 Foundations of Software Engineering - SwEg-601 -10-
Process Patterns
 Templates or methods for describing project solutions
within the context of software processes
 Software teams can combine patterns to construct
processes that best meet the needs of specific projects
 Type
 Stage patterns (define problems with a framework
activity for the process)
 Task patterns (define problems associated with
engineering action or work task relevant to successful
software engineering practice)
 Phase patterns (define the sequence or flow of framework
activities that occur within a process)
02/18/2021 Foundations of Software Engineering - SwEg-601 -11-
Process Assessment and Improvement
 Standard CMMI Assessment Method for Process Improvement
(SCAMPI) provides a five step process assessment model that
incorporates five phases (initiating, diagnosing, establishing,
acting, learning)
 CMM-Based Appraisal for Internal Process Improvement
(CBAIPI) provides diagnostic technique for assessing the relative
maturity of a software organization
 SPICE (ISO/IE15504) standard defines a set of requirements for
process assessment
 ISO 9001:2000 for Software defines requirements for a quality
management system that will produce higher quality products
and improve customer satisfaction
02/18/2021 Foundations of Software Engineering - SwEg-601 -12-
Process models

Chapter 4

02/18/2021 Foundations of Software Engineering - SwEg-601


-13-
Prescriptive Process Models
 Originally proposed to bring order to the
chaos of software development
 They brought to software engineering
work and provide reasonable guidance to
software teams
 They have not provided a definitive
answer to the problems of software
development in an ever changing
computing environment
02/18/2021 Foundations of Software Engineering - SwEg-601 -14-
 Software Process Models
 Waterfall Model (classic life cycle - old fashioned but reasonable
approach when requirements are well understood)
 Incremental Models (deliver software in small but usable pieces,
each piece builds on pieces already delivered)
 Evolutionary Models
 Prototyping Model (good first step when customer has a legitimate need,
but is clueless about the details, developer needs to resist pressure to
extend a rough prototype into a production product)
 Spiral Model (couples iterative nature of prototyping with the controlled
and systematic aspects of the Waterfall Model)
 Concurrent Development Model (concurrent engineering - allows
software teams to represent the iterative and concurrent element of
any process model) 
02/18/2021 Foundations of Software Engineering - SwEg-601 -15-
Specialized Process Models
 Component-Based Development (spiral model
variation in which applications are built from
prepackaged software components called classes)
 Formal Methods Model (rigorous mathematical
notation used to specify, design, and verify computer-
based systems)
 Aspect-Oriented Software Development (aspect-
oriented programming - provides a process for
defining, specifying, designing, and constructing
software aspects like user interfaces, security, and
memory management that impact many parts of the
system being developed) 
02/18/2021 Foundations of Software Engineering - SwEg-601 -16-
Unified Process
 Use-case driven, architecture centric, iterative, and
incremental software process
 Attempts to draw on best features of traditional
software process models and implements many
features of agile software development
 Phases
 Inception phase (customer communication and planning)
 Elaboration phase (communication and modeling)
 Construction phase
 Transition phase (customer delivery and feedback)
 Production phase (software monitoring and support)

02/18/2021 Foundations of Software Engineering - SwEg-601 -17-


Personal Software Process (PSP)
 Emphasizes personal measurement of both work products and the
quality of the work products
 Stresses importance of indentifying errors early and to understand the
types of errors likely to be made
 Framework activities
 Planning (size and resource estimates based on requirements)
 High-level design (external specifications developed for components and
component level design is created)
 High-level design review (formal verification methods used to uncover
design errors, metrics maintained for important tasks)
 Development (component level design refined, code is generated, reviewed,
compiled, and tested, metric maintained for important tasks and work
results)
 Postmortem (effectiveness of processes is determined using measures and
metrics collected, results of analysis should provide guidance for modifying
the process to improve its effectiveness)
02/18/2021 Foundations of Software Engineering - SwEg-601 -18-
Team Software Process
  Objectives
 Build self-directed teams that plan and track their work, establish goals,
and own their processes and plans
 Show managers how to coach and motivate their teams and maintain
peak performance
 Accelerate software process improvement by making CCM Level 5
behavior normal and expected
 Provide improvement guidance to high-maturity organizations
 Facilitate university teaching of industrial team skills
 Scripts for Project Activities
 Project launch
 High Level Design
 Implementation
 Integration and system testing
 Postmortem 
02/18/2021 Foundations of Software Engineering - SwEg-601 -19-
Process Technology Tools
 Used to adapt process models to be used by
software project team
 Allow organizations to build automated models
of common process framework, task sets, and
umbrella activities
 These automated models can be used to
determine workflow and examine alternative
process structures
 Tools can be used to allocate, monitor, and even
control all software engineering tasks defined as
part of the process model
02/18/2021 Foundations of Software Engineering - SwEg-601 -20-
Agile development

Chapter 5

02/18/2021 Foundations of Software Engineering - SwEg-601


-21-
Overview (1)
 Agile software engineering represents a reasonable
compromise between to conventional software
engineering for certain classes of software and certain
types of software projects
 Agile development processes can deliver successful
systems quickly
 Agile development stresses continuous
communication and collaboration among developers
and customers

02/18/2021 Foundations of Software Engineering - SwEg-601 -22-


Overview (2)
 Agile software engineering embraces a philosophy that
encourages customer satisfaction, incremental software
delivery, small project teams (composed of software
engineers and stakeholders), informal methods, and
minimal software engineering work products
 Agile software engineering development guidelines
stress on-time delivery of an operational software
increment over analysis and design (the only really
important work product is an operational software
increment) 

02/18/2021 Foundations of Software Engineering - SwEg-601 -23-


Agility (1)
 An agile team is able to respond to changes during
project development
 Agile development recognizes that project plans must
be flexible
 Agility encourages team structures and attitudes that
make communication among developers and
customers more facile
 Eliminates the separation between customers and
developers
 Agility emphasizes the importance of rapid delivery of
operational software and de-emphasizes importance of
intermediate work products
02/18/2021 Foundations of Software Engineering - SwEg-601 -24-
Agility (2)
 Agility can be applied to any software process
as long as the project team is allowed to
streamline tasks and conduct planning in way
that eliminate non-essential work products
 The costs of change increase rapidly as a
project proceeds to completion, the earlier a
change is made the less costly it will be
 Agile processes may flatten the cost of change
curve by allowing a project team to make
changes late in the project at much lower costs

02/18/2021 Foundations of Software Engineering - SwEg-601 -25-


Agile Processes
 Are based on three key assumptions
 It is difficult to predict in advance which requirements or
customer priorities will change and which will not
 For many types of software design and construction activities
are interleaved (construction is used to prove the design)
 Analysis, design, and testing are not as predictable from a
planning perspective as one might like them to be
 Agile processes must be adapt incrementally to manage
unpredictability
 Incremental adaptation requires customer feedback
based on evaluation of delivered software increments
(executable prototypes) over short time periods

02/18/2021 Foundations of Software Engineering - SwEg-601 -26-


 Agility Principles (1)
 Highest priority is to satisfy customer through early and
continuous delivery of valuable software
 Welcome changing requirements even late in development,
accommodating change is viewed as increasing the
customer’s competitive advantage
 Delivering working software frequently with a preference
for shorter delivery schedules (e.g. every 2 or 3 weeks)
 Business people and developers must work together daily
during the project
 Build projects around motivated individuals, given them the
environment and support they need, trust them to get the job
done
 Working software is the primary measure of progress
02/18/2021 Foundations of Software Engineering - SwEg-601 -27-
 Agility Principles (2)
 Face-to-face communication is the most effective method of
conveying information within the development team
 Agile processes support sustainable development,
developers and customers should be able to continue
development indefinitely
 Continuous attention to technical excellence and good
design enhances agility
 Simplicity (defined as maximizing the work not done) is
essential
 The best architectures, requirements, and design emerge
from self-organizing teams
 At regular intervals teams reflects how to become more
effective and adjusts its behavior accordingly 
02/18/2021 Foundations of Software Engineering - SwEg-601 -28-
Agile Process Models
 Extreme Programming (XP)
 Scrum
 Dynamic Systems Development Method
(DSDM)
 Agile Modeling (AM)
 Agile Unified Process (AUP) 
 Assignment:
 Compare and contrast each model (4 pages)

02/18/2021 Foundations of Software Engineering - SwEg-601 -29-


Human aspect of Software Engineering

Chapter 6

02/18/2021 Foundations of Software Engineering - SwEg-601


-30-
Overview
 Individuals and teams build software, without skilled
motivated people success is unlikely
 A software team will only be successful if the team
dynamics are right
 Software engineers must work well with each other
and the project stakeholders
 It is important to understand the personal
characteristics of successful software engineers and the
psychology of software engineering work
 It is important to appreciate the impact of social media,
the cloud, and other collaborative tools on team
software engineering process 
02/18/2021 Foundations of Software Engineering - SwEg-601 -31-
Traits of Successful Software Engineers
  Sense of individual responsibility
 Acutely aware of the needs of team members and
stakeholders
 Brutally honest about design flaws and offers
constructive criticism
 Resilient under pressure and does not allow
performance to suffer
 Heightened sense of fairness (credits colleagues and
avoids conflict of interests)
 Attention to detail (performance, cost, quality)
 Pragmatic (software engineering is not a religion) 
02/18/2021 Foundations of Software Engineering - SwEg-601 -32-
Boundary Spanning Roles
 Ambassador – represents team to outside
constituencies to negotiate time and resources or
to obtain feedback
 Scout – crosses team boundaries to collect
organizational information
 Guard – protects access to team work products
and artifacts
 Sentry – controls information sent to team by
stakeholders
 Coordinator – focuses on communicating
horizontally across the team and organization  
02/18/2021 Foundations of Software Engineering - SwEg-601 -33-
Effective Software Team Attributes
 Sense of purpose
 Sense of involvement
 Sense of trust
 Sense of improvement
 Diversity of team member skill sets 

02/18/2021 Foundations of Software Engineering - SwEg-601 -34-


Generic Agile Teams
 Stress individual competency coupled with
group collaboration as critical success factors
 People trump process and politics can trump
people
 Agile teams as self-organizing and have
many structures
 Planning is kept to a minimum and
constrained only by business requirements
and organizational standards  

02/18/2021 Foundations of Software Engineering - SwEg-601 -35-


XP Team Values
 Communication – close informal verbal
communication among team members and
stakeholders and establishing meaning for
metaphors as part of continuous feedback
 Simplicity – design for immediate needs nor future
needs
 Feedback – derives from the implemented
software, the customer, and other team members
 Courage – the discipline to resist pressure to
design for unspecified future requirements
 Respect – among team members and stakeholders
02/18/2021 Foundations of Software Engineering - SwEg-601 -36-
Role of Social Media in Software Engineering
 Blogs – can be used share information with team members and
customers
 Microblogs (e.g. Twitter) – allow posting of real-time messages
to individuals following the poster
 Targeted on-line forums – allow participants to post questions or
opinions and collect answers
 Social networking sites (e.g. Facebook, LinkedIn) – allows
connections among software developers and related
technologists for the purpose of sharing information or finding
problem expertise
 Social book marking (e.g. Delicious, Stumble, CiteULike) –
allow developers to keep track of and share web-based resources
of interest to a community of like-minded individuals  

02/18/2021 Foundations of Software Engineering - SwEg-601 -37-


Cloud Services
  Benefits
 Provides access to all software engineering work products and
artifacts
 Removes device dependencies and is available every where
 Provides new avenues for distributing and testing beta software
 Allows software engineering information developed by one member
to be available to all team members
 Concerns
 Dispersing the cloud services over resources outside the control of
the software team may present reliability and security risks due
 With a large number of services distributed across the cloud the
potential for interoperability problems becomes high
 Cloud development services need to stress usability and performance
which often is on conflict with security, privacy, and reliability  

02/18/2021 Foundations of Software Engineering - SwEg-601 -38-


Collaboration Tool Services
 Namespace or repository that allows secure, private
storage or work products
 Calendar for coordinating meetings and project events
 Templates that allow team members to create artifacts
that have common look and feel
 Metrics support to allow quantitative assessment of
each team member’s contributions
 Communication analysis tracks messages and isolates
patterns that may imply problems or issues to resolve
 Artifact clustering showing work product
dependencies 

02/18/2021 Foundations of Software Engineering - SwEg-601 -39-


Team Decision Making Complications 
 Problem complexity
 Uncertainty and risk associated with the decision
 Work associated with decision has unintended effect on
another project object (law of unintended consequences)
 Different views of the problem lead to different
conclusions about the way forward
 Global software teams additional challenges associated
with collaboration, coordination, and coordination
difficulties
 Distance complicates communication and coordination,
cultural differences are a common side effect that can
affect global software team collaboration
02/18/2021 Foundations of Software Engineering - SwEg-601 -40-
The END
Any question?
02/18/2021 Foundations of Software Engineering - SwEg-601 -41-

You might also like