An Introduction To Software Development Printable
An Introduction To Software Development Printable
development
About this free course
This free course is an adapted extract from the Open University course M813 Software development
http://www.open.ac.uk/postgraduate/modules/m813.
This version of the content may include video, images and interactive content that may not be optimised
for your device.
You can experience this free course as it was originally designed on OpenLearn, the home of free
learning from The Open University:
www.open.edu/openlearn/science-maths-technology/introduction-software-development/content-sec-
tion-0.
There you’ll also be able to track your progress via your activity record, which you can use to
demonstrate your learning.
Copyright © 2016 The Open University
Intellectual property
Unless otherwise stated, this resource is released under the terms of the Creative Commons Licence
v4.0 http://creativecommons.org/licenses/by-nc-sa/4.0/deed.en_GB. Within that The Open University
interprets this licence in the following way:
www.open.edu/openlearn/about-openlearn/frequently-asked-questions-on-openlearn. Copyright and
rights falling outside the terms of the Creative Commons Licence are retained or controlled by The Open
University. Please read the full text before using any of the content.
We believe the primary barrier to accessing high-quality educational experiences is cost, which is why
we aim to publish as much free content as possible under an open licence. If it proves difficult to release
content under our preferred Creative Commons licence (e.g. because we can’t afford or gain the
clearances or find suitable alternatives), we will still release the materials for free under a personal end-
user licence.
This is because the learning experience will always be the same high quality offering and that should
always be seen as positive – even if at times the licensing is different to Creative Commons.
When using the content you must attribute us (The Open University) (the OU) and any identified author in
accordance with the terms of the Creative Commons Licence.
The Acknowledgements section is used to list, amongst other things, third party (Proprietary), licensed
content which is not subject to Creative Commons licensing. Proprietary content must be used (retained)
intact and in context to the content at all times.
The Acknowledgements section is also used to bring to your attention any other Special Restrictions
which may apply to the content. For example there may be times when the Creative Commons Non-
Commercial Sharealike licence does not apply to any of the content even if owned by us (The Open
University). In these instances, unless stated otherwise, the content may be used for personal and non-
commercial use.
We have also identified as Proprietary other material included in the content which is not subject to
Creative Commons Licence. These are OU logos, trading names and may extend to certain
photographic and video images and sound recordings and any other material as may be brought to your
attention.
Unauthorised use of any of the content may constitute a breach of the terms and conditions and/or
intellectual property laws.
We reserve the right to alter, amend or bring to an end any terms and conditions provided here without
notice.
All rights falling outside the terms of the Creative Commons licence are retained or controlled by The
Open University.
Head of Intellectual Property, The Open University
Introduction
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.
This OpenLearn course is an adapted extract from the Open University course
M813 Software development.
Activity 1
Look at Rogers’ definition of engineering. How would you relate elements of that
definition to your understanding of software development?
Discussion
Organising design and construction can be related to what is commonly known 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.
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.
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.
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.
Note: validation and verification are sometimes confused. One way to understand
the distinction is to think of validation as addressing the question ‘are we solving the
right problem?’ and verification as addressing the question ‘are we solving the problem
right?’
Activity 2
If requirements are validated against the problem, and the implemented system is
verified against those requirements, then the system should indeed be addressing the
problem. Why then do we still need to validate the system against the problem during
testing?
Discussion
The core of the problem is that the system needs to satisfy the requirements in its
context of operation. During software design and construction we rely on assumptions
about the properties of that context – which might turn out to be inaccurate once the
system is in operation, or we may discover that there are other critical properties which
we have overlooked. The context of operation of a software system is often a complex
place whose characteristics and behaviour are difficult to grasp and predict completely
and accurately, even with the best engineering effort.
While this course will focus primarily on software development activities, it is important to
remember that the process does not end with a deployed product. The full software life-
cycle also includes:
● maintenance: makes sure that the deployed solution continues to address the
problem throughout the time it is in operation, and handles its decommissioning at
the end of the life-cycle.
Note: although software maintenance is a well understood term, some authors prefer to
talk about software evolution, meaning that software continually changes over its life-
cycle, with changes often triggered by changes in context and in stakeholders’ needs.
As a consequence, software development activities typically carry on post-deployment
as new releases of the software are developed and deployed.
Activity 3
Do a web search for ‘software development processes’. Name three such processes
that recur in your search results. What are their key characteristics, and differences
with reference to the activities mentioned above?
A popular family of iterative and incremental processes emerged at the start of this
century, covered by the umbrella term of Agile development (Cockburn and Highsmith,
2001; Fowler and Highsmith, 2001). These processes encourage continual realignment of
development goals with the needs and expectations of the customer, and provide ‘lighter-
weight’, faster and ‘nimbler’ software development processes that can adapt to the
inevitable changes in customer requirements. Hence, such processes promote frequent,
small, incremental cycles of analysis, design, implementation and testing. Also, working
code is valued above other types of artefact, such as models or other documentation.
Extreme Programming (XP) (Beck, 2000) and Scrum (Schwaber and Beedle, 2001) are
two well-known Agile development approaches.
Within the same timescale of Agile development, model-driven-development (Se-
lic, 2003) also arose. This approach sees models and not code as the key artefacts in
software development. According to this approach, models allow the developer to work at
a much higher level of abstraction than code, and hence be closer to the business and its
processes; also, models are platform-independent and hence decoupled from specific
technology. Well defined syntax (how models should be defined) and semantics (how they
should be interpreted) allow code to be derived from models through transformations and
a suite of automated tools are being developed to support the approach. With model-
driven development, the boundary between analysis and design becomes blurred, with
development progressing seamlessly through transformed models.
Activity 4
Think of various descriptions used in software development. Which do you think
pertain to the formal and non-formal domains identified by Turski?
Discussion
You may have considered some of the following.
Code is intrinsically a formal description, usually expressed in a language with formally
specified syntax and semantics. Software design can also be captured formally,
although semi-formal descriptions (e.g., sketches) can also be used to describe it.
Requirements statements are usually non-formal descriptions, often expressed in
natural language, that try to capture properties of formal and informal domains,
e.g., how people might interact with the system and how the system might respond in
turn. Some requirements can be specified using formal languages and notations; this
is particularly true in certain domains, as with embedded safety-critical software,
although the limitations of formal language for expressing general requirements are
widely acknowledged.
Building upon Turski’s thinking, M. Jackson and others (Jackson, 1995; Gunter et al.,
2000; Hall and Rapanotti, 2003) proposed a view of software development encompassing
two distinct but related ‘spaces’: the problem space, in which the problem to be
addressed is located; and the solution space, in which the software solution resides. In
this view, descriptions, whether formal or non-formal, are further categorised into
indicative and optative: an indicative description is a statement of fact – that is, an
assumption which is believed to be true and on which further reasoning can be
constructed; an optative description is a statement of wish – that is, something we would
like to become true at some point. To give an example, a requirement is an optative
description, as it states something that it is hoped will be true once the system is designed
and operational; on the other hand, an existing business rule is an indicative description,
as it states how the business works currently; that is, this is something taken for granted in
developing the system.
Note: one way to understand the distinction between optative and indicative is to
consider optative descriptions as statements of something we wish to be true in the
future, but which may not be true now, and indicative descriptions as statements of
something which is true now and which we expect still to be true in the future.
In this view, specifications provide the point of contact between the two spaces: a
specification captures optative requirements as to how the software system should
behave at its interface with the real world. As such, the specification can be validated
against the problem: we can check whether building a software system to that
specification will address the problem; and the software can be verified against the
specification: i.e., we can check that the software has been built in such a way that it will
satisfy the specification. In this view, therefore, an effective software development
process would have to deal adequately with building and separating optative and
indicative descriptions across the problem/solution divide, and transform optative
requirements before development into indicative statements once the software is in
operation.
Activity 5
Consider the problem and solution spaces proposed by Jackson and others. How
would you describe the way the waterfall process spans the two? What about iterative
and incremental development processes?
Discussion
The waterfall model assumes that we proceed in linear fashion from the problem to the
solution space: first, through analysis, we understand the problem and express
requirements and specification; then we proceed to design and implementation in the
solution space, and test the outcome against the specification.
On the other hand, iterative and incremental processes assume that we cross the
problem/solution divide many times: at each iteration we revisit the problem space to
identify new requirements and define new specifications; we then proceed to the
solution space for related design, implementation and testing.
The work of Turski and of Jackson and others provides useful insights into the nature of
the descriptions required in software development, and processes can be, and have
been, defined which establish when and where such descriptions are required. However,
there are further dimensions to software development which are widely recognised as
being highly influential, and which should be taken into account. One such dimension in
those descriptions is fitness for purpose – and how this can be established. The other
dimension is the design rationale, i.e., the explicit articulation and capture of the reasons
behind and justifications for decisions made when designing an artefact, including
alternatives considered and trade-offs.
Hall and Rapanotti (2009) have proposed a view of software development as spanning
two orthogonal spaces: the design space, to which the descriptions of Turski and
Jackson and others belong; and the assurance space, where consideration of design
rationale and fitness for purpose take place and related descriptions are generated. In this
view, contact between the two spaces occurs throughout the development process, both
in the problem and solution spaces, at points at which assurance artefacts are shared and
checked by different stakeholders – for example, as with a business analyst checking
understanding of business processes with the customer, or a software architect reviewing
and approving an architectural blueprint for a system. Hence, the fitness for purpose of
any description, from problem statement to working code, can only be established by the
stakeholders involved in the process, bringing stakeholders to the heart of software
development and highlighting their identification and participation in the process as a key
success factor. As a consequence, in this view, an effective software development
process would have to deal adequately with building and separating descriptions not just
across the problem/solution divide, but also across the design/assurance divide, and
would also have to identify key representative stakeholders and account for their
involvement in the development process.
Activity 6
Consider Hall and Rapanotti’s design and assurance spaces. To what extent does the
waterfall process address the relationship between these two spaces? What about
iterative and incremental development processes?
Discussion
The waterfall model fits primarily within the design space, as it makes no explicit
reference to assurance and its relevant stakeholders. The only activity that could be
related to the assurance space is testing, which can be interpreted as developing
assurance descriptions – the set of test cases – to demonstrate specific properties of
the working software, often to the customer. Similar observations can be made of
iterative and incremental processes, which have developed directly from the waterfall
model.
Historically, software development processes have focused primarily on the design space.
However, the importance of the assurance space has long been acknowledged and
recognised, and a parallel discipline of project management has developed in a bid to
address some of the assurance needs of software development processes highlighted by
Hall and Rapanotti (2009). It should be noted that the importance of stakeholders is also
explicitly recognised by Agile development, whose manifesto explicitly values individuals
and interactions as well as customer collaboration.
volatility of the business world and the way this affected its relationship with the formal
world of the computer. Therefore, the waterfall assumption soon showed itself to be
inadequate for many real-world applications.
Volatility also arises from the nature of technology: rapid technological change also drives
changes in the context in which software is deployed, and any connection between the
informal world outside the computer and the formal world of the computer must link two
volatile targets. Due to volatility, the resulting relationship between requirements and
architectures is an order of magnitude more complex than for stable systems, and the
treatment of it offered by traditional techniques, such as those derived from Royce’s
processes, are increasingly seen as inadequate. Indeed, such volatility is now recognised
as one of the greatest challenges software development faces.
4 Risk
As we have discussed, complexity and volatility are a cause of difficulty in software
development and increase the risk of failure: failure to deliver in time and on budget, or to
meet stakeholders’ needs in context. In turn, failure can have profound consequences: it
may lead to tangible harm or losses (e.g. harm to people or damage to goods, loss of
contracts, loss of revenue, decrease in market share, penalties in contracts) or intangible
harm (e.g. loss of trust, credibility or future business opportunities, damage to the
reputations of people, organisations or trademarks, dissemination of confidential
information, loss of intellectual-property rights).
Note: risk assessment (how to identify risk) and risk management (how to deal with
risk) have been the subject of study in a wide variety of domains, from business to
engineering, health or statistics, and a vast literature exists on the subject.
● Problem-related risks: these are risks associated with misunderstanding the problem
and the stakeholders’ requirements, or making inappropriate assumptions as to the
context of the system.
● Solution-related risks: these are factors associated with developing software which
does not address the identified problem or is not fit for its purpose.
Activity 7
Do a web search on software development risk. Which recurrent factors can you
identify? How do they relate to the categories above?
Discussion
Your list will be different from ours. Among the recurrent risk factors we identified are:
5 Software quality
In very abstract terms, the quality of an artefact, whether it is software or otherwise,
relates to the presence of positive characteristics of the artefact which will satisfy
stakeholders’ needs and expectations in a particular real-world context. Quality also
relates to the absence of negative characteristics which may harm or frustrate
stakeholders and fail to meet their needs and expectations in that context. It follows that
quality is not an absolute property: it can only be judged and measured with reference to
stakeholders’ needs and expectations within their context. This is particularly true of
software, which is more often than not developed to address real-world problems as part
of much wider systems, usually involving people, processes and other forms of
technology.
So quality has to do with fitness for purpose, and the hallmark of a good quality product
is that its diverse stakeholders are satisfied with it both now and in the foreseeable future.
Managing software quality is then a continuous process aimed at ensuring that the
software’s fitness for purpose is maintained throughout the software’s life-cycle.
Failure to attain fitness for purpose can have disastrous consequences, as witnessed by
the many examples of software failure which have been reported over the years.
Activity 8
Do a web search on software failures. What did you find?
Discussion
You may have found plenty of high-profile software failures reported by the media and
in the academic literature. We found a long list of postings and articles. For instance,
Lake (2010) summarised 11 ‘epic’ software failures attributable to deliberate decisions
by programmers (rather than, say, faults or malicious attacks), in fields ranging from
space exploration and telecommunications systems, in which the loss was mainly
financial, to medical and aviation applications, in which the result was a catastrophic
loss of lives.
Activity 9
What do you think the quality expectations for an air traffic control software system
might be? What about those for a personal diary mobile app?
Discussion
As lives depend on it, an air traffic control system will need to be highly dependable
and safe to operate, and provide accurate and reliable information in real time which
can be readily interpreted and understood by highly trained people – particularly the air
traffic controllers who need to direct pilots. Lack of integrity of data or unavailability of
the system could have catastrophic consequences.
Some aspects of dependability – such as data integrity and reliability – would also be
desirable but not nearly as critical in a personal diary app. Ease of use would also be
desirable as the app is likely to be used by people with all levels of skills.
While quality expectations might be different in different domains, there is a common need
to build quality into product design, to increase the likelihood that the product is fit for
purpose. Here is yet another role for software development processes: while there is no
absolute guarantee, process quality is likely to lead to product quality, and the concern for
achieving and maintaining quality needs to permeate all software activities throughout the
software life-cycle.
Note: this is in line with Hall and Rapanotti’s view of assurance as a key factor in the
development process.
Related to software quality is a distinction which is often made between the functional and
non-functional characteristics that fit-for-purpose software should exhibit. Many such
characteristics have been identified and variously classified in the literature.
Some of these characteristics – those which are most relevant to this course – are listed
below.
● Functional fitness determines the extent to which a system does what the customer
wants and needs.
● Usability determines the effort required to learn about, operate, prepare input for
and understand the output of a system – that is, how easy the system is to use.
● Flexibility determines the effort required to modify an operational system – that is,
how easily the system can be changed while in service.
● Testability determines the effort required to test a system to ensure that it carries out
its intended function – that is, how easily the system can be tested to show that the
customer’s requirements have been met.
● Reusability determines the extent to which a system (or system component) can be
reused in other applications – that is, how easy it is to reuse some of the software to
make future developments more cost-effective.
Activity 10
Based on your own experience and practice, in what way do you think the various
activities forming part of the software development process may impact on the quality
of the released product?
Discussion
You may have covered some of the following points.
In analysis, validation of problem understanding and of what is required of the system
is key to quality, as this determines both the desired functionalities of the system and
its many non-functional characteristics. Eliciting knowledge directly from stakeholders,
e.g., users or businesspeople, and discussing our assumptions explicitly with them
would increase confidence in the accuracy of our understanding.
During design and implementation, following tried-and-tested approaches, good
practice and sound principles increases the chance of achieving high-quality software.
Access to experienced developers able to review the software is also a way to
maximise quality all round.
Models are forms of description often adopted in software development. They are
abstractions used to represent and communicate what is important, devoid of
unnecessary detail, and to help developers deal with the complexity of the problem being
investigated or the solution being developed.
Modelling is used in other forms of design and engineering. For instance, architects
develop different models of buildings – some addressing structures, others materials,
others ergonomics, and so on. The same happens with modelling in software
development: some models are used to capture properties of the problem domain, such
as key elements of the business or how its processes work, while other models are used
to consider different aspects of the software, such as how the code is divided up and
organised, or how various elements of the software communicate and work together.
Each model is an abstract representation of some view of the system, and such views
may change as the development process unfolds.
Activity 11
Consider different types of model you have encountered in your own practice of
software development. What was their purpose? How were they expressed?
Note: the distinction between ‘domain models’ and ‘design models’ was introduced by
Cook and Daniels (1994). They called the domain model the ‘essential model’, and the
design model the ‘implementation model’. ‘Business model’ is also often used in the
literature with a meaning similar to domain model.
Domain modelling plays an important role in understanding the need in context, before
suggesting any software solution. The important elements of the context, whether they
are people, products, departments, sensors, alarms or operators, need to be identified.
Only by understanding the need in context, and how, why and with what consequences
that need changes, can a fit-for-purpose software solution be specified. However,
modelling the domain may sometimes be unnecessary – for instance, when there is an
accepted need for a well-defined software system to solve a well-understood problem. In
such a case, modelling the domain would not bring much advantage.
Domain and specification modelling may produce very similar models, but the
interpretations of the models are different; the former types of model are about real-world
entities, the latter are about software representations of those entities.
Activity 12
How would you describe the relation between these three modelling perspectives and
the traditional split between analysis and design in software development?
Discussion
You may consider domain modelling and specification modelling as analysis activities
– that is, concerned with understanding what a problem is, and specifying what is
required of the software system to be developed. As you might expect, design
modelling corresponds to the design activity.
Models are usually constructed by following specific linguistic conventions, often referred
to as techniques, and the models’ level of formality will depend on the formality of those
conventions; for instance, models can be based on narrative, diagrams or even
mathematics.
Well known modelling techniques in software development are defined under theUnified
Modelling Language (UML). UML is one of the most popular and successful standards
currently used by the software industry. UML is the result of the merging of several
notations that appeared during the 1980s and early 1990s, augmented by new techniques
and even a mechanism to extend the notation further. You will not learn UML in its entirety,
but concentrate on a subset of the most commonly adopted techniques.
in an attempt to unify their methods. They named their joint effort the Unified Method.
Rumbaugh and Booch were soon joined by Ivar Jacobson and his colleagues, authors of
Object-Oriented Software Engineering (OOSE), in the development of what became known
as the Unified Modeling Language (UML); see Jacobson et al. (1992). As UML has evolved
it has incorporated feedback from the object community, and has won the support of many
people and organisations which considered the idea of a unified modelling language a
valuable one. UML was then submitted for standardisation to the Object Management
Group (OMG), a consortium of several large software companies that produces and
maintains computer-industry specifications. UML was formally adopted in 1997. The UML
specification is constantly updated. At the time of writing (2013), UML 2.5 is near
completion; this is the basis of the notation we use in this course.
7 Object orientation
With the growth in code complexity came the idea of breaking up large sequential
programs into more manageable, and smaller, named pieces of code. Initially these
tended to represent actions, which in turn could be broken down into smaller and smaller
actions, until a unit was reached that was small enough to understand, write and test
independently. This type of code decomposition proved a useful device and became the
basis of procedural and functional styles of programming. Some of these are still in use,
although we will not consider them in this course.
The early1960s saw the idea of structuring software around the data structures or objects
that were manipulated, rather than around the actions that manipulated them. This was
the start of object-oriented programming, which subsequently developed into a set of
concepts, principles and techniques used throughout software development to analyse
software problems and design and construct software solutions. We use the term object
orientation to refer to this holistic approach.
You should note that because of its roots in programming, object orientation has a distinct
bias toward solution space descriptions. Nevertheless, over the years useful techniques
applicable across the problem/solution divide have been developed.
Although object orientation is relevant to many domains of application, it is seen as
particularly advantageous in business computing. It was observed that as businesses
change, the things their computer systems manipulate remain fairly stable, even though
the ways these systems are used may change rapidly. For instance, commercial systems
will most likely always need to represent taxes, goods, payments, prices and deliveries,
even though the business rules determining who is creditworthy, how orders are taken,
and whether payment is required before delivery may all change frequently. Therefore,
one advantage of structuring software around objects meaningful to the business is that it
gives more stability and better traceability from the business to the code.
As design progresses, modelling describes the software system in greater and greater
detail, with the allocation of responsibilities to different software objects so that the
functionality of the entire system is distributed among the classes. In object terms a
design model will represent the software classes and objects, the messages exchanged
between them and their order.
Note, however, that structuring the software around objects per se does not guarantee
quality software as an outcome. This can only be achieved through the judicious
application of sound design and construction principles, and indeed object orientation
comes equipped with a rich set of principles and tried-and-tested design solutions to
recurrent design problems.
Note: this concept is in turn an evolution of the idea of programming with abstract data
types (Liskov and Zilles, 1974), which developed in the 1970s.
For instance, an object representing a bank account in software may include both a
variable holding the account’s current balance and a number of operations for credit and
debit transactions. Moreover, we expect that only those operations can access the data
directly: other software wanting to affect the current balance would have to make use of
those operations via an established interface. This particular feature of an object is called
encapsulation.
Activity 13
What do you think the advantages of encapsulation might be?
Discussion
Encapsulation provides an explicit boundary separating information about which
operations are available and information on how such operations are implemented. In
our example, outside the account object, available operations are advertised via their
interface only, which indicates how they can be invoked. The implementation of the
operations, i.e. how they materially access and modify data, and how the data are
represented through variables, are not visible outside the object. In this way, as long as
the interface remains unchanged, the operation implementation or the data
representation can be modified without affecting other software.
Activity 14
What do you think the advantages of distinguishing classes and objects might be?
Discussion
Classes allow for more succinct code and foster code reuse and flexibility. By defining
a class we are defining the properties and behaviour of all the objects of that class that
are created during software operation; when a change is needed, only the class code
needs to change, with such changes automatically propagated to all its instances.
No serious software system consists of a single object. Instead there will be a collection of
objects which collaborate to achieve the functionality of the whole system. Collaboration
occurs when one object requests a service from another object in order to perform some
task. To fulfil a particular collaboration, each object takes on a different role: the object that
makes the request can be seen as the client, and the object that receives the request
(and provides the service in response) as the supplier. The request is communicated to
the supplier from the client by message passing based on the objects’ interfaces: the
client sends a message to the supplier which on receipt executes a corresponding
operation; when the supplier has completed the execution of its operation it returns a
message answer to the client. Both the message and message answer may convey data
between the objects, with the interface specifying the type of the arguments and the result
of the operation.
Object collaboration through message passing is at the core of computation in an object-
oriented software system, and many forms of collaboration can be forged between
objects. In software development, a range of principles and techniques have been defined
to design and implement object collaborations resulting in quality software.
Stage 1: Preparation
Stage 2: Discovery
Stage 3: Assimilation
Stage 4: Recording
Stage 5: Relating
research modules – and will underpin your studies as you progress through the
programme.
8.1.1 Preparation
There are many tools available for creating and managing bibliographies. Indeed, you
may already use a bibliographic database management system (BDMS) such as Zotero,
EndNote, BibDesk or RefWorks. If you already use a BDMS then you are free to use it in
this part of the course.
BDMSs are complex tools that can hold thousands of academic papers, white papers and
many other information-resource items, keeping them for easy reference. As well as
storing resources, some BDMSs allow an electronic version of an information resource to
be kept alongside notes you have made about that resource. The resource and any
associated notes are then ready for use when you need to cite the material. In some
document preparation systems (e.g. Microsoft Word) this can be done automatically.
Even the simplest BDMS requires great flexibility and is a very complex piece of software.
The learning curve can be quite steep. For this reason, if you don’t already use a BDMS
we suggest that you create a simple word-processing document to store the details of the
few papers you might find useful to go alongside this course - perhaps something from the
references that interested you.
If you already use a BDMS, you can create a new database for this course. Alternatively,
you could simply copy and paste the template below into any Word/text-processing
package of your choice for each new information resource that you keep in your
bibliography.
CiteKey:
Title:
Author(s):
Format:
Publisher:
Year:
URL and last accessed:
Referenced by:
Abstract:
Notes:
Activity 15
What do you think the fields in the template capture?
Discussion
The template consists of a single table with the following fields (this structure is a
subset of any commercial tool’s structure, although in such a tool there may be many
other fields too):
8.1.2 Discovery
Discovering relevant academic literature is becoming easier and easier as most
bibliographical collections are now accessible online. Most libraries have subscriptions
which allows users to access copyright published materials: if you are currently studying
an OU module, you should explore the rich catalogue of sources and resources which are
available to you through the OU Library. Search engines also exist which specialise in
searching academic literature online. Once such engine is Google Scholar, which you will
use in the next activity.
Activity 16
Use Google Scholar from your web browser to search for Srinivasan Keshav’s article
titled ‘How to read a paper’: this is an excellent, easy-to-read introduction to an
effective workflow for reading many research articles in the field of science and
management (as opposed to, for instance, arts). Once you have found it, record as
much information as you can in your newly created BDMS: you’ll enhance this record
later on, in the fourth step of your workflow, after engaging with the material.
Discussion
Hopefully you managed to find the paper without too much difficulty. The paper is
included in a print journal and its full bibliographical reference is:
This published version is copyright materials and its text can only be accessed if you
are a licensed user, for instance an OU student using the OU Library. For this course,
however, we have obtained permission from the author to reproduce the content of the
article, which you can find in the Appendix.
Note: that, in general, Google Scholar will not necessarily find everything that could be
available, as some publishers do not let Google’s crawlers see their content. However,
more significantly, Google Scholar may actually return a preprint or draft version of an
article rather than the final published piece. Books are sometimes retrieved as a digital
part-version rather than the full text.
Annotation
Here are the annotations we made on the published version of Keshav’s paper. They
appear in red and as electronic highlights in yellow.
Activity 17
By looking at the text of the notes, identify and list the three dates on which the paper
was read. What do you think we were trying to convey with the annotation?
Discussion
The dates are:
The notes appear to record observations on the workflow, and any differences from
what the reader had expected. For instance, in two cases an initial note is followed up
with a further note. The first case has:
followed up by:
● ‘15/01/13: we say it may take many, i.e., more that [sic] three, passes.’
followed up by:
The first pairing of notes suggests that in the reader’s experience, you sometimes
have to read an academic paper several times before you really understand it.
The second pairing of notes shows the reader’s growing understanding of what the
purpose of the first pass is.
Keshav (2007) advocates following a workflow for reading an academic paper. There are
three passes to this workflow, and the subsections that follow will examine these as a way
of assimilating the information presented.
The first pass is a quick scan to get a bird’s-eye view of the paper. You can also
decide whether you need to do any more passes. This pass should take about
five to ten minutes and consists of the following steps:
Keshav adds that at the end of the first pass, the reader should be able to answer ‘the five
Cs’, which are:
Activity 18
Apply the first stage of the workflow to Keshav’s own paper: carry out a first pass and
see if you can answer the five Cs, i.e., Category, Context, Correctness, Contributions
and Clarity.
Discussion
We came up with the following. The five Cs are:
Category: Keshav’s paper analyses a process that researchers can use to read an
academic article. The paper is an experience report of the reader, in consultation with
some academic colleagues. It provides a contribution to practice.
Context: the paper does not include a bibliography of academic papers; rather, there is
a list of website resources that relate the paper to other contributions to practice in this
area.
Correctness: assumptions stated in the abstract are:
Contributions: the paper’s main contribution is that it outlines a practical and efficient
three-pass method for reading research papers. There is a subsidiary contribution: it
describes how to use the three-pass method to undertake a literature survey.
Clarity: as is evident from the headings used, the paper’s structure is generally logical.
However, there is no conclusion, so we struggled to know what to do to complete the
first pass.
At this point in the process, given the five Cs, you should be able to decide whether
whatever paper you are reading is interesting and relevant. As for Keshav’s paper, since
we will be using it for the remainder of this section, we can answer the question as to
where it is interesting or relevant with a resounding ‘yes’ (whether you actually find the
paper interesting is irrelevant at this point).
Finally, Keshav suggests marking interesting references, so that the portion of the
literature upon which the arguments of the paper rest can be read (see Figure 3).
23/12/12:
2/12:
Interesting
resting
Figure 3 The references list at the end of Keshav’s paper (Keshav, 2007)
Activity 19
Do a second pass through Keshav’s paper. Try to explain your understanding of the
paper to someone else.
Discussion
In trying to explain Keshav’s work, we came up with the workflow in Figure 4 (here’s a
scalable PDF download of this image).
Sometimes you won’t understand a paper even at the end of the second pass.
This may be because the subject matter is new to you, with unfamiliar
terminology and acronyms. Or the authors may use a proof or experimental
technique that you don’t understand, so that the bulk of the paper is
incomprehensible. The paper may be poorly written with unsubstantiated
assertions and numerous forward references. Or it could just be that it’s late at
night and you’re tired.
You can now choose to: (a) set the paper aside, hoping you don’t need to
understand the material to be successful in your career, (b) return to the paper
later, perhaps after reading background material or (c) persevere and go on to
the third pass.
There are many reasons why you might not have been able to make the same
contribution, by the way – and not all of them point to a lack of understanding (or creative
genius) on your part:
● perhaps the paper has failings, makes inappropriate assumptions, and/or fails to cite
other work that you know of
● perhaps the arguments the paper puts forward are circular and/or nonsensical
● perhaps the research method used does not make sense.
Keshav adds: ‘During this pass, you should also jot down ideas for future work’. This is an
excellent idea, should you be a researcher (as Keshav is), or a practitioner, and you may
wish to identify projects or the like to which the understanding you have gained can be
applied.
According to Keshav, the third pass will take about four or five hours for a beginner, and
about an hour for an experienced reader. However, longer periods are quite possible:
indeed, whether even more passes are required will very much depend on how critical to
you the paper is.
Activity 20
Carry out a third pass on Keshav’s paper, and then try to construct a virtual re-
implementation of the paper.
8.1.7 Recording
Recording your understanding of an academic paper is an important aspect of reading it.
Being able to relate it to the literature you already know – that is, contextualising the paper
in the literature – is another. At the moment, of course, your knowledge of the academic
(and other) literature may be very small – or indeed non-existent. Everyone has to start
somewhere. Here you will begin recording your understanding of the academic literature
in your BDMS.
Activity 21
Having read and annotated Keshav’s paper, update the entry in your BDMS with your
notes.
Discussion
Having added the abstract and our notes, our own entry now reads:
CiteKey: Keshav2007How
Title: How to read a paper
Author(s): S. Keshav ([email protected])
Format: Academic paper
Publisher: ACM SIGCOMM Computer Communication Review
Year: 2007
Pages: 83–84
As you go on collecting information resources, you’ll find that it is worth being critical
about what you retain in your BDMS – not all information resources are worth keeping. It
is also good to be systematic. It is good practice to record a resource directly after having
found it; then record your thoughts after the first pass and update your notes after
subsequent passes.
Your BDMS needs to both discriminate and retain a level of understanding of the
resource. With this in mind, we have positioned the Recording stage after the Assimilation
stage (although, as noted, you may make an initial note of the discovery at an earlier
point).
8.1.8 Relating
As you will realise from your professional practice, there are many contributors to any
area of research or practice. The relationship between contributors is complex
(sometimes circular), extends in time and can be affected by politics. At this point,
however, we will look only at indicators of dependence as revealed through a bibliography.
The bibliography of a paper indicates the parts of the context of the paper that have been
influential in its writing. Keshav’s bibliography consists of four websites. Such a source
citation is appropriate for his paper, but actually is not typical of an academic paper. Even
so, we can plot the relationship between Keshav’s paper and the material it cites as in
Figure 5.
Keshav
ACM SIGCOMM
Roscoe Schulzrinne Whitesides Computer
Communication
Review Online
Figure 5 The relationship between Keshav’s paper and the material it references
Activity 22
Add each element in Keshav’s bibliography to your BDMS.
Discussion
You may have noticed that the Roscoe website itself lists as a resource the Keshav
paper that you have just analysed. That means that if we were to extend Figure 5 there
would be a loop in it. You would not often find this phenomenon in typical archival
research articles because a paper is normally printed and once printed is unchange-
able. Online resources such as Roscoe’s can of course be updated, so can
incorporate references to other resources that were created after the original item.
We added five entries to our BDMS, corresponding to the five references. For each we
set the ‘Referenced by’ field to ‘Keshav2007How’ as suggested by the diagram we
drew.
Now complete Activity 23, which returns you to the discovery stage.
Activity 23
Consider a few topics that interest you in the area of software development. Focus on
one of them, and using a search method of your choice, find three research articles
that are relevant to your interests. Run through Keshav’s workflow (first pass only) for
each item found and if you think the item is sufficiently interesting, create an entry in
your BDMS. Record your notes on each.
Do you think that you’d conduct a second (or third) pass on any paper that you found?
Conclusion
In this course we have looked at some key concepts, themes and skills related to software
development, as an adapted extract from the Open University course M813 Software
development.
Should you decide to study further, this course will allow you to develop the fundamental
knowledge, understanding, and analysis and synthesis skills that you need to develop fit-
for-purpose software in an organisational context, by taking a practice-based approach
based on an organisation you are familiar with. The course will also give you an
opportunity to investigate emerging trends in software development and carry out some
independent research into issues in software development that interest you.
References
Bass, L., Clements, P. and Kazman, R. (2003) Software Architecture in Practice, Addison-
Wesley.
Beck, K. (2000) Extreme Programming Explained, Addison-Wesley.
Benington, H. D. (1983) ‘Production of large computer programs’, Annals of the History of
Computing, vol. 5, no. 4, pp. 350–61.
Bird, P. (1994) LEO: The First Business Computer, Workingham, UK, Hasler Publishing.
Boehm, B. W. (1988) ‘A spiral model of software development and enhancement’,
Computer, vol. 21, no. 5, pp. 61–72.
Booch, G. (1994) Object-Oriented Analysis and Design, Addison-Wesley.
Cockburn, A. and Highsmith, J. (2001) ‘Agile software development: the people factor’,
Computer, vol. 34, no. 11, pp. 131–133.
Cook, S. and Daniels, J. (1994) Designing Object Systems: Object-Oriented Modeling
with Syntropy, Upper Saddle River, NJ, Prentice-Hall.
Forsberg, K. and Mooz, H. (1992) ‘The relationship of system engineering to the project
cycle’, Engineering Management Journal, vol. 4, no. 3, pp. 36–43.
Fowler, M. and Highsmith, J. (2001) ‘The Agile manifesto’, Software Development, vol. 9,
no. 8, pp. 28–35.
Grant, R. M. (2007) Cases to Accompany Contemporary Strategy Analysis, 6th edn,
Wiley.
Gunter, C. A., Gunter, E. L., Jackson, M. and Zave, P. (2000) ‘A reference model for
requirements and specifications’, Software, IEEE, vol. 17, no. 3, pp. 37–43.
Hall, J. G. and Rapanotti, L. (2003) ‘A reference model for requirements engineering’, in
Proceedings of the 11th International Requirements Engineering Conference, 2003.
Montery Bay, CA, September 8–12 2003. New York, IEEE, pp. 181–7.
Hall, J. G. and Rapanotti, L. (2009) ‘Assurance-driven design in problem oriented
engineering’, International Journal on Advances in Systems and Measurements, vol. 2,
no. 1, pp. 119–30.
Jackson, M. (1995) ‘The world and the machine’, in ICSE 1995: 17th International
Conference on Software Engineering. Seattle, WA, April 23–30 1995. New York, IEEE,
pp. 283–92.
Jacobson, I., Booch, G. and Rumbaugh, J. (1999) The Unified Software Development
Process, Addison-Wesley.
Jacobson, I., Christerson, M., Jonsson, P. and Overgaard, G. (1992) Object-Oriented
Software Engineering: A Use Case Driven Approach, Addison-Wesley.
Keshav, S. (2007) ‘How to read a paper’, ACM SIGCOMM Computer Communication
Review, vol. 37, no. 3 [Online]. Available at
http://dl.acm.org.libezproxy.open.ac.uk/citation.cfm?doid=1273445.1273458 (Accessed
19 November 2013).
Liskov, B. and Zilles, S. (1974) ‘Programming with abstract data types’, ACM Sigplan
Notices , vol. 9, no. 4, pp. 50–9. ACM.
McManus, J. and Wood-Harper, T. (2008) A Study in Project Failure: Technical
Report, BCS.
Robertson, S. and Robertson, J.C., (2006) Mastering the Requirements Process, 2nd
edn, Addison-Wesley.
Rogers, G. F. C. (1983) The Nature of Engineering: A Philosophy of Technology, Palgrave
Macmillan.
Royce, W. (1970) ‘Managing the development of large software systems’, Proceedings of
IEEE WESCON, vol. 26, pp. 1–9.
Rumbaugh, J., Blaha, M., Premerlani, W., Eddy, F. and Lorensen, W. (1991) Object-
Oriented Modeling and Design, Prentice Hall.
Schwaber, K. and Beedle, M. (2001) Agile Software Development with Scrum, Prentice
Hall.
Selic, B. (2003) ‘The pragmatics of model-driven development’, Software, vol. 20, no. 5,
pp. 19–25.
Turski, W. (1986) ‘And no philosopher’s stone either’, Information Processing ’86:
Proceedings of the IFIP Congress, Dublin, Sept. 1–5, 1986, London, Elsevier, pp. 1077-
–1080.
Online only
Enticknap, N. (1998) ‘Computing’s Golden Jubilee’, Resurrection, no. 20 [online].
Available at http://www.cs.man.ac.uk/CCS/res/res20.htm (Accessed 8 July 2014).
Lake, M. (2010) ‘Epic failures: 11 infamous software bugs’, ComputerWorld [online].
Available at www.computerworld.com/s/article/9183580/Epic_failures_11_infamous_soft-
ware_bugs (Accessed 21 May 2013).
Standish Group (2009) CHAOS Summary 2009 [online]. Available at http://blog.
standishgroup.com (Accessed 25 March 2013).
Tootill, G. (1998) ‘The original original program’, Resurrection, no. 20 [online]. Available at
http://www.cs.man.ac.uk/CCS/res/res20.htm (Accessed 8 July 2014).
Acknowledgements
This course was written by Lucia Rapanotti and Jon G. Hall.
Except for third party materials and otherwise stated (see terms and conditions), this
content is made available under a
Creative Commons Attribution-NonCommercial-ShareAlike 2.0 Licence.