Software Development Lifecycle (SDLC) tools¶
Questions
- What are the key concepts and steps in the SDLC
- What are the tools for a project?
Content
- Introduction to some SDLC key features
- Theory of project tools and thinking
Learning outcomes of 'SDLC tools'
Learners can
- compare and contrast various software development tools.
- justify their relevance to specific development tasks.
- can give a reason for the benefits of the different tools for the SDLC
Instructor notes
Prerequisites are:
- Understanding the Software development Life Cycle
Lesson Plan:
- Total 30 min
- Theory 20
- Discussions 10 min
Changes
- clear goal
- clearer guide
- ask about level
- practical examples than just explain the concept.
- dictionary
- exercises
- practical things within exercise (not needing to scroll back and forth)
- clearer instructions
- solutions
- (advanced exercises)
The waterfall model¶
- Requirements
- Analysis and design
- Development
- Test
- Deployment and maintenance
flowchart
Requirements --> A["Analysis and design"] --> Development --> Test --> D["Deployment and maintenance"] -.-> Requirements
- Good approach for small and simple systems where the team knows the system and requirements very well.
Warning
- Error is spreading
- Small mistakes in the beginning will have large impact on the end result.
- e.g. bugs, architecture limiting extensions
- Large costs economically and timely
Other Models¶
- Modern principles:
- automated tests, continuous integration (CI)
- Deliver as fast as possible:
- small iterations are easier to manage
- Extreme Programming
- Pair programming
- Test-driven development
Conclusion
- Each team has unique requirements
- Don’t be afraid of trial and error
- More info in Software Development Lifecycle tomorrow
The tools/concepts for Developing a programming project¶
For small projects¶
Wilson et al. 2017: Good enough practices in Scientific computing
- project organization
- folders
- software development practices
- explanations
- naming
- eliminate duplication --> libraries
- dependencies
- DOI
- tracking changes
- collaborate
- documentation
- to-do lists
- strategies
- license
- citable
These cover WHAT DO I MEAN??
- Development
- Test
- Deployment
Also needed¶
Details
- good tools and practices for refactoring and devel steps
- focus scientific computing
- lacking planning steps like requirements, analysis and design
- Planning part with
- requirements
- analysis
- design
Parts to be covered
- ☑ Planning
- Pseudocode
- Unified Modelling Language (UML)
- ☑ Testing
- Different levels
- ☑ Source/version control
- Git etc
- ☑ Collaboration
- GitHub
- ☑ Reproducibility (for you and others)
- Deployment
- Dependencies
- (Workflows)
- ☑ Sharing
- open science
- citation
- licensing
- ☑ Documentation
- Tutorials
- How-to guides
- Explanation
- Reference
project organization¶
- wait to before lunch
software development practices¶
WHY?
- explanations
- naming
- eliminate duplication --> libraries
- dependencies
- DOI
plus testing
Connected to documentation
-
Software
- explanation comment at the start of the program (also "help function" as for './program -h')
- functions
- names for variables and functions
- eliminate duplication
- libraries
- test if you rely
- dependencies and requirements explicitly
- program behavior by if/else (possibly arguments from outside)
- run-all script and/or main program (also related to project organization)
- example/test data set
- DOI like zenodo
Tracking changes¶
WHY?
Git
Collaborate¶
WHY?
- documentation
- to-do lists
- strategies
- license
- citable
Also links to other sessions
-
- overview: README etc
- to-do list/issues
- communication strategies
- license explicit
- recommendations and why
- citable
Planning part with¶
- requirements
- analysis
- design
WHY?
Note
- "If I had nine hours to chop down a tree, I'd spend the first six sharpening my axe."
- Modelling sharpens your axe since it helps you think about what you're going to build, how to seek feedback, and where to make improvements.
- It prepares you to build the real thing to reduce any potential risk of failure. "
Note
- Planning step is to ...
- get an overview of the project/program.
- help planning writing the code
- identify parts needed
- risk analysis
-
Can be divided into analysis and design
- Analysis part is to state the problem and define inputs and outputs
- graphical tools like UML
- text
- if object-oriented programming: objects
- Design phase to find out the specific algorithms needed
- UML and/or pseudocode
- if object-oriented programming: classes
- if functional programming: functions/modules
- Analysis part is to state the problem and define inputs and outputs
-
More in afternoon!
Exercises¶
Think about
Why do we want to work with the mentioned tools?
What is Unified modelling language
What is source control and what are the benefits?
When to write documentation?
What does reproducibility mean?
Why sharing?
Summary of SDLC tools¶
- Now after the overview you are ready to dig deeper in the topics and try it out yourself!