Management Flashcards
Name a briefly describe the four fundamental software engineering activities
Specification: Defining what the system should do, A.K.A. requirements gathering.
Design and implementation: Defining the organization of the system and implementing the system, including writing source code, creating any necessary assets, and creating documentation.
Validation: Checking that the system does what the customer wants.
Evolution: changing the system in response to changing customer needs, A.K.A Maintenance (This activity also includes release/deployment)
Name and briefly describe the three families of software process models
Waterfall: A plan-driven model where you proceed sequentially through the activities described in the software engineering activities.
Incremental: The activities described are interleaved and performed repeatedly in cycles.
Integration & configuration: The system is assembled from pre-existing components which are then customized and integrated.
Name and briefly describe three types of testing
Component: Individual parts of the system are tested independently. Unit testing usually falls into this category.
System: Testing of the system as a whole, how the different components interact with each other.
Customer: Real users (customers) use the system and evaluate whether it meets their needs - This can also include testing with “real world” data rather than with human customers.
Name and briefly describe the types of prototyping
Throw-away: A prototype that is quickly developed for testing for early demonstration and then discarded.
Evolving: Building off and expanding a prototype to develop it into the final product.
Horizontal: A broad but shallow prototype that shows many features but with little to no functionality (UI mockup).
Vertical: A narrow, deep prototype that demonstrates one specific feature of the product.
List the five levels of CMMI
Initial Repeatable Defined Managed (Capable) Optimizing (Efficient)
Name and briefly describe the organizational principles of agile
Put the customer at the center: Let the team self-organize: Work at a sustainable pace: Develop minimal software 1. Produce minimal functionality 2. Produce only the product requested. 3. Develop only code and tests Accept change
Name and briefly describe the technical principles of agile
Develop interactively:
- Produce frequent working iterations.
- Freeze requirements during iterations.
Treat tests as a key resource:
- Do not start any new development until all tests pass.
- Test first.
Express requirements as scenarios
Name and briefly describe the techniques (Practices) employed by XP
Pair programming On-site customer Test-driven development 40-hour weeks Open workspaces Refactoring Collective ownership of the code Continuous Integration The planning game
Describe some methods for checking the quality of the code before it’s checked in.
Pair programming
Code review
Test-driven development/automated testing
Name and briefly describe the roles in Scrum
Product owner: Customer or customer representative responsible for prioritizing product backlog.
Scrum Master: Facilitator who helps the team use the Scrum process productively and advocates for the rest of the team to the rest of the organization.
Developer: Self-explanatory
Name and briefly describe the practices employed by scrum
Product backlog defined as a list of user stories.
Development carried out in sprints.
Daily standup meeting.
Regular retrospective meetings.
Closed-window rule (Requirements are frozen during development)