Intermediate Agile Software Development

Version 0.8.0

Lectures and other resources for teaching and learning about software development

Midterm

Midterm

Instructions:

  • Recommended work time 180 minutes.

  • Recommended Period: one week

  • Students can leave the work, save it, and return later to pick up where they left.

  • Total points 50 (100%).

  • There are Bonus points included for students who want to answer to these questions.


Q1: Agile Methodology (10 pts)

During the last decade, Agile Methodology has become a very popular software process model, which is supported by the State of the Agile report.

Part A (5pts):

A1. (3pts) Based on the data in this report (read The 14th annual STATE of AGILE Report, 2020), what are the top 3 features of Agile that are different from the traditional software engineering approach and make it so popular? Justify your selections by giving reasons.

A2. (2pts) Research and list 3 weaknesses of Agile you think makes it less desirable. Your answers must cite numbers/info in the latest report The 14th annual STATE of AGILE Report, 2020.

Part B (5pts):

B1. (2pts) Explain why you think Agile is (or is not) an appropriate process model for your class team project. Construct a convincing argument that includes whether stand-up meetings, sprint planning, user stories, and retrospectives are useful, and whether other Agile features are useful for your team.

B2. (3pts) Create two semester-long development plans for your current project: one using a Waterfall model, and another one using an Agile model, and then compare the two.


Q2: Object-oriented Design (10 pts)

Answer BOTH of these questions based on information from multiple sources:

Part A (5pts): What is the main purpose of object-oriented (OO) design and programming, and why did it become so popular in the software world? Is that popularity fading? Do some research and discuss about its weaknesses. Discuss when it is proper to use full-fledged OO design versus when it is excessive. Give examples of popular languages, frameworks, or use-cases that are not object-oriented. Give references to your sources.

Part B (5pts): Choose one OO design pattern from OO Design Patterns Card, describe its meaning and usage. Then, describe a real-world program example that employs it. Be detailed.


Q3: Version Control (10 pts)

Answer BOTH of these questions:

Part A (4pts): Describe 4 key features of version control systems that make them useful, and explain why they are indispensable in today’s software development.

Part B (6pts): You are given a repo called HelloSD. This repo includes a Readme.md and a file check.sh. You are working on this repo with a team of people. The team is working in parallel on this repo to complete some task. List all the steps you need to do to add your changes to the check.sh file correctly to the repo (on the master/ branch). Chose the best strategy for full points (hint: make your own branch and name it with your first name). At each step provide the command line code necessary to complete the step, followed by a brief description. Missing command line or description will result in losing points.

BONUS (2pts) What are 4 key differences between version control systems that are centralized (e.g., Subversion, CVS) versus distributed (e.g., Git, Mercurial)


Q4: Project Role (10 pts)

Answer BOTH of these questions:

Part A (5pts): Explain your primary role in your project team. How did you affect your teammates’ work on the project so far? What accomplishments are you proud about and what mistakes did you make? Then, for each of your teammates, assign them a score between 0 (lowest, troll) and 3 (highest, super). Justify this number by explaining their role and work products so far in the project. Don’t hesitate to cut some points because it is not the only information I use to calculate effort scores. It’s always good to let your teammates know whether you’re happy with their work ethic and contributions (5 pts for your contribution, the average of your teammates scores for you will be reflected in the requirements phase project grading). Missing scores (in numbers) will be penalized (2 pts) for this question.

Part B (5pts): Explain the difficulty estimate scale that you decided with your team. Given an account of the user stories and subtasks that were assigned to you. List the total estimated difficulty and hours that you logged for your tasks. What were your work products that resulted from this role so far? How long did they take (based on what was logged)? What is left to go? How much are you planning to take on in the next iteration? How does this compare to your teammates?


Q5: Article Discussion (10 pts)

Answer ONLY ONE of the following questions. Each requires reading a short article by Joel Spolsky, and then discussing it. Write at least a paragraph, but don’t exceed one page.

  1. In Things You Should Never Do, Part I, Joel Spolsky argues against rewriting code from scratch. Study his arguments and provide two counter-arguments to his points (i.e. supporting rewriting code from scratch).
  2. In The Iceberg Secret, Revealed, what’s wrong with Joel’s customers? Add a new argument that supports his hypothesis from your interaction so far with your own client.
  3. In The Law of Leaky Abstractions, Joel describes several examples of abstractions gone bad. Based on his examples, provide a new example from your own past experience that matches with this pattern.
  4. In The Perils of JavaSchools, Joel complains about teaching Java in computer science/IT curriculums. As a student in such a school, argue for or against his points based on your personal experience and knowledge among peers.
Last updated on 20 Dec 2020
Published on 23 Nov 2019
 Edit on GitHub