Software Engineering
Which of the following isn't an aspect of high-level design?
Focuses on the details of how the pieces of the application will work
When performing maintenance tasks, which part of the software engineering process should you use to begin addressing each task?
Follow all the normal steps of software development
What term defines a set of one or more fields in one table with values that uniquely define a record in another table?
Foreign Key
What should you do if a bug is discovered and is being used by users to do something not intended?
Formalize it and add it to the application's requirements
Which process tries to use the application's complexity when analyzing metrics?
Function-point normalization
What term defines the process in which several classes are combined into a single parent class to represent common features?
Generalization
Which type of deployment involves moving users over a little at a time where you have some users running the new version and other users running the old version of the software?
Gradual Cutover
Which of the following is a tool used to find the root cause of an issue?
Ishikawa Diagrams
What type of table contains values that are used just as foreign keys?
Lookup
Which step of the software engineering process involves heavy interaction with the customer to gather as much information as possible to lay out a foundation for the project?
Requirements Gathering
Which trait of a prototype is disadvantageous to its use?
Some features may be demonstrated that don't make it into the finished application and are perceived as missing
Which level of code documentation (in terms of actual comments added to the code) does the author of the textbook suggest is the best approach?
Somewhere in the middle - enough comments to make the code understandable
When deploying updates, if you run into problems, you may want to fix a couple of issues to work through easy issues, but at some point, you should stop pushing forward and rollback.
True
Which type of testing is the most specific type, focusing on a specific piece of code?
Unit Test
Which type of software development model assumes you finish each step completely and thoroughly before moving on to the next step?
Waterfall
Which type of testing allows you to be aware of how the method works, giving you extra knowledge for designing tests that lead to finding bugs?
White-Box Testing
Order the steps in the correct sequence as defined by the Software Development Life Cycle.
1. Requirements 2. Design 3. Implementation 4. Verification 5. Deployment 6. Maintenance
The industry average number of bugs per thousand lines of code (kilo lines of code or KLOC) is typically estimated at what range?
15-50
Which level of normalization handles the worst kinds of database problems and is typically the furthest most people go?
3
Which type of testing is usually performed by a user or other customer representative to ensure that requirements have been fulfilled?
Acceptance Tests
Which UML diagram type represents work flows for activities that contains information about individual tasks and decisions for the workflow?
Activity Diagram
Which type of maintenance task would deal most with changes to the hardware environment in which the software is installed? For example, new version of operating systems or hardware becoming obselete?
Adaptive
Which type of model allows you to change the project's goals if necessary during development?
Adaptive Model
Which of the following is NOT a task you may have to perform during deployment?
All of the above could be tasks during deployment
Which of the following is NOT an example of a feature of a most source code control system?
Allows multiple developers to be editing the same file at the same time
What type of documentation includes user manuals, training materials, quick start guides, screencasts, and videos that is meant primarily for consumption by the customer or users of the project?
Application Documentation
Which common database-specific design item deals with tracking modifications to data in the database?
Audit Trails
Which type of test is setup so that regression testing can be ran on a regular interval, on code check in, or other triggers?
Automated Tests
Which of the following is NOT a valid action to take when a flaw is found during the software engineering process?
Blame the customer
After the project has started, what is the name of the process that ensures any stray from original requirements are reviewed and discussed with the customer to approve or reject new requests or revisions?
Change Control
Which architectural pattern separates pieces of a system that needs to use particular functions from parts of the system that provide those functions?
Client / Server
Which architectural pattern regards the system as a collection of loosely coupled components that provide services for each other?
Component-based
When looking at the low-level design for an object-oriented class, which of the following would you not define as part of the class?
Deconstructors
The second system effect refers to having a rollback plan to revert to a previous system state if the software project fails.
False
Which architectural pattern plans for different parts of the application to run on multiple processors, potentially at the same time across multiple computers?
Distributed
Which algorithm feature focuses on making sure that the algorithm meets the need and is useful for the scenario at hand?
Effective
Which architectural pattern designs the system such that the system responds to events as they occur?
Event-Based
Which of the following is the BEST answer as to what "documents" should be stored in regards to a project?
Everything
Using the DRY principle (don't repeat yourself), you have some code to perform a set of actions in one place that needs to be used in another place. The best way to approach the problem is to:
Extract the code into a shared class or method that can be called from multiple places
During deployment you should install all available updates at one time so that you don't inconvenience users repeatedly.
False
Experienced developers can generally agree that even complex programs can be virtually bug free.
False
Fixing a bug is less risky than performing new development.
False
For the source code, the same document management tools used for storing requirements from the customer are typically used for storing source code as well.
False
If a new patch is available to release that includes a security patch, how soon should it be released?
Immediately, even if a patch was released yesterday
Which type of prototyping involves creating a collection of prototypes that separately demonstrate the application's features that are later combined to build the finished application? This system also allows different programmers or teams to work on the pieces at the same time.
Incremental
Which of the following is a disadvantage when using predictive modeling?
Inflexible when handling changes to requirements
Which type of testing verifies that a method fits in with other related code in the existing codebase; it can call other methods correctly and other methods can call it correctly?
Integration Tests
What term defines the communication between two different components or systems that is used to share data? This term can be used both internally and externally.
Interface
Which architectural pattern is a single program that does everything?
Monolithic
Which is NOT an ideal feature in a document management system?
Multiple people can be editing the same file at once
What term defines the process of rearranging a database to put it into a standard form that prevents different types of database problems or anomalies?
Normalization
Which deployment strategy calls for some users to start using the new system while still using the old system as a way to work through any bugs found before completely switching to the new system?
Parallel Testing
Match the following maintenance task categories with the correct definition.
Perfective: Improving existing features and adding new ones Adaptive: Modifying the application to meet changes in the application's environment Corrective: Fixing Bugs Preventive: Restructuring the code to make it more maintainable
What term describes the capability for treating objects as if they were actually from a different class?
Polymorphism
What type of hardware should a developer have to be productive?
Powerful development machine, even if more expensive
Which is likely the best for tracking bugs for a large project with hundreds to thousands of users?
Prebuilt bug tracking software
Which of the following describes the methodology used to predict in advance everything that needs to be done before a project before starting?
Predictive Modeling
Match each type of software development methodology with the correct definition.
Predictive: Provides all features at the same time with full fidelity Iterative: Initially provides all features at a low fidelity. Later releases provide higher and higher fidelity until all features are provided with full fidelity. Incremental: Initially provides fewest possible features for a usable application, but all the features present are provided with full fidelity. Later versions add more features, always at full fidelity. Agile: Initially provides the fewest possible features at low fidelity. Later versions improve the fidelity of existing features and add new features. Eventually all features are provided at full fidelity.
Which feature of an algorithm leads to the algorithm being more thoroughly tested and more performant than if you were to create the algorithm on your own?
Prepackaged
Which type of metric is designed to measure the organization's development process over a long period of time over many projects?
Process Metrics
Which type of development tool allows analysis of a program to determine which parts use the most time, memory, files, and other resources?
Profilers
The term _____ defines an issue where two people or processes updating data results in the last update being accepted and the first update to be rejected.
Race Condition
What is the name of the process that breaks down a parent class into multiple subclasses to capture some difference between objects in the class?
Refinement
Which type of database is the most common and stores related data into tables?
Relational
Which determines defines what is captured when working with the customer that is documented and referred to throughout the rest of the software engineering process?
Requirements
Which below is the best naming of a method or methods for getting stock prices and returning the stock with the largest gain?
RetrieveStocks() FindStockWithHighestGain(stocks)
Which architectural pattern uses a collection of rules to decide what to do next and are sometimes called expert systems or knowledge-based systems?
Rule-Based
Which of the following is the best style of code?
Small blocks of code with comments that explain code should do
Which type of model uses a risk-driven approach to help project teams decide on what development approach to take for various parts of the project?
Spiral
Which deployment strategy using a separate test environment than the developers machine where the software can be installed and tested to work out kinks before moving into the production environment?
Staged Deployment
Which of the following best describes top-down design?
Start with a high-level statement of a problem, then break the problem down into more detailed pieces
Which type of development tool focuses on code's style - measuring how complex code is to examine code quality and maintainability?
Static Analysis Tools
For very small bug fixes, you may not need to spend as much time in all areas of the software engineering process. Which of the following is an area that should NEVER be skimped on?
Testing
Which of the following would indicate that a predictive model may not be the best fit for a project?
The project is substantial in size with many complex pieces
Which of the following best describes the phrase Not Invented Here?
Thinking you need to rewrite a piece of code just because someone else wrote it
Which option is the best for validating input in code released to production?
Throw an exception that is handled in calling code
In general, tall, thin inheritance hierarchies are more confusing than shorter ones.
True
It is more important to write code that works first before spending time optimizing code to make it run fast.
True
It's easier to gather metrics throughout the project rather than waiting until the end.
True
Maintenance is expensive and often accounts for 75 percent of a project's total cost.
True