Practitioners may also find some of the specific findings reported here on practices and tools useful in their own working environment.
Manifesto for Agile Software Development
These finding identify a variety of topics for further research. There seems to be little research to-date explicitly exploring the potential of Clean Code and SOLID practices to impact on design quality. Similarly, there is potential to investigate further the possible relationship between ease of testing, testing practices and design quality. This research emphasises the importance of experience to practitioners, there is the potential for research explicitly investigating the contribution experience can make to design quality and related qualities.
There is also more research to be done on techniques that support novices in becoming experienced. The findings suggest that design guidelines associated with coupling, cohesion, size, complexity and programming to an interface are considered useful by practitioners. There is scope for further work investigating exactly how these are being used in practice, whether as final arbiters of quality or just indicators flagging up areas of design and code that require more detailed consideration.
If they are only being used as high-level indicators then their measurement-theoretic properties might not be so important.
Lastly, there is the possibility of replicating this survey with other practitioners, including refinements to the topics that are discussed in Section 9 Limitations, Improvements and Validity. There are also implications for the educators of students. Given that experience is so important in design, are there mechanisms that can accelerate students acquisition of appropriate experience?
Software development process
One possibility is through the study of high quality software designs and architectures, perhaps supported by experienced practitioners in doing so. Another is to ensure that students understand the fundamental principles underpinning design guidelines such as coupling, cohesion, complexity, size, and Clean Code practices. At the moment, many students are taught the basics of key techniques such as inheritance, programming to an interface and design patterns —these findings suggest that experienced practitioners know more than this—they appear to know when and how to best use these techniques.
The questionnaire text did define what was intended by these two terms. One respondent commented on the lack of questions on testing. As the results of this survey have shown, design quality and testing are closely related. It may have been better to explore this relationship further. The questionnaire presented design quality and functional correctness as separate topics. One respondent commented that these should not be viewed separately. Overall, respondents had very few issues with the wording of the questionnaire, the quality and variety of responses suggest that most had a clear understanding of what was being asked.
If the questionnaire was to be used again, there are a few ways it might be improved. Removing the focus on object-oriented technology would completely change the purpose of the questionnaire. The issue of separate consideration of design quality and functional correctness may require some change of wording though this issue was only raised by one respondent. With hindsight, the main omission was some exploration of thoughts from respondents on where researchers could mostly usefully contribute to future improvements in software design quality.
In this survey, it is recognised that there are numerous, important threats to validity. In terms of construct validity, perhaps the biggest concern is the choice of design topics explicitly covered by the survey such as program to an interface, coupling and cohesion. It may be that other design topics should also have been explored; however, the length of the questionnaire and the associated time taken to complete it were major concerns.
The pilot study was intended to help identify any major concerns with the design of the questionnaire. An estimation of the time to complete the questionnaire was also included in the introduction. The most significant threat to internal validity is the methodology used to derive the key findings and associated conclusions. In a similar manner, these key findings were then merged together to form the main conclusions and answer the initial research questions. It is clear that this procedure is open to researcher bias and others may have identified different findings.
To address this, all the original questionnaire data has been made available publicly. In the analyses there are traceable paths from the questionnaire data to the key findings KF1—14 and then to the corresponding high level conclusions and answers to the original research questions. The selection of participants for this study is also a significant threat to the internal validity. Initially, participants were identified using industrial contacts of the authors and their university and, thereafter, by searching for industrial authors in the academic literature.
This is clearly a limited selection procedure. Furthermore, the respondents who completed the questionnaire have been self-selective and may have particular biases and opinions which they were keen to express, quite possibly views that are not representative of the mainstream. Lastly, there was very limited control of the questionnaire once distributed, it is possible that the questionnaire could be completed carelessly or even dishonestly.
Guidelines for using empirical studies in software engineering education [PeerJ]
It is difficult to address such concerns, though, as stated earlier, given the general consensus and quality of free-text responses, it is believed that these issues have not had a major impact on the findings. The ordering of questions is another potential threat, again, particularly, the ordering of specific design topics covered. There seems little indication of this, with generally positive responses in initial questions, then more mixed views on inheritance, then being more positive again on coupling and finishing with more mixed responses on design patterns and refactoring.
There are recognised concerns regarding external validity and the generalisability of the findings. The target population was the millions of industrial software developers working around the globe. A key question is whether the actual population sampled is a representative subset of that target population Kitchenham and Pfleeger c. The textual feedback provided in the questionnaires showed many respondents responding thoughtfully and knowledgeably which increases confidence in the relevance of the results.
Finally, the number of respondents is relatively small , certainly in comparison to the potential size of the target population. However, this size is in keeping with that of recent, comparable studies. Design quality is seen as important to industrial practitioners, but not as important as functional correctness. Commercial and other time pressures limit the time spent on design quality and associated activities such as refactoring.
Practitioner experience is the key contributor to design quality, both when working as an individual and as part of the peer review process. Novel problems and changing or imprecise requirements make design more difficult. It is important to recognise essential complexity in a problem and be mindful of how it is distributed in design. Many of the traditional design guidelines are viewed as important to design quality: coupling, cohesion, complexity, size and programming to an interface.
Inheritance and design patterns are also important but controversial and susceptible to misuse. There are many lower level practices identified as contributing to good quality design, e. Tool support such as SonarQube is often used to support software design quality; there was also some evidence to support the use of metrics. There is a close relationship between testing practices and design quality.
Good testing methodology can help improve design; testable designs are thought to be better, and poor designs can be harder to test. The findings did not appear to be influenced by experience, programming language or development role, though there was a suggestion that those with most experience are more confident in their design decisions, place more value on reviews by team leads and are more likely to rate design quality as very important.
The contribution of this research is that the practitioners who were surveyed saw experience and peer review as the most important contribution to design quality. These practitioners do generally find design guidance coupling, cohesion, complexity and size , metrics and tools useful but not as important as experience. The practitioners see design quality as important but not as important as functional correctness. For researchers, more work could be done investigating the role of experience in the design process—to what extent can the nebulous notion of experience be translated into better guidelines, metrics and tools?
diana116.ru/includes/hidalgo/331-znakomstva-leningradskiy.php The survey has only identified the high-level practices that those working in industry find to be useful indicators of quality. Much more work needs to be done with industry to discover exactly how these indicators are used in practice and the extent to which an explicit link can be demonstrated between them and design quality.
Other practitioners may find useful advice and lessons within these results to help improve their own design practices. Finally, the results help to identify some of the fundamental techniques that educators should emphasise to their students, ideally using high-quality examples of industrial-strength design case studies to do so. The authors would like to thank the anonymous respondents who took time to complete the questionnaire and also those who helped to distribute it more widely.
Thanks also to Dr. We also thank the editor and reviewers for their very useful comments on how to strengthen the content and structure of the initial version of this paper. Skip to main content Skip to sections. Advertisement Hide. Download PDF. Recognising object-oriented software design quality: a practitioner-based questionnaire survey. Open Access. First Online: 17 April Over the last two decades, the idea of design patterns has become widely established as a source of object-oriented design advice Gamma et al. The original catalogue consisted of 23 patterns whose names and intent are now widely-recognised in the design community.
This research was motivated by a lack of previous work that explores the techniques that software developers actually use in their day-to-day practice and which of these techniques they find most useful. The goal of the survey was to discover the extent to which practitioners concern themselves with software design quality and the approaches practitioners use when considering design quality in practice. The design of the questionnaire was guided by the following research questions: RQ1: Design Priorities—To what extent do practitioners concern themselves with design quality?
Refine your editions:
RQ3: Guidance—What design guidelines do practitioners follow? Prior to the distribution of the questionnaire, the research questions were mapped to survey questions, see Table 1. Table 1 Original GQM mapping of survey goal to research questions to answerable survey questions. Four completed and two partially completed questionnaires were received. The respondents used the then generous free-text spaces in the questionnaire to provide feedback.
- The Book of The Animals - Mr. Bushy Tail (Bilingual English-French) (The Book of The Animals - Who Are You? (Bilingual) 4)?
- Just what is ‘quality’ anyway;
- Teach Yourself VISUALLY Office 2013 (Teach Yourself VISUALLY (Tech))?
- The Shift That Is Man and Woman Balance!
- You are here.
- Canine and Feline Cytology - E-Book: A Color Atlas and Interpretation Guide?
- Must Read Books ? : learnprogramming;
As a result of feedback on the questionnaire structure, the following changes were made: Some of the optional free-text boxes were removed as these had been perceived as mandatory or excessive despite being marked as optional. The options in some questions were simplified. Of these: 96 questionnaires were complete. The self-reported years of experience for respondents is shown in Fig.
Unless shown otherwise, all figures consist of responses.