SE3318 - Week 3
SE3318 - Week 3
SE3318
SPRING 2024-2025
MEASURE TWICE, CUT ONCE
PREREQUISITES OVERVIEW
Importance of Prerequisites
Problem-Definition Prerequisite
Determine the Kind of So!ware
Requirements Prerequisite
Architecture Prerequisite
IMPORTANCE OF PREREQUISITES
Plan a project
Create a business case
Develop comprehensive and accurate requirements
Design high-quality architectures
WHAT TO DO TO NOT START WITHOUT PREREQUISITES?
Appeal to logic
Appeal to analogy
Appeal to data
APPEAL TO DATA
BOSS READINESS
"We’d better start coding right away because we’re going to have a
lot of debugging to do."
"We haven’t planned much time for testing because we’re not going
to find many defects."
"We’ve investigated requirements and design so much that I can’t
think of any"
PROBLEM-DEFINITION PREREQUISITE
PROBLEM-DEFINITION PREREQUISITE
POP QUIZ: PROBLEM DEFINITION
Software Concept
Develop a Version
System Accretion
STAGED DELIVERY
Temporal Segments
Alpha Beta RC
Software Concept
Requirement Analysis
Architectural Design
Detailed Design
Code, Debug
Test
Delivery
What is the most obvious example for Staged Delivery life cycle model?
Pop Answer: Staged Delivery
What is the most obvious so!ware example for Staged Delivery life cycle
model?
SPIRAL DELIVERY
SPIRAL DELIVERY
Are all the inputs to the system specified, including their source,
accuracy, range of values, and frequency?
Are all the outputs from the system specified, including their
destination, accuracy, range of values, frequency, and format?
Are all the external communication interfaces specified, including
handshaking, error-checking, and communication protocols?
Are all the tasks the user wants to perform specified?
Is the data used in each task and the data resulting from each task
specified?
SPECIFIC NONFUNCTIONAL (QUALITY) REQUIREMENTS
Linter rules
Coding conventions
Design patterns
Writing specifications
Developer testing
YOUR LOCATION ON THE TECHNOLOGY WAVE
Environment management.
Dependency management
Language version, compiler version.
Framework choice and version.
A version control tool.
Coding standards
Policy on non-standard language features.
Editor, linter, debugger, test framework.
TOOLS : ENVIRONMENT/CONFIGURATION MANAGEMENT
Development
Chocolatey
Homebrew
Aptitude
Deployment
Ansible
Docker
LXC
TOOLS : DEPENDENCY MANAGEMENT
Java: Maven
Python: pyenv+virtualenv, Pipenv
Javascript: npm
TOOLS : VERSION CONTROL
Subversion svn
Contributors must be connected to repository server.
Centralized; Single repository server
Trunk-based development Contributors create branches.
Git git
Operates locally; contributors work on clones of the main
repository.
Distributed; copies distributed to clones, less risk of failure on
main repository.
Merge and Conflict resolution; changes easier to integrate.
MAJOR CONSTRUCTION PRACTICES: TEAMWORK
Development framework
Code review tasks
Sprint Review
Retrospective
Version control and integration workflow
Branch restrictions
Integration rules
Pull Request rules
TEAMWORK : CODE REVIEW : ADVANTAGES
Longer time to ship: Code reviews help junior developers learn from
more senior team members.
Pull focus from other tasks: A code review can pull their focus away
from other high priority tasks
Large reviews mean longer review times: Large code reviews are
challenging to assess.
TEAMWORK : SPRINT REVIEW
What went well? Section that all team members write cards about
things went well.
What can be improved? Section that cards about things didn't go
smoothly during sprint.
Action points derived: Cards are voted and action points derived
from points to be improved and stories written and assigned to
responsible team members.
TEAMWORK : DEVELOPMENT FRAMEWORK : SCRUM
Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 Day 9 Day 10
Standup Standup Standup Standup Standup Standup Standup Standup Standup Standup
Sprint
Review
Determine
Sprint
Goals Write
Set Sprint Goals
Stories
for Sprint
Goals Assign Developer to Story
Fork a
Branch
from DEV
Formalize
Specificat
ions
Develop
Feature
Develop
Smoke
Tests Create Pull Request
to DEV Static
Code
Analysis
Development Procedure
Merge
Conflicts
with DEV
Merge
into DEV
Run Unit
Tests
Plan Code
Reviews
Assign Reviewer
Send Notification
Review
Request
Review Vote
Send Notification
Review
Request
Review Vote
LABORATORY : THIS WEEK ON LAB