Academics

Academics

General

My general area of interest is software engineering. I am in the Experimental Software Engineering Group here at the University of Maryland. My advisor is Victor Basili. My group is closely affiliated with the Fraunhofer Center for Experimental Software Engineering. Within the university, we are associated with UMIACS, and outside the university we are affiliated with CeBASE and ISERN.

I am currently involved in the development time working group of the High Productivity Computing Systems (HPCS) is about evaluating the next generation of high performance computers (i.e. supercomputers) so that the government can make informed decisions about which machines to buy. Needless to say, these computers are pretty expensive, and Uncle Sam would like to be getting his money's worth. This project is being funded by DARPA . There are a number of organizations involved in this project. Our role in the development time working group at UMD is to analyze the human side of the performance issue. We are trying to answer the following kinds of questions: How long does it take people to write software for high performance computers? Which aspects do they find particularly difficult? Will proposed new programming approaches actually reduce development time? What are the tradeoffs between development time and execution time?

Publications

Journals

Conferences

Workshops

Book chapters

Tech reports

Courses

Here is a list of courses I have taken at UMD.

GQM template

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

Here are some laws that apply to 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: 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. (attributed to Tom Cargill of Bell Labs)

Hartree's Law: The time from now until the completion of the project tends to become constant.

Other quotes

Voodoo 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

Conferences

Software engineering conferences

Dissertations

ACM SIGSOFT catalog of SE dissertations

Systematic 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.
  1. Procedures for performing systematic reviews (Keele Univresity Tech Report TR/SE-0401)
  2. Cochrane Reviewers' Handbook (Cochrane Collaboration)
  3. Centre for Reviews and Dissemination (University of York)
  4. 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

Influential studies

Essays and papers