Functional Requirements - Answers what a program needs to do
Nonfunctional requirements - Answers The manner in which the functional requirements need
to be achieved
- Real-time requirements (timing)
- Performance requirements (quality)
- Modifiability requirements
- Security requirements
- Usability requirements
Design constraints - Answers Statements that constrain the ways in which the software can be
designed
- User interface
- Platforms
- Schedule requirements
Design Decisions - Answers The steps and thoughts related to design decisions
- Programming language
- Algorithms
Implementations - Answers consistent names, capitalization, and programming conventions;
know thy standard library; test and review code
Acceptance testing - Answers done by clients, or somebody on their behalf, to make sure the
program runs as specified. If this testing fails, the client can reject the program
Verification & Validation test - Answers determine whether the developers are building the
correct system for the client, and verification tests determine if the system build is correct
Black Box Testing - Answers testing a system with no prior knowledge of its internal workings;
identify how the system responds to expected and unexpected user actions, its response time,
usability issues and reliability issues
White box testing - Answers tests the internal logic of the software application. It uses
knowledge about how the application works and its programming code to test for any errors
Breadth of complexity - Answers more functionalities, features, interfaces and linkages to other
, components, users, and data
Depth of complexity - Answers more linkages and connections, data sharing among
functionalities and logic, control passing among functionalities, nest loops among logic, and
multiple hierarchical levels among functions
4 Activities for attacking complex problems - Answers 1. Decomposition
2. Modularization
3. Separation of concerns
4. Incremental iterations
Decomposition - Answers process of breaking down complex problems into smaller, more
manageable parts
Modularization - Answers process of separating the functionality of a program into independent,
interchangeable modules, such that each contains everything necessary to execute only one
aspect of the desired functionality
Continuous Integration/Continuous Deployment or CI/CD - Answers 1. continuously integrating
the completed functionality
2. delivering that feature to the users
3. having the users deploying that functionalities
Technology and Tool Considerations - Answers with multiple developers everyone has different
experience; a common programming language, development tools, database, network,
middleware, etc. need to be decided
Nontechnical Considerations of Development and Support - Answers 1. Effort Estimation and
Schedule
- cannot be too optimistic or aggressive
2. Assignment of the most effective and properly skilled people for the right tasks
Number of communication Paths Formula - Answers [n*(n-1)]/2
Iron Triangle of Project Management - Answers scope (meet requirements/specifications),
schedule (delivered on time within budget), and quality (meet/exceed set quality standards)
Four phases of project management (POMA) - Answers planning, organizing, monitoring, and
adjusting
Planning - Answers - understand the requirements of the project