Files
An-introduction-to-software…/workbook.ipynb
2025-05-09 10:12:21 +01:00

102 lines
4.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# An introduction to software development"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Introduction"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This OpenLearn free course is about software development, the discipline concerned with the methods, techniques and processes of building software artefacts: today's software development professional will need an in-depth knowledge of this discipline to be able to create software which best serves the needs of our digital economy and society. Software development is also a fast moving discipline, so that the software development professional also needs effective strategies for finding materials that track its leading edge.\n",
"\n",
"This OpenLearn course is an adapted extract from the Open University course [M813 *Software development*](http://www.open.ac.uk/postgraduate/modules/m813?LKCAMPAIGN=ebook_&MEDIA=ou)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Learning outcome"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"After studying this course, you should be able to:\n",
"\n",
"- Appreciate the engineering nature of software development.\n",
"- Describe key activities in software development and the role of modelling.\n",
"- Explain key concepts in software development such as risk and quality.\n",
"- Explain the basics of an object-oriented approach to software development.\n",
"- Describe a simple workflow for interacting with the published literature on software development."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1 Software development as engineering"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"G.F.C. Rogers, writing in the early 1980s, defined engineering as 'the practice of organising the design and construction of any artifice which transforms the physical world around us to meet some recognised need' (Rogers, 1983).\n",
"\n",
"Rogers was not a software developer, but an engineer specialising in thermodynamics and jet-engine development. Yet his definition captures the essence of engineering and has a wide applicability which extends to software. Much of our endeavour in software development is the design and construction of software to meet come recognised need of people, organisations or society at large with tangible effects on the real world."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> **Activity 1**\n",
">\n",
"> Look at Rogers' definition of engineering. How would you relate elements of that definition to your understanding of software development?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Even though I had to look up what \"artifice\" means to properly understand, it helped me understand that it means deception and trickery to achieve an end goal. While I personally don't agree with software development being trickery, we as software developers do tend to force the computer to do specific things to make it more usable or to add extra functionality.*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Discussion\n",
"\n",
"*Organising design and construction* can be related to what is commonly referred to as a 'software development process': if you develop software in the context of a commercial organisation, it is highly likely that you and your team will follow one such process to coordinate the construction and deployment of software.\n",
"\n",
"The *physical world around us* can be related to the context in which the software will be deployed the context could be the way an information system is organised, the device in the case of a software controller, or the internet for a web application.\n",
"\n",
"The *recognised need* in Rogers' definition relates to the problems the software is meant to solve what we commonly capture as requirements in software development. These problems are the reason why the software should exist, and express how software should affect its context once in operation.\n",
"\n",
"In this course, we take an engineering view of software development, and, guided by Rogers' definition, will explore in some detail the constituent elements of software development, and the interrelations between these elements."
]
}
],
"metadata": {
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 2
}