The Role of Domain Expenence in Software Design
IEEE Transactions on Software Engineering - Special issue on artificial intelligence and software engineering
Goal and plan knowledge representations: from stories to text editors and programs
Interfacing thought: cognitive aspects of human-computer interaction
Plans in programming: definition, demonstration, and development
Papers presented at the first workshop on empirical studies of programmers on Empirical studies of programmers
Some strategies of reuse in an object-oriented programming environment
CHI '89 Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Object oriented design with applications
Object oriented design with applications
Surveying current research in object-oriented design
Communications of the ACM
The O2 database programming language
VLDB '89 Proceedings of the 15th international conference on Very large data bases
Program understanding and knowledge organization: the influence of acquired schemata
Cognitive ergonomics
Knowledge exploited by experts during software system design
International Journal of Man-Machine Studies - What programmers know
Common cognitive representation of program code across tasks and languages
International Journal of Man-Machine Studies - What programmers know
CHI '92 Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Object-oriented programming in Eiffel
Object-oriented programming in Eiffel
Learning to program in another language
INTERACT '90 Proceedings of the IFIP TC13 Third Interational Conference on Human-Computer Interaction
Tapping into tacit programming knowledge
CHI '82 Proceedings of the 1982 Conference on Human Factors in Computing Systems
The role of knowledge in software development
Communications of the ACM
Communications of the ACM
Modeling object-oriented design
OOPSLA '05 Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Supporting software development as knowledge-intensive and collaborative activity
Proceedings of the 2006 international workshop on Workshop on interdisciplinary software engineering research
The role of exogenous factors in technology acceptance: the case of object-oriented technology
Information and Management
Objects of our desire: empirical research on object-oriented development
Human-Computer Interaction
Patterns of Transition: The Shift from Traditional to Object-Oriented Development
Journal of Management Information Systems
The role of exogenous factors in technology acceptance: The case of object-oriented technology
Information and Management
International Journal of Human-Computer Studies
The effect of previous programming experience on the learning of scenario-based programming
Proceedings of the 12th Koli Calling International Conference on Computing Education Research
Hi-index | 0.03 |
An empirical study of design strategies and knowledge used in object-oriented (OO) software design was conducted. Eight professional programmers experienced with procedural programming languages and either experienced or not experienced in OO programming (OOP) participated in this experiment. The programmers were asked to design a program for a procedural problem and a declarative problem. Analysis was concentrated on the design strategies related to two central aspects of the OO paradigm: (a) associating actions (i.e., execution steps) of a complex plan to different objects and revising a complex plan and (b) defining simple plans at different levels in the class hierarchy. Regarding the development of complex-plan elements attached to different objects, the present results show that, for beginners in OOP, the description of objects and the description of actions are not always integrated in an early design phase, particularly for a declarative problem; for the programmers experienced in OOP, the description of objects and the description of actions tend to be integrated in first drafts of solutions, whichever the problem type. Most of the first drafts of solutions were structured around the objects, whatever the experience of subjects in OOP. However, by analyzing the order in which actions are generated, it was found that, for the programmers experienced in OOP, methods were grouped together mainly by membership in the same class; for the beginners in OOP, methods were grouped together mainly by functional similarity and execution order. Furthermore, with only a little experience in OOP, complex plans were revised more often. Regarding the development of simple plans at different levels in the class hierarchy, the present results indicate that, with less OOP experience, simple plans are developed either in a top-down manner or in a bottom-up manner; with more OOP experience, simple plans are developed in a strictly top-down manner. The analysis of design strategies revealed the use of different knowledge according to subjects' language experience: (a) schemas related to procedural languages (actions organized in an execution order) and (b) schemas related to OO languages (actions and objects integrated and actions organized around objects).