Announcement: UW Game Jam: Jan 27-31
https://uwaterloo.ca/games-institute/uwgame-jam
1
Announcements (cont’d)
• Project Manual is posted on CourseLink – ContentProjectMaterials
• Class / Lab Schedule (which includes readings) posted to CourseLink
– AGoogleSheetsfilethatwillbekeptup-to-datethroughtheterm – ContentClassSchedule
• Reminder: Complete Background Survey by FRIDAY (TOMORROW)
• Ifyouneedaccommodationfortheproject(i.e.If you may not be able to attend weekly labs) contact Prof. Scott by FRIDAY (TOMORROW)
CIS 3760
Software Engineering
2
CIS 3760: Software Engineering Intro to Software Engineering &
Software Engineering Processes
Instructor: Prof. Stacey Scott
School of Computer Science
University of Guelph https://www.uoguelph.ca/computing/people/stacey-scott stacey.scott@uoguelph.ca
© 2017-21 Stacey D. Scott
Outline
• Software engineering basics
• General software process model – Softwareengineeringprocessflows
• Considerations for client/user involvement
CIS 3760
Software Engineering
4
What is Software Engineering?
As defined by the ISO/IEC/IEEE International Standard 24765 (2010-12-15), Software Engineering is:
the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software
(ISO: International Standards Organization, IEC: International Electrotechnical Commission, IEEE: Institute of Electrical and Electronics Engineers)
CIS 3760
Software Engineering
5
Why is Software Development difficult?
• The problem is usually ambiguous
• The requirements are usually unclear and changing
when they become clearer
• The problem domain (or application domain) is
complex, and so is the solution domain
• The development process is difficult to manage
• Software offers extreme flexibility
• These issues make software design a wicked problem
CIS 3760
Software Engineering *from Bruegg & Dutoit, 2013; McConnell (Code Complete 2), 2004 6
Wicked Problems
A “wicked” problem is a problem:
“that could be clearly defined only by solving it, or by solving part of it.
“This paradox implies, essentially, that you have to “solve” the problem once in order to clearly define it and then solve it again to create a solution that works.”
– Rittel & Webber, 1973, cited by McConnell, Code Complete 2, Ch 5
CIS 3760
Software Engineering
7
https://miro.medium.com/max/875/1*jiu-XyGQth179jSKR1XW8A.png
Breakout Room Practice
Discuss:
What impact does the fact that software design is a wicked problem have on our approach to
software development?
8
CIS 3760
Software Engineering
9
Waterfall vs. Agile
Outline
Software engineering basics
General software process model
– Softwareengineeringprocessflows
• Considerations for client/user involvement
CIS 3760
Software Engineering
10
Common Software Engineering Processes
CIS 3760
Software Engineering
11
A Generic Software Process Model
Any SE Process has
• A process framework • Umbrella activities
• Framework activities
CIS 3760
Software Engineering
12
Framework Activities
– Plan & Analyze
– Communication with stakeholders
– Research, Create requirements
– Design/Modeling
– Analysisofrequirements – Design
– Build/Test
– Implementation / coding – Testing
– Deployment
CIS 3760
Software Engineering
13
A view of framework activities you’re more familiar with…
CIS 3760
Software Engineering
14
Umbrella Activities
– Project tracking and control
– Risk management
– Quality assurance
– Technical reviews
– Measurement
– Configuration management – (e.g. version control)
– Reusability management
– Work product preparation
CIS 3760
Software Engineering
15
Umbrella activities are all of the activities that facilitate the core framework activities
Project tracking and control Quality assurance Work product preparation
Technical reviews
Measurement
CIS 3760
Software Engineering
16
Configuration management
Process Framework
Each activity resides within a framework or model that defines their relationship with the software process and with one another.
Sample Software processes:
• Linear
• Iterative
• Incremental • Evolutionary
CIS 3760
Software Engineering
17
Outline
Software engineering basics
General software process model
Software engineering process flows
Considerations for client/user involvement
CIS 3760
Software Engineering
18
Process Flow: Linear
• A linear process flow executes each of the key framework activities in sequence, beginning with communication and culminating with deployment.
http://softwareengineeringmca.blogspot.ca/2016/10/a-generic-process-model-iterative-process-flow-linear-process- evolutionary-process-parallel-process.html
CIS 3760
Software Engineering
19
Iterative vs. incremental vs. evolutionary
• Iterative simply means some processes or activities are repeated. Not necessarily all.
• Many consider evolutionary and incremental to be equivalent. Yet, formally, the International Standards Organization (ISO), differentiates these by how much requirements work is done up front.
CIS 3760
Software Engineering
20
UR=User requirements SR=Software requirements AD=Architectural design DD=Detailed design & coding TR=Transfer of s/w to operations OM=Operations & maintenance
Iterative & Incremental Development (IID) Processes
• Iterative,evolutionary,andincrementalprocessflowsallaim to “avoid a single-pass sequential, document-driven, gated-step approach” (Larman & Basili, 2003)
• Theyrepeatoneormoreactivities,buildingupthesolution,and use testing to improve the solution
• Thus,theyarecommonlyreferredtoallasiterativeand incremental development (IID) approaches
“The basic idea behind iterative enhancements is to
develop a software system incrementally, allowing
the developer to take advantage of earlier,
incremental delivery versions of the system.”
CIS 3760
Software Engineering
21
– Basili & Turner (1975), as cited by Larman & Basili (2003)
IID Example: Agile Software Engineering Process
Key features:
Client/User involvement
• Incremental software development of high-quality, working code
IID Process Flow
• Envisioned system is “sliced” into small portions, each portion being developed during each cycle (or sprint)
• All activities done each sprint, each new portion is integrated into existing system each sprint
• System definition & reqs. adapt through continual user involvement during project
CIS 3760
Software Engineering
22
IID Example: Spiral lifecycle (Barry Boehm)*
Key features:
• Risk analysis
• Prototyping
IID Process Flow
• Iterative framework so ideas can be checked and evaluated
• Explicitly encourages considering alternatives
• Still involves significant up-front requirements analysis
5 Useful for large, complex projects
CIS 3760
Software Engineering
*(www.id-book.com) 23
IID Example: Spiral lifecycle (Barry Boehm)*
Key features:
• Risk analysis
• Prototyping
IID Process Flow
• Iterative framework so ideas can be checked and evaluated
• Explicitly encourages considering alternatives
• Still involves significant up-front requirements analysis
5 Useful for large, complex projects
CIS 3760
Software Engineering
Spiral Arrow by Federico Panzano from the Noun Project *(www.id-book.com)24
IID Example: Spiral lifecycle (Barry Boehm)*
Key features:
• Risk analysis
• Prototyping
IID Process Flow
• Iterative framework so ideas can be checked and evaluated
• Explicitly encourages considering alternatives
• Still involves significant up-front requirements analysis
5 Useful for large, complex projects
4 Limited user involvement
Client/User involvement
CIS 3760
Software Engineering
*(www.id-book.com)25
Some Clarification on Terminology: SE Process == SE Lifecycle
• “Lifecycle”isanothertermusedtodescribea software engineering process flow
• Both describe the sequence of activities undertaken by the software team from the “birth” (or beginning) to the “death” (or the end) of a software system
• The term lifecycle is borrowed from biology, where it is used to describe the “series of changes in the life of an organism” (dictionary.com)
CIS 3760
Software Engineering
26
Outline
Software engineering basics
General software process model
Software engineering process flows
Considerations for client/user involvement
CIS 3760
Software Engineering
27
Different client/user engagement across Waterfall and Agile software lifecycles
Client involvement
User involvement
CIS 3760
Software Engineering
28
Client/User involvement
How much to involve user in SE process?
• What are advantages of frequent user involvement?
• What are disadvantages of frequent user involvement?
CIS 3760
Software Engineering
29
Final Thoughts
Software Engineering is a Problem-Solving Activity
• Analysis:
– Understand the nature of the problem and break the problem into pieces
• Synthesis:
– Putthepiecestogetherintoalargestructure
• For problem solving we use techniques, methodologies, and tools
• All SE process models consist of core framework activities, umbrella activities, and process framework (i.e. process flow that link framework activities together)
CIS 3760
Software Engineering
*from Bruegg & Dutoit, 2013 30
Associated Readings
• Iterative and Incremental Development: A Brief History, an article by Larman and Basili (on CourseLink)
CIS 3760
Software Engineering
31
Additional Material (Optional)
32
Process Flow: Iterative
• An iterative process flow repeats one or more of the framework activities before proceeding to the next.
http://softwareengineeringmca.blogspot.ca/2016/10/a-generic-process-model-iterative-process-flow-linear-process- evolutionary-process-parallel-process.html
CIS 3760
Software Engineering
33
Process Flow: Evolutionary / Incremental
• Evolutionaryprocessflow,whichissimilartoan incremental process flow, executes the activities in a “circular” manner.
http://softwareengineeringmca.blogspot.ca/2016/10/a-generic-process-model-iterative-process-flow-linear-process- evolutionary-process-parallel-process.html
CIS 3760
Software Engineering
34