Some Fundamental Software Engineering Concepts

I’m still working on Part 2 of the PGM series, so in the meantime I thought I’d toss this up here.

The following is a list of 40 questions I give to people seeking a software engineering position. I haven’t been keeping formal metrics (I should have, in retrospect), but my observations are that most recent college graduates with a BS in computer science cannot answer more than about 37% these correctly. Someone with a Master’s degree might do slightly better, but not by much (about 60% correct). A person with some years of experience as a software engineer will, of course, do pretty well (perhaps as high as 80%). Someone with years of experience as a programmer will typically do only slightly better than the person with the fresh college degree.

I selected these questions to specifically highlight both the history and the practice of software engineering. Over the years I’ve come to the conclusion that while there are a lot of people who know how to write elegant code in a language or two, they don’t really know the history of the tools they use. Many people also don’t understand that software engineering is not all about programming. That’s just a small part of it. But, more than anything else, it has become apparent to me that there are many people running around with the Golden Hammer they received in college, and it doesn’t occur to them that there might be other, better, tools available.

But enough said about that. Here are the questions. Try to answer them without resorting to Wikipedia or Google and see how many you think you know. I’ll post the answers in a few days, but I want to leave these up for a while first.

  1. What is the definition of UUT?
  2. What is a software test harness and how is it used?
  3. What is cyclomatic complexity and who came up with it?
  4. What does SLOC mean and what is it used for?
  5. What is the difference between “white box” and “black box” testing?
  6. Define, succinctly, these three terms: unit testing, module testing and functional testing.
  7. Define control and data coupling, and explain why they might be bad things.
  8. Who is Alan Kay?
  9. What is the difference between OOD and OOP?
  10. What is a MSC and how is it used?
  11. Define the following acronyms: RDD, SDD, SOW, SPMP, SRR, SRS, SVP
  12. What is Edsger Dijkstra’s famous statement about testing?
  13. What does the term “fault injection” mean?
  14. Name at least three key characteristics of a well-formed requirement.
  15. What does MVC stand for? Can you describe it (briefly)?
  16. Is C++ a “pure” object-oriented language?
  17. Is Python a “pure” object-oriented language?
  18. Is Smalltalk a “pure” object-oriented language?
  19. What does modular decomposition mean?
  20. What IEEE-12207?
  21. What is DO-178B?
  22. What is MIL-STD-498?
  23. What is a “V” diagram?
  24. Why are formal requirements important?
  25. Is a use case a requirement?
  26. How are pointers used in Java?
  27. Who was Grace Hopper?
  28. What are the differences between a programmer, a software developer, and a software engineer?
  29. Who invented Modula-2, and what language did it evolve from?
  30. Where was the GUI invented?
  31. What is a cyclic executive, and where is it commonly used?
  32. Why can’t MS Windows be used for hard real-time applications?
  33. What is a boundary condition?
  34. Describe (briefly) what a waterfall life-cycle model is.
  35. Who is Barry Boehm?
  36. Who is Capers Jones?
  37. Who came up with UML?
  38. Name the graphical components of a state diagram.
  39. What is Simula, and when was it created?
  40. What does CASE stand for?
  41. Who is Ivar Jacobson?

0 Responses to “Some Fundamental Software Engineering Concepts”

  1. Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

Follow Crankycode on

Little Buddy

An awesome little friend

Jordi the Sheltie passed away in 2008 at the ripe old age of 14. He was the most awesome dog I've ever known.


%d bloggers like this: