My research interests
My area of interest is in empirical software engineering, which applies empirical methods such as controlled experiments, surveys and case studies to better understand the software development process and how it can be improved by various technologies. I'm interested in the human aspects of the software development process, so I spend more time studying people than most of my colleagues in computer science.
I'm particularly interested in measurement issues (humans are notoriously difficult to measure) research approaches that combine different types of empirical studies.
Most recently, my research has focused on the domain of high-performance computing. I'm involved in the DARPA High Productivity Computing project.
Current grad students
GQM template
The Goal Question Metric approach is very helpful in guiding software engineering experimental designs. Below is a GQM template from Rini Van Solingen and Egon Berghou's book on the GQM method.
| Analyze some | object of study: process, product |
| to | purpose: characterize, understand,evaluate, predict, improve |
| with respect to | focus: cost, correctness, defect removal, changes, reliability, user friendliness |
| from the point of view of | stakeholder: user, customer,manager,developer, corporation |
| in the context of | context factors: problem factors, people factors, resource factors, process factors |
Laws of software development
Software engineering doesn't have many theories in the sense that other engineering fields do. However, there are an informal set of "laws" that folks have proposed that apply to the process of software development.
- Gilb's Law
- Anything you need to quantify can be measured in some way that is superior to not measuring it at all
- Hofstadter's Law
- It always take longer than you expect, even if you take Hofstadter's Law into account.
- Brooks's Law
- Adding manpower to a late software project makes it later.
- Conway's Law
- Organizations which design systems are constrained to produce systems which are copies of the communication structures of these organizations.
- Murphy's Law (original)
- If there are two or more ways to do something, and one of those ways can result in a catastrophe, then someone will do it.
- Lubarsky's Law of Cybernetic Entomology
- There's always one more bug.
- Sturgeon's Law
- Ninety percent of everything is crud.
- Ninety-Ninety Rule (attributed to Tom Cargill of Bell Labs)
- The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.
- Hartree's Law
- The time from now until the completion of the project tends to become constant.
Other quotes
Here are some other quotes that relate to software engineering:
No matter what the problem is, it's always a people problem. - Gerald M. WeinbergVoodoo Programming: Things programmers do that they know shouldn't work but they try anyway, and which sometimes actually work, such as recompiling everything. - Karl Lehenbauer
Einstein argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer. - Fred Brooks, Jr.
There is always a well-known solution to every human problem - neat, plausible, and wrong - attributed to H.L. Mencken
All models are wrong. Some models are useful. - attributed to George Box
Nothing is more terrible than activity without insight - Thomas Carlyle
You cannot have a science without measurement - R. W. Hamming
A foolish consistency is the hobgoblin of little minds - Ralph Waldo Emerson
Inquiry is fatal to certainty - Will Durant
Mathematical ideas originate in empirics .. But, once they are so conceived, the subject begins to live a peculiar life of its own and is better compared to a creative one, governed almost entirely by aesthetical motivations. As a mathematical discipline travels, or after much abstract inbreeding, [it] is in danger of degeneration. Whenever this stage is reached, the only remedy seems to me to be the rejuvenating return to the source; the reinjection of more or less directly empirical ideas. - John von Neumann
In some branches of mathematics, and arguably in parts of physics as well, the research topics of the present leaders are so far removed from reality that there is little hope of ever applying the ideas in the real world. Whereas in mathematics and physics this has taken 150 years, some computer scientists have made the same transition to irrelevance in a mere 25 years. - David Kuck in "High Performance Computing: Challenges for Future Systems"
If you have not been able to show that the author is uninformed, misinformed, or illogical on relevant matters, you simply cannot disagree. You must agree. You cannot say, as so many students and others do, "I find nothing wrong with your premises, and no errors in reasoning, but I don't agree with your conclusions." All you can possibly mean by saying something like that is that you do not like the conclusions. You are not disagreeing. You are expressing your emotions or prejudices. If you have been convinced, you should admit it. (If, despite your failure to support one or more of these three critical points, you still honestly feel unconvinced, perhaps you should not have said you understood in the first place.)- Mortimer J. Adler & Charles Van Doren in "How to Read a Book"
It is easy to lie with statistics. It is hard to tell the truth without statistics. - Andrejs Dunkels
Take, for example, the yes-no decision feature. It was quite appropriate to agronomy, which was where Fisher came from. The outcome of an experiment can quite properly be the decision to use this rather than that amount of manure or to plant this or that variety of what. But we do not deal in manure, at least not knowingly. - Jacob Cohen, "Things I have Learned (So Far)", American Psychologist, Dec. 1990.
"Doing" science implies a belief in science, and I think it is fair to say that this belief lies at the heart of engineering. The engineer does not believe in black magic, voodoo, or rain dances. The engineer believes in scientific truth, that is, truth that can be verified by experiment - Samuel C. Florman in "The Civilized Engineer"
SE Journals, Magazines & Newsletters
- IEEE Transactions on Software Engineering (IEEE)
- IEEE Software (IEEE)
- IEEE Computer (IEEE)
- Software Engineering Journal (IEEE) [no longer published]
- ACM Software Engineering Notes (ACM)
- ACM Transactions on Software Engineering and Methodology (ACM)
- Communications of the ACM (ACM)
- Journal of Systems and Software (Elsevier)
- Information and Software Technology (Elsevier)
- Empirical Software Engineering (Kluwer)
- Annals of Software Engineering (Kluwer) [no longer published]
- Software Quality Journal (Kluwer)
- Software: Practice & Experience (Wiley)
- Journal of Software Maintenance and Evolution: Research and Practice (Wiley)
- Software Process: Improvement and Practice (Wiley)
- Journal of Software Measurement (University of Magdeburg)
- IET Software (IET) International Journal of Software Engineering and Knowledge Engineering (World Scientific)
- Innovations in Systems and Software Engineering (Springer)
- CrossTalk (STSC)
- Software Tech News (DoD)
- Software Development Magazine (commercial)
- Better Software Magazine (commercial)
Conferences
Software engineering conferencesDissertations
ACM SIGSOFT catalog of SE dissertationsSystematic reviews
Barbara Kitchenham give a talk at ICSE 2004, urging the software engineering community to emulate the evidence-based approach of medicine. One step towards this is to use systematic reviews. Here are some links from the medical community.
- Procedures for performing systematic reviews (Keele Univresity Tech Report TR/SE-0401)
- Cochrane Reviewers' Handbook (Cochrane Collaboration)
- Centre for Reviews and Dissemination (University of York)
- How to review the evidence: systematic identification and review of the scientific literature (National Health and Medical Research Council, Australia)
Experimental software engineering links
Books
- Experimentation in Software Engineering: An Introduction by Claes Wohlin, Per Runeson, Martin Host, Magnus C. Ohlsson, Bjorn Regnell and Andres Wesslen
- Basics of Software Engineering Experimentation by Natalia Juristo and Ana M. Moreno
- Statistical Software Engineering (National Academies Press)
Office :
- 122B Avery Hall
- Department of Computer Science and Engineering
- University of Nebraska - Lincoln
- Lincoln, NE 68588-0115
- Email: lorin@cse.unl.edu
- Office: 402-472-3525