Skip to content

Latest commit

 

History

History
100 lines (85 loc) · 4.95 KB

FinalReviewGuide.md

File metadata and controls

100 lines (85 loc) · 4.95 KB

Review slides, notes, and workshop materials. This is a comprehensive exam over the entire semester. Exam will be closed book. However, as a good study practice, it is suggested you prepare a one page summary of key definitions and terms in order to help you learn and practice the material.

  • Implement software engineering practices in a team project.
  • Identify practices related to software process.
  • Decide how to test a system and measure coverage.
  • Compare and contrast design techniques and architectural patterns.
  • Measure the quality of software code.
  • Build tools for supporting software engineering tasks.
  • Evaluate evidence related to a software practice.
  • Identify configuration management practices for improving maintanance of software
  • Apply deployment practices and patterns.

Agile

  • Describe why agile software development was created
  • Explain why each of the core practices of Extreme Programming (XP) are effective
  • Explain why each of the corollary practices of XP may be effective
  • Analyze which XP practices are applicable you should use in your team
  • Explain how to apply scrum and iteration planning to a project.

Design/Patterns/APIs

  • Design notation
  • Understand use cases, wireframes, storyboards
  • Understand core concepts related Design Patterns
  • Identify an architecture when you see it
  • Pick an appropriate architecture for a problem
  • Compare and contrast architectural choices
  • Understand MVVM and databinding
  • How to design an API
  • Understand REST verbs
  • Explain REST principles
  • Explain difference between a framework and API
  • Use and explain above concepts in designing a product.

Testing

  • List and define different types of testing (e.g. acceptance testing vs integration testing)
  • Compare and contrast black-box testing and white-box testing
  • Generating test cases based on black-box testing.
  • Generating test cases based on white-box testing.
  • Define test harness, tear-down, setup, test cases, test suite, assertions
  • Explain Test-driven testing (TDD)
  • Implement unit tests and necessary assertions for testing a system. Design a detailed testing strategy for a product, with appropriate arguments for types of testing used, explanations of trade-offs, and concrete implementation plans.
  • Define mocking.
  • Explain mocking versus other approaches (e.g. dependency injection)
  • Explain advantages and disadvantages of mocking.
  • Implement mocking of RESTful services, database, or file system interfaces.
  • Explain web testing with selenium
  • Implement xpath expressions for asserting web page behavior

Metrics/Static Analysis

  • Understand metrics, including complexity, OO, and other techniques.
  • Understand and derive program graph from code snippet.
  • Define line, branch, condition, branch-condition and MCDC coverage.
  • Explain subsumption and why and when one type of coverage may subsume another.
  • Calculate line, branch, condition coverage.
  • Identify other kinds of coverage: path coverage, mutation testing, data-flow coverage.
  • Explain benefits and disadvantages of using Visitor pattern in static analysis.
  • Identify several uses cases for static analysis.
  • Explain issues and benefits related to static analysis (e.g. versus dynamic analysis or verification.).
  • Implement static analysis for measuring errors or code quality measures.

Empirical/Interviews

  • Explain how to collect evidence about a software engineering practice.
  • Explain issues related to interviews
  • Identity possible interviews and strategies to improve interviews

Configuration Management/Continuous Deployment/Infrastructure

  • Understand core concepts related to Configuration Management
  • Identity traditional and modern components and practices related to configuration management
  • Explain issues related to (not using configuration management)
  • Design and apply configuration management concepts to a project.
  • Explain differences between continuous integration, deployment, and delivery
  • Explain operations responsibility models and team values
  • Identity Deployment Strategies
  • 10 Adages Paper
  • Identity components of cloud infrastructure
  • Explain underlying issues related to infrastructure components
  • Understand microservices
  • Design and apply infrastructure concepts for the design of a scalable and resilence application.
  • Explain concepts related to docker, vagrant, and ansible

Productivity

  • Describe common issues and strategies related to productivity
  • Describe impact related to context switching
  • List the problems that PSP solves.
  • List the items that can be tracked (traditionally and modern sense).
  • Explain how progress can monitored and measured.
  • Explain benefits and issues related to using PSP.
  • Design a PSP system to track your progress as a developer.
  • List some examples of social software processes.
  • Explain benefits related to social software processes.
  • Explain issues that may arise with use of social software processes.
  • Design a Social Software Process that can be used by a software company or community.