Monday, October 19, 2009

Midterm Study Questions

My software engineering course is having a midterm on Wednesday, and in preparation, my teacher assigned each of us to write 10 possible questions, similar to those that we should see on the midterm. These questions are related to the screencasts and reading assignments we have been given so far in the semester, all of which are detailed in the course's schedule. Answers are included with the questions.

Here are my study questions:
  1. What is the value of using the FizzBuzz program as a test of programming skills?
    The FizzBuzz program is not a good tool to find good programmers because by nature it is a simple program; it is best used as a tool to weed out people who can't program.

  2. What are some reasons people give for not using an IDE? What are some reasons for using an IDE?
    Reasons against: They are complicated to learn how to use and slow to master - you can't just write a program in your first five minutes of using an IDE; they take longer to load on a computer. Reasons for: They provide many tools, including compiling, refactoring, debuggers, and the ability to step through code; it makes it easier to understand, correct, and improve large software systems; it makes you a more attractive job candidate; makes it easier to work on large projects.

  3. What are some of the differences between IDEs and build tools?
    IDEs provide tools for code writing, incremental compiliation, and testing; and are developer-specific. Build tools provide support for compiliation, testing, packaging, and automated quality assurance; are project-specific.

  4. If you are trying to use an online forum to get help on a problem, what are some steps you should take before making a post and why?
    First, search for answers in manuals, online, and in forums. You should ensure that you are posting in a forum that is related to the content and level of your question so that it is not ignored. Also, you should give as much information in your post as possible, so that answerers will not have to waste time extracting information.

  5. Why does multitasking decrease overall productivity?
    Your brain becomes more focused on managing multi-tasking, than on the various activities that you are trying to focus your attention on. It also takes longer to switch between tasks.

  6. Why should you not rely only on coverage reports when writing tests for a program?
    Just because something was tested once doesn't mean that it will always work. Also, other problems may exist, such as code that does not do what it was originally supposed to or coding style violations.

  7. What is the main difference between white box testing and black box testing?
    White box testing looks at the inner workings of the code - it sees how input is converted to output. Black box testing only checks the input with the expected output, and often preforms functional tests.

  8. When using software configuration management on a team project, what are at least two things you should do in regards to creating branches of your code?
    Branch only when necessary, including when two groups need to work on code using different policies for updates; branch as late in development as possible to minimize changes that need to be propogated between branches; branch instead of freezing a codeline.

  9. What are the differences between Checkstyle, PMD, and FindBugs? What implications does this have toward your choice in automated quality assurance tools?
    Checkstyle is most useful towards checking coding standards, such as placement of whitespace and use of tabs. PMD also deals with coding standards, but will also catch issues like unreachable code or unnecessary statements. FindBugs runs the program and looks for runtime issues or ways to improve the run of the program. Both Checkstyle and PMD work with the source code itself, whereas FindBugs deals with the compiled byte code. Essentially, this means that using all three tools together is a good idea, since they each check for slightly different things.

  10. What is the main idea behind copyleft? How do copyleft software, free software, and open source software differ?
    Copyleft gives everyone permission to run the program, copy the program, modify the program, and distribute modified versions. However, it does not give the persmission to add restrictions to the software. Unlike free software, where people can create a proprietary modified version, users cannot create proprietary versions of copyleft software. Open source software cannot place any restrictions on distributed versions.

To my fellow classmates: good luck with the studying!

No comments:

Post a Comment