Canada Spends Logo

Explorez notre analyse du budget 2026

Grant: Discovery Grants Program - Individual

Dalhousie University

$96,000.00

Reconciling modern design practices with agile software development methods

EF 2024-25

Résumé
Most software fails because it is poorly designed. Buggy apps, unfriendly enterprise systems, insecure websites, predatory games, hate-amplifying social networks, racist AI, and carbon-spewing cryptocurrencies make us miserable, cost us billions and exacerbate the climate crisis. Yet, software design is rarely studied (compared to, e.g., software testing) and is widely misunderstood. Software professionals tend to equate design with graphical interfaces (user experience design), system organization (architectural design), procedures (algorithm design) or feature selection (feature design). However, design is really just determining the properties of some object. Rather than a phase in an idealized lifecycle, design permeates the development process and is inextricable from both analysis and programming. "Design thinking" includes, but cannot be reduced to, problem-solving, planning, decision-making, learning or creativity. My research program is about improving software professional's design thinking and design outcomes. I propose three interconnected projects that come at design thinking from different angles: practices, refactoring and theory development. Practices. Numerous software design practices have been proposed but never empirically tested. We will conduct a series of controlled experiments to test three practices: pair designing, affinity mapping and generating multiple high-level design candidates. Each experiment is similar: software professionals are randomly assigned to the treatment or control group. They design a system on paper and these "paper prototypes" and graded to see if the practice leads to significantly better designs. Refactoring. Developers continuously reorganize software code to improve its structure ("refactoring"). However, there is no empirically-validated method of measuring structure quality. Instead, refactoring is a completely manual process based on experience, intuition, subjective criteria, and unvalidated professional guidelines. We will combine diverse software metrics into a sophisticated mathematical model of structure quality, and implement it as an easy-to-use tool that tells developers how a code change affects the system's structure. Theory Development. One of the most effective software design practices is called user-centered design (UCD). However, UCD is at odds with agile methods-the way most software teams work. We will conduct a longitudinal grounded theory study to understand how UCD and agile methods can be reconciled. This research will be disseminated to our industry partners via presentations and to the wider software engineering community through meetups, blogs, podcasts and professional articles. The tools and recommendations we generate will lead to more usable, useful, sustainable and maintainable software, helping Canada grow its $75 billion/year software industry.
Programme
Discovery Grants Program - Individual
Bénéficiaire
Emplacement
Nova Scotia, Canada
Type de bénéficiaire
Academia
Type
Grant
Source
NSERC's Awards Data

Tel que publié

Application id
RGPIN-2020-05001
Name nom
Ralph, Paul
Department département
Computer Science
Organization id
79
Institution établissement
Dalhousie University
Province en
Nova Scotia
Province fr
Nouvelle-Écosse
Country en
CANADA
Country fr
CANADA
Fiscal year exercice financier
2024
Competition year année de concours
2020
Award amount
96000
Program id
RGPIN
Program name en
Discovery Grants Program - Individual
Program name fr
Programme de subventions à la découverte - individuelles
Group en
DISCOVERY RESEARCH
Group fr
RECHERCHE AXÉE SUR LA DÉCOUVERTE
Committee code
1507
Committee name en
Computer Science
Committee name fr
Sciences informatiques
Area of application code
801
Area of application group en
Information and communication services
Area of application group fr
Services d'information et de télécommunications
Area of application en
Computer software
Area of application fr
Logiciel
Research subject code
2706
Research subject group en
Information technology
Research subject group fr
Technologie de l'information
Research subject en
Software engineering
Research subject fr
Génie logiciel
Field of research list names en
Not available
Field of research list names fr
Non disponible
Socioeconomic objective list names en
Not available
Socioeconomic objective list names fr
Non disponible
Application title
Reconciling modern design practices with agile software development methods
Keywords
agile methods; human-centred design; user-centred design; human and social aspects of software engineering; software design; software metrics; user experience; qualitative research; grounded theory; controlled experiment
Application summary
Most software fails because it is poorly designed. Buggy apps, unfriendly enterprise systems, insecure websites, predatory games, hate-amplifying social networks, racist AI, and carbon-spewing cryptocurrencies make us miserable, cost us billions and exacerbate the climate crisis. Yet, software design is rarely studied (compared to, e.g., software testing) and is widely misunderstood. Software professionals tend to equate design with graphical interfaces (user experience design), system organization (architectural design), procedures (algorithm design) or feature selection (feature design). However, design is really just determining the properties of some object. Rather than a phase in an idealized lifecycle, design permeates the development process and is inextricable from both analysis and programming. "Design thinking" includes, but cannot be reduced to, problem-solving, planning, decision-making, learning or creativity. My research program is about improving software professional's design thinking and design outcomes. I propose three interconnected projects that come at design thinking from different angles: practices, refactoring and theory development. Practices. Numerous software design practices have been proposed but never empirically tested. We will conduct a series of controlled experiments to test three practices: pair designing, affinity mapping and generating multiple high-level design candidates. Each experiment is similar: software professionals are randomly assigned to the treatment or control group. They design a system on paper and these "paper prototypes" and graded to see if the practice leads to significantly better designs. Refactoring. Developers continuously reorganize software code to improve its structure ("refactoring"). However, there is no empirically-validated method of measuring structure quality. Instead, refactoring is a completely manual process based on experience, intuition, subjective criteria, and unvalidated professional guidelines. We will combine diverse software metrics into a sophisticated mathematical model of structure quality, and implement it as an easy-to-use tool that tells developers how a code change affects the system's structure. Theory Development. One of the most effective software design practices is called user-centered design (UCD). However, UCD is at odds with agile methods-the way most software teams work. We will conduct a longitudinal grounded theory study to understand how UCD and agile methods can be reconciled. This research will be disseminated to our industry partners via presentations and to the wider software engineering community through meetups, blogs, podcasts and professional articles. The tools and recommendations we generate will lead to more usable, useful, sustainable and maintainable software, helping Canada grow its $75 billion/year software industry.