0% found this document useful (0 votes)
96 views88 pages

(Software Engineering) : (Software Products and Project Management: Software Product Management and Prototyping)

This document provides an overview of a course on software engineering and project management. The course covers topics such as software product management, agile software engineering, cloud-based software, microservices architecture, software engineering practices, and software testing. It also discusses concepts relevant to both software engineering and project management, including the software development lifecycle, project management knowledge areas and process groups.

Uploaded by

naeemakhtaracma
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
96 views88 pages

(Software Engineering) : (Software Products and Project Management: Software Product Management and Prototyping)

This document provides an overview of a course on software engineering and project management. The course covers topics such as software product management, agile software engineering, cloud-based software, microservices architecture, software engineering practices, and software testing. It also discusses concepts relevant to both software engineering and project management, including the software development lifecycle, project management knowledge areas and process groups.

Uploaded by

naeemakhtaracma
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 88

軟體工程

(Software Engineering)
軟體產品與專案管理:
軟體產品管理,原型設計
(Software Products and Project Management:
Software product management and prototyping)
1091SE02
MBA, IM, NTPU (M5118) (Fall 2020)
Tue 2, 3, 4 (9:10-12:00) (B8F40)
Min-Yuh Day
戴敏育
Associate Professor
副教授
Institute of Information Management, National Taipei University
國立臺北大學 資訊管理研究所
https://web.ntpu.edu.tw/~myday
2020-09-22 1
課程大綱 (Syllabus)
週次 (Week) 日期 (Date) 內容 (Subject/Topics)
1 2020/09/15 軟體工程概論 (Introduction to Software Engineerin
g)
2 2020/09/22 軟體產品與專案管理:軟體產品管理,原型設計

(Software Products and Project Ma


nagement:
Software product management and prototyping)
3 2020/09/29 敏捷軟體工程:敏捷方法、 Scrum 、極限程式設計

(Agile Software Engineering: Agile


methods, Scrum,
and Extreme Programming)
4 2020/10/06 功能、場景和故事 (Features, Scenarios, and Storie
s)
5 2020/10/13 軟體架構:架構設計、系統分解、分散式架構 2
課程大綱 (Syllabus)
週次 (Week) 日期 (Date) 內容 (Subject/Topics)
7 2020/10/27 基於雲的軟體:虛擬化和容器、軟體即服務
(Cloud-Based Software: Virtuali
zation and containers,
Everything as a service, Software as a service)
8 2020/11/03 雲端運算與雲軟體架構
(Cloud Computing and Cloud So
ftware Architecture)
9 2020/11/10 期中報告 (Midterm Project Report)
10 2020/11/17 微服務架構: RESTful 服務、服務部署
(Microservices Architecture, R
ESTful services,
Service deployment)
11 2020/11/24 軟體工程產業實務
(Industry Practices of Soft 3
課程大綱 (Syllabus)
週次 (Week) 日期 (Date) 內容 (Subject/Topics)
13 2020/12/08 軟體工程個案研究 II
(Case Study on Software Engineering II)
14 2020/12/15 可靠的程式設計 (Reliable Programming)
15 2020/12/22 測試:功能測試、測試自動化、
測試驅動的開發、程式碼
審查
(Testing: Functional testin
g, Test automation,
Test-driven development, and Code reviews)
16 2020/12/29 DevOps 和程式碼管理:
程式碼管理和 DevOps 自動化

(DevOps and Code Manage


ment: 4
Ian Sommerville (2019),
Engineering Software Products:
An Introduction to Modern Software Engineering,
Pearson.

Source: https://www.amazon.com/Engineering-Software-Products-Ian-Sommerville/dp/013521064X 5
Ian Sommerville (2015),
Software Engineering,
10th Edition, Pearson.

Source: https://www.amazon.com/Software-Engineering-10th-Ian-Sommerville/dp/0133943038 6
Software
Engineering
7
Software Engineering and
Project Management

Analyze Design Build Test Deliver


Requirements System and Implementation Integration Operation
definition Software and and and
design unit testing system testing maintenance

Project Management

8
Software Engineering
• Software engineering is an engineering discipli
ne that is concerned with all aspects of softwa
re production from the early stages of system
specification through to maintaining the syste
m after it has gone into use.

Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 9


What is software?
• Computer programs and associated document
ation. Software products may be developed fo
r a particular customer or may be developed f
or a general market.

Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 10


What are the attributes of good so
ftware?
• Good software should deliver the required fun
ctionality and performance to the user and sh
ould be maintainable, dependable and usable.

Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 11


What is software engineering?
• Software engineering is an engineering discipli
ne that is concerned with all aspects of softwa
re production from initial conception to opera
tion and maintenance.

Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 12


What are the fundamental softwa
re engineering activities?
• Software specification, software development,
software validation and software evolution.

Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 13


What is the difference between so
ftware engineering and computer
science?
• Computer science focuses on theory and fund
amentals; software engineering is concerned
with the practicalities of developing and delive
ring useful software.

Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 14


What are the best software engine
ering techniques and methods?
• While all software projects have to be professionally
managed and developed, different techniques are ap
propriate for different types of system.
• For example, games should always be developed usin
g a series of prototypes whereas safety critical contro
l systems require a complete and analyzable specifica
tion to be developed.
• There are no methods and techniques that are good f
or everything.
Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 15
What are the costs of software en
gineering?
• Roughly 60% of software costs are developme
nt costs, 40% are testing costs.
• For custom software, evolution costs often exc
eed development costs.

Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 16


Information Management

Management
Information Systems (MIS)

Information Systems
17
Information Management (MIS)
Information Systems

Source: Kenneth C. Laudon & Jane P. Laudon (2014), Management Information Systems: Managing the Digital Firm, Thirteenth Edition, Pearson. 18
Fundamental MIS Concepts
Business
Challenges

Management

Information Business
Organization
System Solutions

Technology

Source: Kenneth C. Laudon & Jane P. Laudon (2014), Management Information Systems: Managing the Digital Firm, Thirteenth Edition, Pearson. 19
Software products
• Software products are generic software syste
ms that provide functionality that is useful to a
range of customers.
• Software products:
– Large-scale business systems (e.g. MS Excel)
– Personal products (e.g. Evernote)
– Simple mobile phone apps and games (e.g. Suduk
o).

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 20
Software product engineering
• Software product engineering methods and te
chniques have evolved from software enginee
ring techniques that support the development
of one-off, custom software systems.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 21
Software projects
• Custom software systems are still important fo
r large businesses, government and public bod
ies.
• They are developed in dedicated software proj
ects.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 22
Project
• A project is a
temporary endeavor
undertaken to create a
unique product, service, or result.

Source: Project Management Institute (2017), A Guide to the Project Management Body of Knowledge (PMBOK Guide), Sixth Edition, PMI 23
Project Management Knowledge Areas
1. Project Integration Management
2. Project Scope Management
3. Project Schedule Management
4. Project Cost Management
5. Project Quality Management
6. Project Resource Management
7. Project Communications Management
8. Project Risk Management
9. Project Procurement Management
10. Project Stakeholder Management
Source: Project Management Institute (2017), A Guide to the Project Management Body of Knowledge (PMBOK Guide), Sixth Edition, PMI 24
Project Management Process Groups
1. Initiating Process Group
2. Planning Process Group
3. Executing Process Group
4. Monitoring and Controlling Process Group
5. Closing Process Group

Source: Project Management Institute (2017), A Guide to the Project Management Body of Knowledge (PMBOK Guide), Sixth Edition, PMI 25
Project-based software engineering
CUSTOMER

Problem

generates helps-with

implemented-by
1 Requirements Software

CUSTOMER and DEVELOPER


DEVELOPER 26
Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson.
Project-based software engineering
• The starting point for the software development is a set of ‘soft
ware requirements’ that are owned by an external client and w
hich set out what they want a software system to do to support
their business processes.
• The software is developed by a software company (the contract
or) who design and implement a system that delivers functional
ity to meet the requirements.
• The customer may change the requirements at any time in resp
onse to business changes (they usually do). The contractor must
change the software to reflect these requirements changes.
• Custom software usually has a long-lifetime (10 years or more)
and it must be supported over that lifetime.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 27
Product software engineering
DEVELOPER

1 Opportunity

inspires realizes

implemented-by
Product
Software
features

DEVELOPER DEVELOPER
Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 28
Product software engineering
• The starting point for product development is a business opport
unity that is identified by individuals or a company.
They develop a software product to take advantage of this oppo
rtunity and sell this to customers.
• The company who identified the opportunity design and imple
ment a set of software features that realize the opportunity and
that will be useful to customers.
• The software development company are responsible for decidin
g on the development timescale, what features to include and
when the product should change.
• Rapid delivery of software products is essential to capture the
market for that type of product.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 29
Software product line
• A set of software products that share a comm
on core.
• Each member of the product line includes cust
omer-specific adaptations and additions.
• Software product lines may be used to implem
ent a custom system for a customer with speci
fic needs that can’t be met by a generic produ
ct.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 30
Platform
• A software (or software + hardware) product t
hat includes functionality so that new applicati
ons can be built on it.
• An example of a platform that you probably us
e is Facebook.
• It provides an extensive set of product functio
nality but also provides support for creating ‘F
acebook apps’.
• These add new features that may be used by a
business or a Facebook interest group.
Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 31
Software execution models
Stand-alone execution Hybrid execution Software as a service
User’s computer User’s computer User’s computer

User interface User interface


Product functionality User interface
Partial functionality
User data (browser or app)
User data

Additional functionality
Product updates Product functionality
User data backups
User data
Product updates

Vendor’s servers Vendor’s servers Vendor’s servers

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson.
Software execution models
• Stand-alone
– The software executes entirely on the customer’s compute
rs.
• Hybrid
– Part of the software’s functionality is implemented on the
customer’s computer but some features are implemented
on the product developer’s servers.
• Software service
– All of the product’s features are implemented on the devel
oper’s servers and the customer accesses these through a
browser or a mobile app.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 33
Comparable
software development
• The key feature of product development is that there is no ext
ernal customer that generates requirements and pays for the
software.
• Student projects
– Individuals or student groups develop software as part of t
heir course. Given an assignment, they decide what featur
es to include in the software.
• Research software
– Researchers develop software to help them answer questi
ons that are relevant to their research.
• Internal tool development

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 34
The product vision
• The starting point for software product development
is a ‘product vision’.
• Product visions are simple statements that define the
essence of the product to be developed.
• The product vision should answer three fundamental
questions:
– What is the product to be developed?
– Who are the target customers and users?
– Why should customers buy this product?

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 35
Moore’s vision template
• FOR (target customer)
• WHO (statement of the need or opportunity)
• The (PRODUCT NAME) is a (product category)
• THAT (key benefit, compelling reason to buy)
• UNLIKE (primary competitive alternative)
• OUR PRODUCT (statement of primary differen
tiation)

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 36
Vision template example
• “FOR a mid-sized company's marketing and sales
departments
WHO need basic CRM functionality,
THE CRM-Innovator is a Web-based service
THAT provides sales tracking, lead generation, an
d sales representative support features that impr
ove customer relationships at critical touch point
s.
UNLIKE other services or package software produ
cts,
OUR product provides very capable services at a
moderate cost.”
Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 37
Information sources for developin
g a product vision
• Domain experience
• Product experience
• Customer experience
• Prototyping and playing around

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 38
Information sources for developin
g a product vision
• Domain experience
– The product developers may work in a particular a
rea (say marketing and sales) and understand the s
oftware support that they need.
– They may be frustrated by the deficiencies in the s
oftware they use and see opportunities for an imp
roved system.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 39
Information sources for developin
g a product vision
• Product experience
– Users of existing software (such as word processin
g software) may see simpler and better ways of pr
oviding comparable functionality and propose a n
ew system that implements this.
– New products can take advantage of recent techn
ological developments such as speech interfaces.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 40
Information sources for developin
g a product vision
• Customer experience
– The software developers may have extensive discu
ssions with prospective customers of the product t
o understand the problems that they face, constrai
nts, such as interoperability, that limit their flexibili
ty to buy new software, and the critical attributes
of the software that they need.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 41
Information sources for developin
g a product vision
• Prototyping and playing around
– Developers may have an idea for software but nee
d to develop a better understanding of that idea a
nd what might be involved in developing it into a p
roduct.
– They may develop a prototype system as an experi
ment and ‘play around’ with ideas and variations u
sing that prototype system as a platform.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 42
A vision statement for
the iLearn system
• FOR teachers and educators WHO need a way to help student
s use web-based learning resources and applications, THE iLea
rn system is an open learning environment THAT allows the se
t of resources used by classes and students to be easily config
ured for these students and classes by teachers themselves. U
NLIKE Virtual Learning Environments, such as Moodle, the foc
us of iLearn is the learning process rather than the administra
tion and management of materials, assessments and coursew
ork. OUR product enables teachers to create subject and age-
specific environments for their students using any web-based
resources, such as videos, simulations and written materials t
hat are appropriate.
• Schools and universities are the target customers for the iLearn system as it will significantly i
mprove the learning experience of students at relatively low cost. It will collect and process le
arner analytics that will reduce the costs of progress tracking and reporting.
Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 43
The Essence of
Strategic Marketing (S
TP)
Segmentation
Targeting
Positioning
Source: Philip Kotler and Kevin Lane Keller (2016), Marketing Management, 15th edition, Pearson. 44
Customer
Value
Source: Philip Kotler and Kevin Lane Keller (2016), Marketing Management, 15th edition, Pearson. 45
Value
the sum of the
tangible and intangibl
e
benefits and costs
Source: Philip Kotler and Kevin Lane Keller (2016), Marketing Management, 15th edition, Pearson. 46
Value
Total
customer
benefit
Customer
perceived
value
Total
customer
cost

Source: Philip Kotler and Kevin Lane Keller (2016), Marketing Management, 15th edition, Pearson. 47
Customer Perceived Value
Product benefit

Services benefit
Total
customer
Personnel benefit
benefit
Image benefit Customer
perceived
Monetary cost value
Time cost
Total
customer
Energy cost
cost
Psychological cost

Source: Philip Kotler and Kevin Lane Keller (2016), Marketing Management, 15th edition, Pearson. 48
Business Model
8 7 2 4 1
Key Customer
Activities Relationships

Key Value Customer


Partners Proposition Segments
6 3
Key
Channels
Resources

9 Cost 5 Revenue
Structure Streams

Source: Alexander Osterwalder & Yves Pigneur, Business Model Generation: A Handbook for Visionaries, Game Changers, and Challengers, Wiley, 2010. 49
Software product management
• Software product management is a business activity that focu
ses on the software products developed and sold by the busin
ess.
• Product managers (PMs) take overall responsibility for the pro
duct and are involved in planning, development and product
marketing.
• Product managers are the interface between the organization,
its customers and the software development team. They are i
nvolved at all stages of a product’s lifetime from initial concep
tion through to withdrawal of the product from the market.
• Product managers must look outward to customers and poten
tial customers rather than focus on the software being develo
ped

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 50
Product management concerns
Business
needs

Product
manager

Technology Customer
constraints experience

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 51
Product management concerns
• Business needs
– PMs have to ensure that the software being developed me
ets the business goals of the software development compa
ny.
• Technology constraints
– PMs must make developers aware of technology issues tha
t are important to customers.
• Customer experience
– PMs should be in regular contact with customers and pote
ntial customers to understand what they are looking for in
a product, the types of users and their backgrounds and th
e ways that the product may be used.
Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 52
Technical interactions of
product managers
Product
vision
management
Product User stories
backlog and
management scenarios
Product
manager
Acceptance Customer
testing testing

User
interface
design
Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 53
Technical interactions of
product managers
• Product vision management
– The product manager may be responsible for helpi
ng with the development of the product vision.
– The should always be responsible for managing th
e vision, which involves assessing and evaluating p
roposed changes against the product vision.
– They should ensure that there is no ‘vision drift’

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 54
Technical interactions of
product managers
• Product roadmap development
– A product roadmap is a plan for the development,
release and marketing of the software.
– The PM should lead roadmap development and sh
ould be the ultimate authority in deciding if chang
es to the roadmap should be made.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 55
Technical interactions of
product managers
• User story and scenario development
– User stories and scenarios are used to refine a pro
duct vision and identify product features.
– Based on his or her knowledge of customers, the P
M should lead the development of stories and sce
narios.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 56
Technical interactions of
product managers
• Product backlog creation and management
– The product backlog is a prioritized ‘to-do’ list of w
hat has to be developed.
– PMs should be involved in creating and refining th
e backlog and deciding on the priority of product f
eatures to be developed.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 57
Technical interactions of
product managers
• Acceptance testing
– Acceptance testing is the process of verifying that
a software release meets the goals set out in the p
roduct roadmap and that the product is efficient a
nd reliable.
– The PM should be involved in developing tests of t
he product features that reflect how customers us
e the product.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 58
Technical interactions of
product managers
• Customer testing
– Customer testing involves taking a release of a pro
duct to customers and getting feedback on the pro
duct’s features, usability and business.
– PMs are involved in selecting customers to be invo
lved in the customer testing process and working
with them during that process.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 59
Technical interactions of
product managers
• User interface design
– Product managers should understand user limitati
ons and act as surrogate users in their interactions
with the development team.
– They should evaluate user interface features as th
ey are developed to check that these features are
not unnecessarily complex or force users to work i
n an unnatural way.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 60
Product prototyping
• Product prototyping is the process of developi
ng an early version of a product to test your id
eas and to convince yourself and company fun
ders that your product has real market potenti
al.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 61
Product prototyping
• You may be able to write an inspiring product
vision, but your potential users can only really
relate to your product when they see a workin
g version of your software.
• They can point out what they like and don’t lik
e about it and make suggestions for new featu
res.
• A prototype may be also used to help identify
fundamental software components or services
and to test technology.
Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 62
Product prototyping
• Building a prototype should be the first thing tha
t you do when developing a software product.
• Your aim should be to have a working version of
your software that can be used to demonstrate i
ts key features.
• You should always plan to throw-away the proto
type after development and to re-implement th
e software, taking account of issues such as secu
rity and reliability.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 63
Two-stage prototyping
1. Feasibility demonstration
– You create an executable system that demonstrate
s the new ideas in your product.
– The aims at this stage are to see if your ideas actu
ally work and to show funders and/or company m
anagement the original product features that are
better than those in competing products.
2. Customer demonstration

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 64
Two-stage prototyping
1. Feasibility demonstration
2. Customer demonstration
– You take an existing prototype created to demonst
rate feasibility and extend this with your ideas for
specific customer features and how these can be r
ealized.
– Before you develop this type of prototype, you ne
ed to do some user studies and have a clearer idea
of your potential users and scenarios of use.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 65
Software process models
• The waterfall model
– This takes the fundamental process activities of specification,
development, validation, and evolution and represents them a
s separate process phases such as requirements specification,
software design, implementation, and testing.
• Incremental development
– This approach interleaves the activities of specification, develo
pment, and validation. The system is developed as a series of
versions (increments), with each version adding functionality t
o the previous version.
• Integration and configuration
– This approach relies on the availability of reusable components or system
s. The system development process focuses on configuring these compone
nts for use in a new setting and integrating them into a system.
Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 66
Software Development Life Cycle (SDLC)
The waterfall model
Requirements
definition

System and
Software design

Implementation
and unit testing

Integration and
system testing

Operation and
maintenance

Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 67


Incremental development
Concurrent
activities

Initial
Specification
version

Outline Intermediate
Intermediate
Development Intermediate
versions
description versions
versions

Validation Final
version

Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 68


Reuse-oriented
software engineering
Configure
Application
application
system system
Software available
discovery
Requirements Requirements
specification refinement Adapt
Software components
evaluation Integrate
Components
system
available
Develop new
components

Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 69


Prototype development

Establish Define
Develop Evaluate
prototype prototype
prototype prototype
objectives functionality

Prototyping Outline Executable Evaluation


plan definition Prototyping report

Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 70


Incremental delivery

Define Assign Design Develop


outline requirements system system
requirements to increments architecture increment
System
incomplete ?

Validate Integrate Validate Deploy


increment increment system increment

System
complete ?

Final
system

Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 71


The process improvement model
Process
Measure

Process Process
Change Analyze

Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 72


Capability maturity levels
Level 5
Optimizing

Level 4
Quantitatively
Defined

Level 3
Defined

Level 2
Managed

Level 1
Initial

Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 73


Plan-based and Agile development
Plan-based development

Requirements Requirements Design and


engineering specification implementation

Requirements change requests

Agile development
Requirements Design and
engineering implementation

Source: Ian Sommerville (2015), Software Engineering, 10th Edition, Pearson. 74


Uncertainty and Complexity Model I
nspired by the Stacey Complexity Model
High Uncertainty

Ch
Fundamentally

a
risky
Requirements Uncertainty

os
Co
m
pl
ex
Co

Adaptive
m

approaches
pl
ica

work well here


Low Uncertainty

te
Si

Linear
m

approaches
pl

work well here


e

Low Uncertainty High Uncertainty


Technical Degree of Uncertainty
Source: Project Management Institute (2017), Agile Practice Guide, Project Management Institute 75
Characteristics of
Four Categories of Life Cycles
Approach Requirements Activities Delivery Goal

Performed once for


Predictive Fixed the entire project
Single delivery Manage cost

Repeated until Correctness of


Iterative Dynamic correct
Single delivery
solution

Performed once for Frequent smaller


Incremental Dynamic a given increment deliveries
Speed

Customer value via


Repeated until Frequent smaller
Agile Dynamic correct deliveries
frequent deliveries
and feedback

Source: Project Management Institute (2017), Agile Practice Guide, Project Management Institute 76
The Continuum of Life Cycles
High
Incremental Agile
Frequency of Delivery

Predictive Iterative
Low

Low High
Degree of Change
Source: Project Management Institute (2017), Agile Practice Guide, Project Management Institute 77
Predictive Life Cycle

Analyze Design Build Test Deliver

Source: Project Management Institute (2017), Agile Practice Guide, Project Management Institute 78
Iterative Life Cycle

Prototype Refine

Analyze Build
Analyze Deliver
Design Test

Source: Project Management Institute (2017), Agile Practice Guide, Project Management Institute 79
A Life Cycle of
Varying-Sized Increments

Analyze Analyze Analyze


Design Design Design
Build Build Build
Test Test Test
Deliver Deliver Deliver

Source: Project Management Institute (2017), Agile Practice Guide, Project Management Institute 80
Iteration-Based and Flow-Based A
gile Life Cycles
Iteration-Based Agile

Requirements Requirements Requirements Requirements Requirements Requirements


Analysis Analysis Analysis Analysis Repeat Analysis Analysis
Design Design Design Design as needed Design Design
Build Build Build Build … Build Build
Test Test Test Test Test Test

Flow-Based Agile
Requirements Requirements Requirements Requirements Requirements
Analysis Analysis Analysis Analysis Analysis
Design Design Design Design Design
Repeat
Build Build Build Build Build
as needed
Test Test Test Test Test

the number of the number of the number of the number of the number of
features in the features in features in the WIP features in the features in the WIP
WIP limit the WIP limit limit WIP limit limit

Source: Project Management Institute (2017), Agile Practice Guide, Project Management Institute 81
Summary
• Software products are software systems that i
nclude general functionality that is likely to be
useful to a wide range of customers.

• In product software engineering, the same co


mpany is responsible for deciding on the featu
res that should be part of the product and the
implementation of these features.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 82
Summary
• Software products may be delivered as stand-
alone systems running on the customer’s com
puters, hybrid systems or service-based syste
ms.
• In hybrid systems, some features are impleme
nted locally and others are accessed over the I
nternet.
• All product features are remotely accessed in s
ervice-based products.
Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 83
Summary
• A product vision should succinctly describe wh
at is to be developed, who are the target custo
mers for the product and why they should buy
the product that you are developing.
• Domain experience, product experience, custo
mer experience and an experimental software
prototype may all contribute to the developm
ent of the product vision.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 84
Summary
• Key responsibilities of product managers are p
roduct vision ownership, product roadmap de
velopment, creating user stories and the prod
uct backlog, customer and acceptance testing
and user interface design.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 85
Summary
• Product managers work at the interface betwe
en the business, the software development te
am and the product customers.
• They facilitate communications between these
groups.

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 86
Summary
• You should always develop a product prototyp
e to refine your own ideas and to demonstrate
the planned product features to potential cust
omers

Source: Ian Sommerville (2019), Engineering Software Products: An Introduction to Modern Software Engineering, Pearson. 87
References
• Ian Sommerville (2019), Engineering Software Products: An In
troduction to Modern Software Engineering, Pearson.
• Ian Sommerville (2015), Software Engineering, 10th Edition, P
earson.
• Titus Winters, Tom Manshreck, and Hyrum Wright (2020), Soft
ware Engineering at Google: Lessons Learned from Programmi
ng Over Time, O'Reilly Media.
• Project Management Institute (2017), A Guide to the Project
Management Body of Knowledge (PMBOK Guide), Sixth Editio
n, Project Management Institute
• Project Management Institute (2017), Agile Practice Guide, Pr
oject Management Institute

88

You might also like