This lesson is in the early stages of development (Alpha version)

Principles of Software Engineering: Glossary

Key Points

Software Development Lifecycle
  • Software engineering takes a wider view of software development beyond programming (or coding).

  • Software you produce has inherent value.

  • Always assume your code will be read and used by others (including a future version of yourself).

  • Additionally, aim to make your software reusable by others.

  • Reproducibility is a cornerstone of science, so ensure your software-generated results are reproducible.

  • Following a process makes development predictable, can save time, and helps ensure each stage of development is given sufficient consideration before proceeding to the next.

  • Ensuring requirements are sufficiently captured is critical to the success of any project.

An Introduction to Python
  • We’ll be using Python for the following parts of the material, here’s an introduction / refresher.

Functions and Classes
  • Functions allow us to decompose a problem down into smaller tasks.

  • Classes allow us to organise data which represents a distinct concept.

Programming Paradigms
  • A Paradigm describes a way of structuring reasoning about code.

  • Different programming languages are suited to different paradigms.

  • Different paradigms are suited to solving different classes of problems.

  • Pure functions are functions with deterministic behaviour and no side effects.

  • Classes allow us to organise data into distinct concepts.

Best Practices in Writing Code
  • Source code is designed for humans, not machines.

  • Source code is read much more often than it is written.

  • Always assume that someone else will read your code at a later date, including yourself.

  • Good indentation greatly enhances code readability.

  • Name things like variables, functions, and modules to indicate purpose.

  • Good comments describe the reasons behind coding approaches as well as complex behaviour.

  • Community coding conventions help you create more readable software projects that are easier to contribute to.

  • Maintainable code is easier to understand, modify, extend, and fix.

  • Assume any piece of code you write will be reused.

  • Technical debt is incurred when quick solutions are prioritised over good solutions, but is paid off in the cost of maintaining the code.

  • Change the way you write code to make maintainability a key goal.

Survey

Glossary

The glossary would go here, formatted as:

{:auto_ids}
key word 1
:   explanation 1

key word 2
:   explanation 2

({:auto_ids} is needed at the start so that Jekyll will automatically generate a unique ID for each item to allow other pages to hyperlink to specific glossary entries.) This renders as:

key word 1
explanation 1
key word 2
explanation 2