Change search
CiteExportLink to record
Permanent link

Direct link
Cite
Citation style
  • apa
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Other style
More styles
Language
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Other locale
More languages
Output format
  • html
  • text
  • asciidoc
  • rtf
Towards Understanding Software Craftsmanship
Blekinge Institute of Technology, Faculty of Computing, Department of Software Engineering. Ericsson AB.ORCID iD: 0000-0001-9898-2222
2021 (English)Licentiate thesis, comprehensive summary (Other academic)
Abstract [en]

The concept of software craftsmanship has roots in the earliest days of computing but has received comparably little attention from the research community.As a reaction to how Agile methods were practiced and taught in industry, in 2009, the Manifesto for Software Craftsmanship was formulated and published, drawing attention to the concept. Subsequent books and research papers have also elaborated on the concept.

With this dissertation, we aim to study the software craftsmanship phenomenon using empirical software engineering methods.We developed an anatomy of software craftsmanship through a systematic literature study and a longitudinal case study, following a project consisting of multiple teams over several years.We also illustrate some consequences of not following through on the espoused craftsmanship practice of managing and account for technical debt. We find that some areas exhibited high growth in technical debt, while others remained comparably idle. This indicates that it is important to keep track of existing technical debt, but repayment should consider the distribution of each kind of technical debt in the codebase.

Our studies are empirical, using mixed methods, analyzing quantitative as well as qualitative data.We used thematic coding to structure the qualitative data into themes, principles, and practices.

We provide our systematically derived anatomy of the principles and practices of software craftsmanship and discuss how these relate to other principles within software engineering in general.

Place, publisher, year, edition, pages
Karlskrona: Blekinge Tekniska Högskola, 2021.
Series
Blekinge Institute of Technology Licentiate Dissertation Series, ISSN 1650-2140 ; 7
Keywords [en]
Software craftsmanship
National Category
Software Engineering
Research subject
Software Engineering
Identifiers
URN: urn:nbn:se:bth-22041ISBN: 978-91-7295-427-4 (print)OAI: oai:DiVA.org:bth-22041DiVA, id: diva2:1586608
Presentation
2021-10-07, J1650, 09:00
Supervisors
Available from: 2021-08-23 Created: 2021-08-20 Last updated: 2021-10-28Bibliographically approved
List of papers
1. Test-Driving FinTech Product Development: An Experience Report
Open this publication in new window or tab >>Test-Driving FinTech Product Development: An Experience Report
2018 (English)In: Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) / [ed] Ciolkowski M.,Hebig R.,Kuhrmann M.,Pfahl D.,Tell P.,Amasaki S.,Kupper S.,Schneider K.,Klunder J., Springer, 2018, Vol. 112171, p. 219-226Conference paper, Published paper (Refereed)
Abstract [en]

In this paper, we present experiences from eight years of developing a financial transaction engine, using what can be described as an integration-test-centric software development process.We discuss the product and the relation between three different categories of its software and how the relative weight of these artifacts has varied over the years.In addition to the presentation, some challenges and future research directions are discussed.

Place, publisher, year, edition, pages
Springer, 2018
Series
Lecture Notes in Computer Science, ISSN 0302-9743
Keywords
Test-driven development, Software Craftsmanship, Testing Architecture
National Category
Software Engineering
Identifiers
urn:nbn:se:bth-17011 (URN)10.1007/978-3-030-03673-7_16 (DOI)000766909900016 ()9783030036720 (ISBN)
Conference
19th International Conference on Product-Focused Software Process Improvement, PROFES 2018; Wolfsburg; Germany; 28 November 2018 through 30 November 2018
Note

https://profes2018.wordpress.com/

Available from: 2018-09-17 Created: 2018-09-17 Last updated: 2023-01-02Bibliographically approved
2. The hidden cost of backward compatibility: When deprecation turns into technical debt - An experience report
Open this publication in new window or tab >>The hidden cost of backward compatibility: When deprecation turns into technical debt - An experience report
2020 (English)In: Proceedings - 2020 IEEE/ACM International Conference on Technical Debt, TechDebt 2020, ACM Digital Library, 2020, p. 67-76Conference paper, Published paper (Refereed)
Abstract [en]

Context The micro-services architectural pattern advocates for the partitioning of functionality into loosely coupled services, which should be backward compatible, to enable independent upgrades. Deprecation is commonly used as a tool to manage multiple versions of methods or services. However, deprecation carries a cost in that tests might be duplicated and might rely on services that have become deprecated over time. Objective Using the terms of the Technical Debt metaphor, we explore the consequences of deprecation, and how it has affected the test base during seven years. Method We take an exploratory approach, reporting on experiences found before and after servicing parts of the incurred Technical Debt. We mine code repositories and validate our findings with experienced developers. Results We found that the growth of deprecation debt varied a lot. Some services experienced substantial growth, but most did not. Unit tests, where deprecation is visible in the developers' tools, were much less affected than integration tests, which lack such visualization mechanisms. While servicing debt of 121 out of 285 deprecated services, we discovered that up to 29% of the spent effort could be attributed to accrued interest. However, this is an upper bound; there could be less impact, depending on whether scripting could be used to service the debt or not. Conclusion This paper illustrates that integration tests can be viewed as a debt from the perspective of deprecated services. While the pattern was that deprecated services (debt principal) experienced no or little accrued interest, some, highly used, services experienced a lot, particularly during stressful times. Java-based tests, where deprecation is visible in the IDE, did not experience a similar pattern of increasing debt. We postulate that deprecation debt should be kept visible, either using developer tools or statistical reports. © 2020 ACM.

Place, publisher, year, edition, pages
ACM Digital Library, 2020
Keywords
automated test base, backwards compatibility, deprecation, technical debt, Architectural pattern, Backward compatibility, Backward compatible, Experience report, Loosely coupled, Similar pattern, Statistical report, Technical debts, Testing
National Category
Software Engineering
Identifiers
urn:nbn:se:bth-20625 (URN)10.1145/3387906.3388629 (DOI)001048482100008 ()2-s2.0-85093112486 (Scopus ID)9781450379601 (ISBN)
Conference
3rd IEEE/ACM International Conference on Technical Debt, TechDebt 2020, Seoul, South Korea, 28 June 2020 through 30 June 2020
Available from: 2020-11-02 Created: 2020-11-02 Last updated: 2024-01-01Bibliographically approved
3. Towards an Anatomy of Software Craftsmanship
Open this publication in new window or tab >>Towards an Anatomy of Software Craftsmanship
2022 (English)In: ACM Transactions on Software Engineering and Methodology, ISSN 1049-331X, E-ISSN 1557-7392, Vol. 31, no 1, article id 6Article in journal (Refereed) Published
Abstract [en]

Context:   The concept of software craftsmanship has early roots in computing, and in 2009, the Manifesto for Software Craftsmanship was formulated as a reaction to how the Agile methods were practiced and taught. But software craftsmanship has seldom been studied from a software engineering perspective.  

Objective:  The objective of this article is to systematize an anatomy of software craftsmanship through literature studies and a longitudinal case study.     

Method:  We performed a snowballing literature review based on an initial set of nine papers, resulting in~18 papers and 11 books.  We also performed a case study following seven years of software development of a product for the financial market, eliciting qualitative and quantitative results.  We used thematic coding to synthesize the results into categories.

Results:  The resulting anatomy is centered around four themes, containing 17 principles and 47 hierarchical practices connected to the principles.  We present the identified practices based on the experiences gathered from the case study, triangulating with the literature results.

Conclusion: We provide our systematically derived anatomy of software craftsmanship with the goal of inspiring more research into the principles and practices of software craftsmanship and how these relate to other principles within software engineering in general.

Place, publisher, year, edition, pages
Association for Computing Machinery (ACM), 2022
Keywords
software craftsmanship, principles of software development, deliberate practice
National Category
Software Engineering
Research subject
Software Engineering
Identifiers
urn:nbn:se:bth-22037 (URN)10.1145/3468504 (DOI)000870650700006 ()
Funder
Knowledge Foundation, 20170213Knowledge Foundation, 20170176Knowledge Foundation, 20180010
Available from: 2021-08-20 Created: 2021-08-20 Last updated: 2023-02-06Bibliographically approved
4. Dear Lone Cowboy Programmer - your days are numbered!
Open this publication in new window or tab >>Dear Lone Cowboy Programmer - your days are numbered!
(English)Manuscript (preprint) (Other academic)
Abstract [en]

Since its inception, software development has been recognized as a highly technical activity, where, at times, highly skilled professionals have been tempted to face technical problems on their own. In the past, software developers, may have been inclined to create solutions as if they were the only ones who needed to understand the solutions.

However, nowadays, the disciplines of software development and systems development have undergone significant change. Current software development requires more crafting skills, in addition to engineering skills. The lone-cowboy programmer will soon have no place in properly organised software development projects. Current practices demand that a productive programmer be tasked to develop both working software (as claimed in the Agile Manifesto) and well crafted software. Accountability, pride in one's work, continuous learning and mentorship are characteristics of the profession that we should promote if we want to enable an attitude of craftsmanship within software development.

This paper provides experiences of craftsmanship, and argues why software craftsmanship is good for the practitioner and software development organizations. To support this claim, we have analysed the development of a product that was developed by following several craftsmanship principles. We observed the product's development for seven years, and interviewed several professionals who were involved in its development.

National Category
Software Engineering
Identifiers
urn:nbn:se:bth-22039 (URN)
Available from: 2021-08-20 Created: 2021-08-20 Last updated: 2024-01-31Bibliographically approved

Open Access in DiVA

fulltext(4659 kB)672 downloads
File information
File name FULLTEXT03.pdfFile size 4659 kBChecksum SHA-512
c7e3fc919d637a194cb7a775f92ed51a335c62ec89a1229b77be6219b8c5be9d25e40b7db4f5d7f21bd628285486ef02e2ee7175cff8ebda3ef003eee2768e4b
Type fulltextMimetype application/pdf

Search in DiVA

By author/editor
Sundelin, Anders
By organisation
Department of Software Engineering
Software Engineering

Search outside of DiVA

GoogleGoogle Scholar
Total: 679 downloads
The number of downloads is the sum of all downloads of full texts. It may include eg previous versions that are now no longer available

isbn
urn-nbn

Altmetric score

isbn
urn-nbn
Total: 1193 hits
CiteExportLink to record
Permanent link

Direct link
Cite
Citation style
  • apa
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Other style
More styles
Language
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Other locale
More languages
Output format
  • html
  • text
  • asciidoc
  • rtf