Professional Documents
Culture Documents
Ooase Imp Ques 2
Ooase Imp Ques 2
2M
UNIT 3
1)LIST OUT THE STEPS IN OOA PROCESS
• Identify Objects and Classes: Recognize key entities and group them into classes based on
attributes and behaviours.
• Establish Relationships: Determine connections between classes, including associations,
generalizations, and compositions.
• Define Behaviour: Specify methods for classes to define their behaviour and fulfil
stakeholder requirements.
6) WHAT IS OCL
OCL stands for Object Constraint Language. It's a formal language used to express
constraints and conditions in the Unified Modeling Language (UML) and other object-
oriented modeling languages. OCL allows developers to define precise rules and conditions
that must be satisfied by objects within a system, aiding in specification and validation of
software designs.
7) CHARACTERISTICS OF OOD
• Objects are abstractions of real-world or system entities and manage themselves
• Objects are independent and encapsulate state and representation information.
• System functionality is expressed in terms of object services
• Shared data areas are eliminated. Objects communicate by message passing
• Objects may be distributed and may execute sequentially or in parallel
12M
UNIT 3
1) EXPLAIN THE GUIDELINES FOR DEVELOPING AN EFFECTIVE DOCUMENTATION
INTRODUCTION:
Good documentation is essential for managing projects effectively. It helps teams communicate
better, spot problems early, and make smart decisions about where to invest resources. Blum points
out that managers are responsible for things like software, hardware, and other costs, so they often
rely on documentation to decide where to allocate those resources.
Before we can document a project, it's crucial to understand the problem we're trying to solve. If we
don't know what problem we're addressing, it's hard to document a solution. Blum asks some
important questions about documentation, like how it will be used, what its goals are, and who will
read it. Answering these questions helps ensure that our documentation serves its purpose
effectively.
Documenting a project relies heavily on the organization's guidelines and standards. While some
organizations have clear and helpful documentation rules, others may lack them altogether or have
overly complex standards.
Bell and Evans offer practical guidelines and a template for creating documentation, particularly for
systems development using the unified approach. It's important to remember that your modelling
efforts serve as documentation for analysis, design, and testing phases.
1.Common cover. All documents should share a common cover sheet that identifies the document,
the current version, and the individual responsible for the content. As the document proceeds
through the life cycle phases, the responsible individual may change.
2.80-20 rule. As for many applications, the 80-20 rule generally applies for documentation: 80
percent of the work can be done with 20 percent of the documentation. The trick is to make sure
that the 20 percent is easily accessible and the rest is available to those who need to know.
3. Familiar vocabulary. The formality of a document will depend on how it is used and who will read
it. When developing a documentation use a vocabulary that your readers understand and are
comfortable with.
4. Make the document as short as possible. Assume that you are developing a manual. The key in
developing an effective manual is to eliminate all repetition; present summaries, reviews,
organization chapters in less than three pages
5. Organize the document. Use the rules of good organization such as the organization's standards,
college handbooks, etc within each section. Most CASE tools provide documentation capability by
providing customizable reports.
2) EXPLAIN THE OBJECT ANALYSIS CLASSIFICATION
1.CLASSIFICATION THEORY
Classification, the process of checking to see if an object belongs to a category or a class, is regarded
as a basic attribute of human nature.
Classification theory, in the context of Object-Oriented Analysis (OOA) and Object-Oriented Design
(OOD), involves organizing and categorizing objects or concepts into classes based on their shared
characteristics or attributes. This process helps in defining clear boundaries and relationships
between different classes, facilitating the development of robust object models. Essentially,
classification theory assists in structuring the system's components effectively, enabling better
understanding, organization, and management of the software's complexity.
Think of classes as categories or groups that help organize objects based on their similarities. Each
class defines the characteristics (like attributes or properties) and behaviours (like methods or
actions) that its objects share. For instance, if we have a class called "car," it might have an attribute
called "colour," and each actual car (or instance) would have a specific colour, like red, blue, or
white.
When we talk about classification, we're more interested in identifying the class an object belongs to
rather than focusing on individual objects. It's like sorting things into different boxes based on their
common traits rather than looking at each thing separately.
The classification process involves discriminating between classes by finding features or consistent
traits shared among their members. It's about categorizing input data into distinct groups by
focusing on important attributes and ignoring irrelevant details.
In essence, this approach involves scanning the problem domain for nouns or noun phrases and
considering them as potential candidates for classes. Nouns typically represent objects or entities,
while noun phrases may describe more complex concepts or relationships.
• Identify Nouns: Scan the problem statement or requirements document and highlight all the
nouns present. Nouns often represent tangible entities, such as "car," "customer," etc.
• Consider Noun Phrases: Look for noun phrases, which are combinations of words acting as a
single noun. These phrases may provide more context or specificity about the objects or
concepts in the problem domain. For example, "customer loyalty program," "payment”, etc.
• Evaluate Potential Classes: Each identified noun or noun phrase is a potential candidate for a
class. Evaluate these candidates based on their relevance, significance, and potential for
encapsulating attributes and behaviours within the system.
• Refinement and Iteration: Refine the list of candidate classes based on further analysis and
discussions with stakeholders. Iterate on the process to ensure that all important objects and
concepts within the problem domain are adequately represented.
3. COMMON CLASS PATTERN APPROACH
It is based on a knowledge base of the common classes that have been proposed by various
researchers. They have compiled and listed the following patterns for finding the candidate class and
object:
Use cases help model the system's scenarios and outline interactions with external actors. They can
be described in text or steps and are a problem-driven approach in object-oriented analysis, focusing
on the problem before the object relationships.
Modelling with use cases, like in the unified approach, aids in identifying system objects. While it
doesn't magically produce classes, creating sequence or collaboration diagrams helps visualize use
case execution and prompts consideration of involved objects.
During system development, designers depict scenarios to reflect how the system should operate.
When redesigning, some modelers start by capturing current system scenarios before transitioning
to desired scenarios.
IMPLEMENTATION OF SCENARIOS
To implement scenarios effectively, the UML recommends creating at least one scenario for each
distinct use-case instance. Each scenario illustrates a unique interaction sequence between actors
and the system, with clear decisions made along the way. This process helps us understand how the
system's objects behave.
Once you've reached the lowest level of a use case, you can create a child sequence diagram or
collaboration diagram to depict the scenario's implementation. Sequence diagrams, like use-case
diagrams, model system scenarios. However, they provide a more detailed view by illustrating
interactions between objects.
In a sequence diagram, objects involved are represented by vertical dashed lines, with their names
at the top. Events occurring between objects are depicted as horizontal lines connecting the vertical
object lines. These event lines are arranged in sequential order from top to bottom, illustrating the
flow of interactions. While sequence diagrams don't necessarily match the steps defined in a use-
case scenario, they offer valuable insights into system behavior and design.
5.CLASSES, RESPONSIBILITIES, AND COLLABORATORS APPROACH (CRC)
This approach helps identify classes' responsibilities, which in turn determine their attributes and
methods. CRC aids in class identification by focusing on whether an object can fulfill a responsibility
independently or requires collaboration with other objects. If collaboration is needed, cooperative
objects are identified as collaborators, helping fulfill the responsibility. Through this process,
attributes and methods of classes are determined based on their responsibilities and collaborators.
Classes, Responsibilities, and Collaborators cards are 4" X 6" index cards. All the information for an
object is written on a card, which is cheap, portable, readily available, and familiar.
The class name should appear in the upper left-hand corner, a bulleted list of responsibilities should
appear under it in the left two thirds of the card, and the list of collaborators should appear in the
right third. CRC starts with only one or two obvious cards. If the situation calls for a responsibility not
already covered by one of the objects:
• Add, or create a new object to address that responsibility.
• Finding classes is not easy.
• The more practice you have, the better you get at identifying classes.
• There is no such thing as the ―right set of classes.
• Finding classes is an incremental and iterative process.
• Grouping: Classes are grouped based on shared attributes, suggesting superclass candidates.
• CRC Cards: Class names are written on CRC cards, noting superclass/subclass relationships.
• Requirement Analysis: Requirements are reviewed to assign responsibilities to classes.
• Responsibility Distribution: Responsibilities are allocated, aiming for generality and higher
placement in the inheritance hierarchy.
• Collaboration Identification: Collaboration between classes is identified, and closely
collaborating classes are physically grouped together.
UNIT 4
1)EXPLAIN ABOUT AXIOMS AND COROLLARIES IN DETAIL
An axiom is a fundamental truth that always is observed to be valid and for which there is no
counterexample or exception.
A corollary is a proposition that follows from an axiom or another proposition that has been proven.
From the two design axioms, many corollaries may be derived as a direct consequence of the
axioms. These corollaries may be more useful in making specific design decisions, since they can be
applied to actual situations more easily than the original axioms. They even may be called design
rules, and all are derived from the two basic axioms
• Corollary 1. Uncoupled design with less information content. Highly cohesive objects can
improve coupling because only a minimal amount of essential information need be passed
between objects.
• Corollary 2. Single purpose. Each class must have a single, clearly defined purpose. When you
document, you should be able to easily describe the purpose of a class in a few sentences.
• Corollary 3. Large number of simple classes. Keeping the classes simple allows reusability.
• Corollary 4. Strong mapping. There must be a strong association between the physical
system (analysis's object) and logical design (design's object).
• Corollary 5. Standardization. Promote standardization by designing interchangeable
components and reusing existing classes or components.
• Corollary 6. Design with inheritance. Common behavior (methods) must be moved to super
classes. The super class-subclass structure must make logical sense.
2) DISCUSS IN DETAIL ABOUT
• Client: A client is a device or software application that requests services or resources from a
server. Clients are typically user-facing and interact with users to collect input, process data,
and display results. Examples include web browsers, mobile apps, and desktop applications.
• Server: A server is a specialized computer or software application that provides services or
resources to clients over a network. Servers manage and store data, execute tasks or
processes, and respond to client requests. Examples include web servers, database servers,
and email servers.
• Communication: Clients and servers communicate with each other using standard protocols
and networking technologies. Clients send requests to servers, which process the requests
and return responses back to the clients. This communication can occur over various
network architectures, such as the Internet or a local area network (LAN).
• Roles: In client-server computing, clients and servers have distinct roles and responsibilities.
Clients initiate requests for services or resources, while servers fulfil these requests by
processing data, executing tasks, or providing access to shared resources.
• Benefits: Client-server computing offers several benefits, including scalability, where servers
can handle multiple client requests concurrently, and centralized management of data and
resources, which improves efficiency and security. It also enables the separation of concerns,
allowing clients and servers to focus on specific tasks without becoming overly complex.
2-TIER ARCHITECTURE
3-TIER ARCHITECTURE
Distributed databases are databases in which data is stored across multiple physical locations or
nodes, connected by a computer network. Here's a brief explanation:
Designing the access layer involves creating classes that facilitate communication between the
application and the data storage layer. The Steps are:
• Identify Needs: Determine what operations the application requires for data access.
• Define Responsibilities: Clarify what each access layer class will handle, like querying or
updating data.
• Design Interfaces: Create clear interfaces for the classes, specifying methods and parameters
needed for operations.
• Choose Patterns: Select appropriate access patterns, such as CRUD operations or transaction
management.
• Implement Classes: Write the classes according to the defined interfaces and patterns,
focusing on modularity and maintainability.
• Test Functionality: Develop tests to ensure the classes work correctly, handling various
scenarios and exceptions.
• Optimize Performance: Improve performance by minimizing database round-trips and
optimizing query execution.
The view layer in software architecture handles presenting information to users and capturing their
interactions. The Steps are:
• Understand Needs: Figure out what the user interface should do and look like.
• Assign Roles: Decide what each class in the view layer will handle, like displaying data or
responding to user input.
• Sketch Interface: Design the visual elements and layouts based on the requirements,
ensuring they're user-friendly.
• Choose Pattern: Select a presentation pattern like MVC or MVP to structure the view layer.
• Build Classes: Implement the classes to handle rendering, user interactions, and updating the
view.
• Test Interface: Check that the interface works as expected, including user interactions and
navigation.
• Speed Up: Optimize the performance of the view layer by reducing rendering times and
unnecessary updates.