Paul Lynham is the President of the Institution of Analysts and Programmers (IAP). He is a freelance software consultant who is currently engaged as the principal applications architect in a project to implement electronic hospital referrals between consultants within the NHS in Wales. He has a long and wide experience in producing software using a variety of technologies and has used over a dozen Turing complete programming languages. His work has spanned various sectors including agriculture, education, health, defence, policing, wealth management and the Foreign and Commonwealth Office. Previously he lectured in colleges and for the Open University and is interested in research and practices which can be used to improve software quality. One particular interest is the notion of ‘Compealing Code’, i.e. code which is comprehensible and compelling while being appealing. This is linked to appraising code using static analysis. Another interest is the long-term goal of improving professionalism in software development. Address: United Kingdom
The concept of Compealing Code is examined by looking at an extremely simple example, which will ... more The concept of Compealing Code is examined by looking at an extremely simple example, which will demonstrate and assess each compealing attribute.
Software has become ubiquitous in modern society and is found in places that would have been unim... more Software has become ubiquitous in modern society and is found in places that would have been unimaginable just a few years ago. However, although software can bring extended functionality and flexibility to devices and services we use, it can also cause problems. The trustworthiness of software is a major concern which covers security, reliability and its behaviour amongst other aspects. Cyber incidents see a 1087% increase year on year , yet the production of good quality software can go a long way to combat these issues. It has been calculated 90% of security incidents result from exploits against defects in software .
Trustworthiness is therefore directly related to how well the software is written and this depends on several factors including the specification, architecture, design, implementation and testing. However, for this consideration, the coding of the software will be the main focus of this series of articles and how the quality of the source code can be assessed using the concept of Compealing.
Over many decades of research in the field of software production, Capers Jones concluded that at... more Over many decades of research in the field of software production, Capers Jones concluded that attempts to improve productivity without improving quality first are not effective. He is not the only one to form the conclusion of the link between quality and productivity. W. Edwards Deming, who is widely acknowledged as the leading management thinker in the field of quality, found by improving quality, companies would decrease expenses as well as increase productivity and market share.
In the third instalment of articles looking at the concept of ‘Compealing Code’ – source code that is comprehendible, compelling and appealing – some of the skills necessary to produce high-quality code are examined.
Software quality can be difficult to evaluate. Metrics can be used to some extent e.g. checks can... more Software quality can be difficult to evaluate. Metrics can be used to some extent e.g. checks can be made to ensure all exceptions are caught. However, certain aspects of source code may be difficult to assess, such as how appealing the code appears to a human reader. Concepts are examined which may be difficult to measure, but they certainly count and are worth assessing, even though specific metrics may not yet exist! This is an introduction to the concept of ‘Compealing Code’, which is source code that is Comprehendible, Compelling and Appealing.
As discussed in the previous article 'A Brief Look At The Attractiveness Of Source Code'1, in usi... more As discussed in the previous article 'A Brief Look At The Attractiveness Of Source Code'1, in using FURST2,3 the product must be shown to be Fit For Purpose (FFP) and one of the attributes of FFP is Attractive. This states that for developers the design and code should be appealing. Previously attractiveness was examined at a higher level. Now the reasons why attractiveness is important will be considered and then some attributes of attractiveness will be surveyed, a few at a high level and some at a more detailed level.
In considering how the concept of Clean Code 1 could be summarised in a few words, the acronym SA... more In considering how the concept of Clean Code 1 could be summarised in a few words, the acronym SAD (Simple, Attractive, Dependable) was formed to suggest that code should be simple, well written and reliable. SAD isn't really specific as with some acronyms e.g. DRY (Don't Repeat Yourself), as you can look for repeated literals or code within a project and categorically say if it is WET (Write Everything Twice) or DRY. Like beauty, SAD is in the eye of the beholder. However, another acronym FURST was devised to fill this void to ensure that code is Fit for purpose, Unit tested, Reviewed, Standardised and Timely. This goes further than SAD in that it gives some more tangible expressions which can be checked or measured. FURST is not a complete end to end process but sets out what needs to be done rather than how to do it (in this regard like SCRUM). However, from it, checklists can be devised to be used at certain points within the development cycle and could be automated to some extent using toolchains.
In using FURST1,2, the product must be shown to be Fit For Purpose (FFP). One of the attributes o... more In using FURST1,2, the product must be shown to be Fit For Purpose (FFP). One of the attributes of FFP is Attractive. This states that for developers the design and code should be appealing. To go just a little deeper, it is appealing because it is simple, it is easy to understand, there is no doubt in what it is supposed to do and it abides by conventions, making it uniform with its surroundings, as opposed to being a 'blot on the landscape'!
The attractiveness of source code is a non-functional requirement and because of this fact, it has often been given cursory attention, even though failure to produce quality usually has some cost3. The testing is mainly carried out against the functional requirements, so testers are not going to complain about the look of the code! Often managers are only concerned with getting a working product out of the door. This usually means it is down to the programmers themselves to ensure that the structural quality of the software is good and this includes how easy the code is to read, understand and maintain.
If you are familiar with FURST you will also know that concepts often overlap and affect each over. This is true for Attractive and this concept can overlap with Labelling, Intention and Transparent, as in making the code attractive (such as using good naming), its intention becomes clear (transparent).
FURST was devised to summarise the simple ideas used in Clean Code 1 and Code Complete 2. The pri... more FURST was devised to summarise the simple ideas used in Clean Code 1 and Code Complete 2. The principles of FURST were further decomposed, so for each principle a list of attributes were formed. These attributes may have further attributes. Attributes can be linked to tenets that apply to clean code and good practices in general. Acronyms were developed to summarise each principle.
The concept of Compealing Code is examined by looking at an extremely simple example, which will ... more The concept of Compealing Code is examined by looking at an extremely simple example, which will demonstrate and assess each compealing attribute.
Software has become ubiquitous in modern society and is found in places that would have been unim... more Software has become ubiquitous in modern society and is found in places that would have been unimaginable just a few years ago. However, although software can bring extended functionality and flexibility to devices and services we use, it can also cause problems. The trustworthiness of software is a major concern which covers security, reliability and its behaviour amongst other aspects. Cyber incidents see a 1087% increase year on year , yet the production of good quality software can go a long way to combat these issues. It has been calculated 90% of security incidents result from exploits against defects in software .
Trustworthiness is therefore directly related to how well the software is written and this depends on several factors including the specification, architecture, design, implementation and testing. However, for this consideration, the coding of the software will be the main focus of this series of articles and how the quality of the source code can be assessed using the concept of Compealing.
Over many decades of research in the field of software production, Capers Jones concluded that at... more Over many decades of research in the field of software production, Capers Jones concluded that attempts to improve productivity without improving quality first are not effective. He is not the only one to form the conclusion of the link between quality and productivity. W. Edwards Deming, who is widely acknowledged as the leading management thinker in the field of quality, found by improving quality, companies would decrease expenses as well as increase productivity and market share.
In the third instalment of articles looking at the concept of ‘Compealing Code’ – source code that is comprehendible, compelling and appealing – some of the skills necessary to produce high-quality code are examined.
Software quality can be difficult to evaluate. Metrics can be used to some extent e.g. checks can... more Software quality can be difficult to evaluate. Metrics can be used to some extent e.g. checks can be made to ensure all exceptions are caught. However, certain aspects of source code may be difficult to assess, such as how appealing the code appears to a human reader. Concepts are examined which may be difficult to measure, but they certainly count and are worth assessing, even though specific metrics may not yet exist! This is an introduction to the concept of ‘Compealing Code’, which is source code that is Comprehendible, Compelling and Appealing.
As discussed in the previous article 'A Brief Look At The Attractiveness Of Source Code'1, in usi... more As discussed in the previous article 'A Brief Look At The Attractiveness Of Source Code'1, in using FURST2,3 the product must be shown to be Fit For Purpose (FFP) and one of the attributes of FFP is Attractive. This states that for developers the design and code should be appealing. Previously attractiveness was examined at a higher level. Now the reasons why attractiveness is important will be considered and then some attributes of attractiveness will be surveyed, a few at a high level and some at a more detailed level.
In considering how the concept of Clean Code 1 could be summarised in a few words, the acronym SA... more In considering how the concept of Clean Code 1 could be summarised in a few words, the acronym SAD (Simple, Attractive, Dependable) was formed to suggest that code should be simple, well written and reliable. SAD isn't really specific as with some acronyms e.g. DRY (Don't Repeat Yourself), as you can look for repeated literals or code within a project and categorically say if it is WET (Write Everything Twice) or DRY. Like beauty, SAD is in the eye of the beholder. However, another acronym FURST was devised to fill this void to ensure that code is Fit for purpose, Unit tested, Reviewed, Standardised and Timely. This goes further than SAD in that it gives some more tangible expressions which can be checked or measured. FURST is not a complete end to end process but sets out what needs to be done rather than how to do it (in this regard like SCRUM). However, from it, checklists can be devised to be used at certain points within the development cycle and could be automated to some extent using toolchains.
In using FURST1,2, the product must be shown to be Fit For Purpose (FFP). One of the attributes o... more In using FURST1,2, the product must be shown to be Fit For Purpose (FFP). One of the attributes of FFP is Attractive. This states that for developers the design and code should be appealing. To go just a little deeper, it is appealing because it is simple, it is easy to understand, there is no doubt in what it is supposed to do and it abides by conventions, making it uniform with its surroundings, as opposed to being a 'blot on the landscape'!
The attractiveness of source code is a non-functional requirement and because of this fact, it has often been given cursory attention, even though failure to produce quality usually has some cost3. The testing is mainly carried out against the functional requirements, so testers are not going to complain about the look of the code! Often managers are only concerned with getting a working product out of the door. This usually means it is down to the programmers themselves to ensure that the structural quality of the software is good and this includes how easy the code is to read, understand and maintain.
If you are familiar with FURST you will also know that concepts often overlap and affect each over. This is true for Attractive and this concept can overlap with Labelling, Intention and Transparent, as in making the code attractive (such as using good naming), its intention becomes clear (transparent).
FURST was devised to summarise the simple ideas used in Clean Code 1 and Code Complete 2. The pri... more FURST was devised to summarise the simple ideas used in Clean Code 1 and Code Complete 2. The principles of FURST were further decomposed, so for each principle a list of attributes were formed. These attributes may have further attributes. Attributes can be linked to tenets that apply to clean code and good practices in general. Acronyms were developed to summarise each principle.
Uploads
Papers by Paul Lynham
Trustworthiness is therefore directly related to how well the software is written and this depends on several factors including the specification, architecture, design, implementation and testing. However, for this consideration, the coding of the software will be the main focus of this series of articles and how the quality of the source code can be assessed using the concept of Compealing.
In the third instalment of articles looking at the concept of ‘Compealing Code’ – source code that is comprehendible, compelling and appealing – some of the skills necessary to produce high-quality code are examined.
Previously attractiveness was examined at a higher level. Now the reasons why attractiveness is important will be considered and then some attributes of attractiveness will be surveyed, a few at a high level and some at a more detailed level.
The attractiveness of source code is a non-functional requirement and because of this fact, it has often been given cursory attention, even though failure to produce quality usually has some cost3. The testing is mainly carried out against the functional requirements, so testers are not going to complain about the look of the code! Often managers are only concerned with getting a working product out of the door. This usually means it is down to the programmers themselves to ensure that the structural quality of the software is good and this includes how easy the code is to read, understand and maintain.
If you are familiar with FURST you will also know that concepts often overlap and affect each over. This is true for Attractive and this concept can overlap with Labelling, Intention and Transparent, as in making the code attractive (such as using good naming), its intention becomes clear (transparent).
Trustworthiness is therefore directly related to how well the software is written and this depends on several factors including the specification, architecture, design, implementation and testing. However, for this consideration, the coding of the software will be the main focus of this series of articles and how the quality of the source code can be assessed using the concept of Compealing.
In the third instalment of articles looking at the concept of ‘Compealing Code’ – source code that is comprehendible, compelling and appealing – some of the skills necessary to produce high-quality code are examined.
Previously attractiveness was examined at a higher level. Now the reasons why attractiveness is important will be considered and then some attributes of attractiveness will be surveyed, a few at a high level and some at a more detailed level.
The attractiveness of source code is a non-functional requirement and because of this fact, it has often been given cursory attention, even though failure to produce quality usually has some cost3. The testing is mainly carried out against the functional requirements, so testers are not going to complain about the look of the code! Often managers are only concerned with getting a working product out of the door. This usually means it is down to the programmers themselves to ensure that the structural quality of the software is good and this includes how easy the code is to read, understand and maintain.
If you are familiar with FURST you will also know that concepts often overlap and affect each over. This is true for Attractive and this concept can overlap with Labelling, Intention and Transparent, as in making the code attractive (such as using good naming), its intention becomes clear (transparent).