Object Oriented Analysis and Design (Part 9)

Objective: Development Process
Which of the following statements are true concerning incremental processes? (Choose all that apply)

When developing an application, you must keep incremental and iterative development separate.
When developing an application, you use incremental development as a divide-and-conquer approach.
When developing an application, multiple teams can work in parallel with concurrent development by taking a part of the application.
When developing an application, you can model increments with activity diagrams.
Answer Explanation: Incremental development involves the development of a model and other artifacts of an application in a series of versions. These versions are each operational on their own to some degree, but each add incremental detail to the previous version. Each version of the product can be debugged and evaluated based on changes from the previous version, keeping changes small, and keeping track of all changes. Incremental development is closely related to iterative development. Incremental and iterative life cycles are architectural releases that evolve into the final system.

The option “When developing an application, you must keep incremental and iterative development separate” is incorrect. In fact, incremental and iterative development is closely allied. Incremental development can be used to break up a project into smaller, more manageable pieces. This is done by having multiple teams work in parallel with concurrent development, with each team taking an increment or a part of an application.

The option “When developing an application, you can model increments with activity diagrams” is incorrect. Activity diagrams are used to show an activity graph, not to model increments.

=================================================================================
Objective: Architecture
You are designing a database application that will hold banking information for InterSwift. InterSwift has many clients that have a high volume of concurrent requests. Some of the requests, especially the requests that involve accessing banking information, are highly important and need to be accomplished in one atomic action.

Which of the following should be considered? (Choose all that apply)

Disable auto-commit and leverage the DBMS’ transaction facilities
Install both the client and server portions of your application on the client machines for quicker access times
Install both the client and server portions of your application on the server machine for quicker access times
Use a three-tiered system to facilitate the scalability of the system
Answer Explanation: Since this particular database will be holding banking information and the transactions need to be in an atomic transaction, disabling the auto-commit in order to use the DBMS’ transaction facilities will prevent the need of writing additional code for this feature. Using a three-tiered design can increase the scalability of your system, since each part of the system is separate. If you needed to replace business rules on the business logic layer, you can do so without affecting the presentation or the storage layers.

The options that recommend installing the client and server portions of the application on the server or client machines are incorrect. They are unnecessary steps that would consume additional disk space.

=================================================================================
Objective: Requirements Modeling
Your company is hired to develop a new system for a small clothing store that is very cost-conscious. Which is the BEST approach to take to minimize time and, in effect, cost to the company during development?

Schedule a requirements meeting with the manager and list as many of the requirements specifications as possible. Select the highest risk requirements from the list to develop into use cases. Expand on these high-risk use cases and use this documentation to develop most of the system.
Develop prototypes for the main functionality and interfaces of the system and review with employees to obtain immediate feedback. Use this feedback to get an idea of changes and expansion required.
Skip most of the use case process in order to develop an elaborate class diagram. Use this class diagram to help illustrate the dependencies within the system to the end users of the application.
Concentrate on developing all required use cases and as many interaction diagrams as possible so the development can be accomplished in one iteration.
Answer Explanation: When under budget or time restraints, prototypes can greatly speed up the development process. They allow you to gain immediate feedback from the domain users that will be accessing the system every day.

The option that begins with “Schedule a requirements meeting with the manager . . . .” is incorrect. Although the manager will most likely be the end decision maker on needed functionality of the system, employees usually prove to be a better resource for extracting requirements. Also, it is not a good idea to develop most of the system without reviewing it with the domain experts.

The option that begins with “Skip most of the use case process in order to develop an elaborate class diagram . . . .” is incorrect. Use cases are nearly essential in extracting system requirements. Use cases also provide excellent documentation for discovering possible classes. Not performing this step will normally prove more time consuming and costly in the end. Also, end users of the system do not normally need to know the dependencies within the system.

The option that begins with “Concentrate on developing all required use cases and as many interaction diagrams as possible . . . .” is incorrect. Very rarely can a system be completed in one iteration. Most attempts to do so will result in an unsuccessful application.

==================================================================================
Objective: Design and Implementation Techniques
Patterns are design templates that offer useful bits of coding techniques, analysis, and design. GRASP (General Responsibility Assignment Software Pattern) describes the principles of responsibility assignment and fundamental principles of software development.

Which of the following patterns is used to create objects with special considerations?

Singleton pattern
Factory pattern
Adapter pattern
Strategy pattern
Answer Explanation: The Factory (GoF) pattern solves problems that deal with the responsibility of creating objects with special considerations, such as better cohesion and complex creation logic. GoF stands for Gang of Four. This acronym refers to the authors of the book, “Design Patterns: Elements of Reusable Object-Oriented Software”.

The option “Singleton pattern” is incorrect. A singleton pattern is a good solution to objects that need only a single, global point of access. A factory (GoF) pattern creates objects with special considerations, such as better cohesion and complex creation logic.

The option “Adapter pattern” is incorrect. An adapter (GoF) pattern creates a common interface that will be used among similar components with different interfaces.

The option “Strategy pattern” is incorrect. A strategy (GoF) pattern determines how to design for similar, but varying, algorithms or policies.

=================================================================================
Objective: Development Process
Object-oriented Analysis and Design (OOAD) is an iterative process that is used to identify objects and classes. You should begin this process by analyzing use cases.

Which of the following are phases in the iterative process? (Choose all that apply)

Transition phase
Inception phase
Elaboration phase
Construction phase
Answer Explanation: The iterative process consists of an inception phase, an elaboration phase, a construction phase, and a transition phase. Inception involves the vision of the product and the project scope. This phase also involves identifying the initial set of use cases, building the business cases, evaluating costs, risks, and developing the project plan for future iterations and phases of the project.

The elaboration phase is designed to prove the project’s technical and financial feasibility. The candidate architecture is explored and the usability is tested through a prototype that exercises the most technical and challenging aspects of the application. Reliability, response, and other non-functional requirements are specified at this time. Use cases are created for most of the functional requirements identified at the inception phase. Resource costs, such as personnel and schedules, are added to the project phase for future phases. Risks are reduced by being identified. The main outcome of this stage is the creation of an architectural baseline and the end of this phase signifies the Life-Cycle Architecture Milestone (LCA).

Design and implementations are part of the construction phase. Coding is performed to bring the concepts conceived during the inception phase and elaboration phase into reality. This phase results in the release of Beta products and the Initial Operation Capability (IOC) milestone.

Transition involves preparing the final product for release to the users. This phase includes final tuning of the application, correcting defects, preparing documentation, and training. Quality of the product is the main focus. The end of this phase results in the Product Release Milestone, once the product has been delivered to the customer.

==================================================================================
Objective: Dynamic Modeling
You observe a co-worker’s activity diagram for a new project that you were appointed to review. In the diagram there are multiplicity asterisks (*) between activities.

What does the multiplicity operator represent in an activity diagram?

Conditionals
Decisions
Iterations
Incremental
Answer Explanation: Activities are symbolized as rectangles with rounded corners. Each activity represents a task that needs to be done, such as a Fill order to complete an order for an inventory. Activities can be sequenced when one activity leads to the next. Activities have triggers to determine if, or how many times, each activity will occur. To show that an activity has several iterations, the multiplicity operator (*) is used.

The option “Conditionals” is incorrect. Conditionals are actually represented by a diamond shape in an activity diagram. Iterations are shown using the multiplicity operator (*).

The option “Decisions” is incorrect. This is a fictitious term in relation to an activity diagram.

The option “Incremental” is incorrect. Incremental normally refers to incremental development, which is the process of adding functionality to a system in a series of versions.

=================================================================================
Objective: Static Modeling
Which of the following is the BEST list of rules to use when naming classes?

Must be significant to the domain, short, and be a verb
Must be significant to the domain, a qualification of its superclass’ name, and a noun
Must be significant to the development team, start with an upper case letter, and be a noun
Must be significant to the development team, easy to remember, and be a verb
Answer Explanation: When naming classes it is better to use terms based on the domain than it is to use developer oriented terms. If a class has a superclass, the name should be a qualification of the superclass’ name. Class names should also be nouns since they represent objects or ideas within a system.

The “Must be significant to the domain, short, and be a verb” option is incorrect. Verbs are not normally well suited to be class names. They are best used as method names since they describe actions.

The “Must be significant to the development team, start with an upper case letter, and be a noun” option is incorrect. A class name should be meaningful to the domain, not the development team. Different programming languages have different conventions regarding the capitalization of class names. The UML, however, does not specify a case convention.

The “Must be significant to the development team, easy to remember, and be a verb” option is incorrect. Class names need to be meaningful to the domain, not the developers. Also, class names should be nouns, not verbs.

==================================================================================
Objective: Static Modeling
Which of the following statements regarding stereotypes are true? (Choose all that apply)

Stereotypes are normally shown as text strings enclosed in guillemets (« »).
Stereotypes can be applied to both classes and relationships.
All stereotypes are user-defined elements.
Stereotypes can be used in class diagrams as well as use case diagrams.
Answer Explanation: The syntax for showing a stereotype in a UML diagram is «stereotype name». Classes and relationships in class diagrams can both have stereotypes applied to them. Some stereotypes you may see attached to classes are «actor», «interface», and «metaclass». Examples of relationship stereotypes are «call», «send», and «use». In addition to class diagrams, stereotypes can also be used in use case diagrams. Some of the stereotypes you may see in a use case diagram are «include» and «extend».

The “All stereotypes are user-defined elements” option is incorrect. There are some stereotypes that are predefined by the UML. Some examples of these are «association», «call», «create», «file», «global», and «type».

=================================================================================
Objective: Architecture
In a well designed three-tiered application, a presentation layer, application logic layer, and a storage layer will exist. The presentation layer is for the graphical user interface (GUI) elements that the end user will see. The application logic layer is used for tasks and rules that govern the process, and the storage layer is for a persistent storage area.

Of the following statements, which one best describes these layers and how they interrelate?

All layers know of each other.
The presentation layer knows the application logic layer and the storage layer, and the application logic layer knows the storage layer.
The presentation layer knows the application logic layer. The application logic layer knows the storage layer. The storage layer knows the application logic layer.
The presentation layer knows the storage layer, the application logic layer knows the presentation layer, and the storage layer knows the application logic layer.
Answer Explanation: One of the most common architectures for information systems are three tiered-architectures. One of best qualities of a three-tiered architecture is the separation of application logic into a distinct logical middle tier. This allows the presentation layer to be relatively free of application processing. The presentation tier forwards application processing tasks to the application logic layer, which then turns communicates information to the storage layer.

The option “All layers know of each other” is incorrect. Not all of the layers know of each other in a three-tiered architecture.

The option “The presentation layer knows the application logic layer and the storage layer, and the application logic layer knows the storage layer” is incorrect. This is not the proper synopsis to detail which layers are aware of each other.

The option “The presentation layer knows the storage layer, the application logic layer knows the presentation layer, and the storage layer knows the application logic layer” is incorrect. This is not the proper synopsis to detail which layers are aware of each other.

==================================================================================
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: