Issue No. 06 - November/December (2005 vol. 22)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/MS.2005.161
Pierre N. Robillard , ?cole Polytechnique de Montr?al
Software development is a complex, mainly cognitive endeavor. What is specific about software engineering relative to other engineering disciplines, and how can we measure what can be improved? Many concepts, such as problem solving and opportunistic design, are common to all engineering disciplines. The author reviews these concepts from a software engineering perspective in order to highlight their links to software practices. Software engineering activities are composed of cognitive actions performed by human beings. For many years, researchers and developers have helped improve software engineering practice by suggesting various intuitive approaches, proposing modeling techniques, and presenting case studies of successful projects. Real and durable improvements are likely to emerge from a scientific approach based on observation and measurement of real human behaviors. Based on results from measuring cognitive actions, the author proposes synchronization meetings to improve practices with a high degree of opportunistic problem-solving content.
Software engineering, software process, process assessment, process qualitative and quantitative measurements, cognitive actions, process practices, cognitive synchronization, synchronization meeting
P. N. Robillard, "Opportunistic Problem Solving in Software Engineering," in IEEE Software, vol. 22, no. , pp. 60-67, 2005.