Agile Software Development & DevOps midterm exam practice questions

From Knowledge Kitchen
Jump to navigation Jump to search


The software engineering discipline

  1. Who is widely regarded as the first computer programmer (based on what is known from comments written in 1843)?
  2. Would he/she be regarded as a software engineer, in today's understanding of the title? Why or why not?
  3. Who is the first programmer to realize the need for 'librarian types' to keep software development on track (based on comments written in 1947)?
  4. Why is software engineering a necessary and useful discipline. Give 3 specific reasons.
  5. What organization hosted a conference in 1968 that officially spurred the creation of software engineering as a discipline?
  6. What perceived problem was this conference organized to address?
  7. What are stakeholders and why are they important to software engineers?
  8. Concisely explain why a client may prefer the Waterfall process model over an Incremental process.
  9. Why does the Waterfall model often lead to software with known problems?
  10. What advantages does an Incremental process model offer over the Waterfall model?
  11. What is refactoring of code, and when is it performed in iterative software engineering methodologies?
  12. Why is there a difference in how often refactoring must be done in iterative vs. waterfall methodologies?
  13. Give a one-sentence description of each of the high-level software engineering activities, regardless of the process model one follows.
  14. Is the Agile manifesto the first attempt to create an iterative software engineering methodology?
  15. Is software engineering is generally considered to be something those with Computer Science degrees are well prepared for?
  16. Why don't university computer science departments generally teach software engineering?

Scrum

  1. How does Scrum try to address the challenges inherent in the Cone of Uncertainty?
  2. How does 'Scrum' relate to 'Agile'?
  3. What activities does Scrum include that address the Agile manifesto's preference for "Responding to change over following a plan"?
  4. Why should the Product Owner ideally not also act as a Developer?
  5. Describe the management responsibilities of the Scrum Master
  6. What are Acceptance Criteria?
  7. Who drafts the User Stories and the Acceptance Criteria and the Estimates that go along with each story?
  8. What happens to User Stories from the Sprint Backlog that are not completed by the end of the Sprint?
  9. How are new User Stories that are conceived of during a Sprint handled, and when does this happen?
  10. What is a Spike, and how does it differ from a User Story?
  11. Why do planning Poker cards often come with numbers from the Fibonacci Sequence on them?
  12. Explain the purpose of the Git staging index and how it relates to the Working Copy and Repository.
  13. Why is it a good idea to pull before pushing to a Git remote repository when working on a team project?
  14. Should new features be added to code directly in the repository trunk, or in a branch?
  15. Should branches be merged frequently or infrequently with the trunk of a Git repository?
  16. What does a GitHub fork do, in terms of Git?
  17. What should be included in a Git commit message, if the change addresses a documented issue?
  18. Can Git be used in a Centralized workflow?
  19. Is Git a centralized or decentralized version control system?

Version control

  1. Who invented Git?
  2. How does Git differ from Subversion?
  3. Describe the Git workflow followed by many open source projects on GitHub?
  4. Describe the trunk-based Git workflow and how it compares with the feature branch workflow.
  5. Explain the value of the staging index in Git
  6. How do you determine whether your changes conflict with another developer's changes, when sharing a remote repository?

Requirements engineering

  1. Why is it important to write at least the high-level functional requirements in jargon-less natural language?
  2. Which of the following are considered "user requirements"?
  3. Why do both use cases and user stories exist in software engineering practice, and when should you use each?
  4. Who should be interviewed as part of the requirements gathering/elicitation process?
  5. If working on a new system from scratch, what can you observe the user doing as part of your requirements elicitation?
  6. In what cases might you perform remote observation rather than in-person observation?
  7. What sort of model is based directly on the nouns (and sometimes verbs) written in the specification documentation?
  8. What is the difference between multiplicity and cardinality (the quote from Martin Fowler on the Stack Overflow page about this question offers a good explanation - paraphrase it in your own words!)
  9. Which is/are indicated between entities in domain models?
  10. Use cases *always* include...
  11. Which type of UML diagram would you use most often to work out the high-level logic and decision-making of a particular system process?
  12. Which type of UML diagram would be most useful for communicating the changes to a web-based system triggered by a user of that system moving their pointer, clicking, and typing on various parts of a web-based user interface?
  13. Which type of UML diagram would be most useful for working out the communication and sequence of message necessary to be passed among objects in a order to achieve a particular goal?

Popular psychology and software engineering teamwork

  1. Why are we learning about personality types?
  2. Which Maslow-ian needs are we interested in when discussing software team-building?
  3. Which tools, in this class, are we using, in part, to help promote a sense of social belonging?
  4. What defines an extrovert, as compared to an introvert?
  5. Which Myers-Briggs lifestyle trait would be more interesting in clearing an existing Sprint backlog item than in uncovering new ideas for a project?
  6. Give two reasons why Brooks' Law may not apply to today's software development teams
  7. What does GitHub automatically do with CONTRIBUTING.md files in a GitHub repository that makes them valuable?
  8. What labels should an Issue that represents a user story in the Product Backlog have (give the complete set)?
  9. What labels should an Issue that represents a user story in the current Sprint Backlog have (give the complete set)?
  10. What labels should an Issue that represents a task that is currently under development have (give the complete set)?
  11. What milestone should all user stories, tasks, and spikes have if they are under development in the current Sprint?
  12. Whose job is it to maintain the Task Board?

Build systems

  1. Is it ok for the definition of a product to change in the middle of Agile development?
  2. Why learn about build automation systems like Make, Ant, Maven, Gradle, and Grunt when Travis CI, Jenkins or another Continuous Integration server can simply run a bash script when changes are committed to a source code repository?
  3. Which build tools that we've learned about have a built-in ability for minimal recompilation of source code?
  4. What was the original impetus for Stuart Feldman to create Make in 1976?
  5. Which are some features of Make?
  6. Ant and Maven both use build scripts written in XML. Why do more modern build systems not use XML?
  7. What is the advantage of a plug-in architecture to a build system?
  8. Which build systems that we've discussed host an officially-supported repository of plug-ins?
  9. Why might it be unusually difficult for a developer unfamiliar with Maven to understand what tasks a Maven build script performs?
  10. What language(s) is Grunt designed to automate builds for?
  11. Does Grunt perform minimal recompilation of code?
  12. Would a build script written in XML support programming conditional statements, like if/else if/else into a build script?
  13. Would a build script written in YAML support programming conditional statements, like if/else if/else into a build script?
  14. Would a build script written in Groovy or Javascript support programming conditional statements, like if/else if/else into a build script?

Testing

  1. Who created the first unit testing framework, and what programming language was it created for?
  2. What is 'static analysis' of code, and what set of static analysis tools have we discussed in class?
  3. What does the term unit in "unit testing" refer to? (pick the best definition)
  4. What is the value of testing just a unit, versus a larger amount of code?
  5. Why is 'mocking' important for the integrity of unit tests?
  6. Are unit tests typically run on the user interface of an application?
  7. Do unit tests require changes to the code being tested?
  8. Why should unit tests follow the same standards of good code design for your test code?
  9. Imagine the following scenario: a software engineer earns $100/hr. A given simple project requires a set of 100 unit tests. Each unit test takes an average of 3 minutes for the engineer to write. If automated, the unit tests take a total of 1 minute to run. If the tests are executed manually, the unit tests take a total of 10 minutes to run. How many times must the set of unit tests be run in order for the time savings they offer throughout the lifetime of the project to compensate for the up-front cost of their creation?
  10. What is the ideal ratio of test code to production code?
  11. What is 'regression testing'?
  12. How does test-driven development relate to a project's 'code coverage'?
  13. What is the main difference between unit testing and integration testing?
  14. Can integration testing be automated?
  15. Which of the following are advantages of using a code linter over manual checking of code?
  16. What is the relationship between load testing and stress testing of a system?
  17. User Acceptance Testing is a form of...
  18. Can User Acceptance Testing be automated?

Continuous integration

  1. Define continuous integration, including all steps, IN YOUR OWN WORDS.
  2. What tasks can bash scripts perform that are of use in continuous integration workflows?
  3. From a developer's point of view, what are the main advantages of continuous integration as opposed to manual alternatives?
  4. From a business's point of view, what are the main advantages of continuous integration as opposed to manual processes?
  5. Read this essay: http://automationprimer.com/2016/06/05/ethics-of-automation/ (read up until the author starts responding to specific comments he has received from Alowo and Bokamoso). Do you believe the automation described in the essay is ethical? Why or why not? Justify your point of view.
  6. Why is it best to commit small changes to code when using continuous integration?
  7. How does 'continuous integration' compare with 'continuous deployment'?
  8. How does 'continuous deployment' compare with 'continuous delivery'?


What links here

{{Special:WhatLinksHere/Agile_Software_Development_%26_DevOps_midterm_exam_practice_questions}}