System Conception: Chapter - 1
System Conception: Chapter - 1
System Conception: Chapter - 1
Chapter – 1
System Conception
System conception deals with the genesis of an application. The purpose of system conception is to defer details
and understand the big picture – What need does that proposed system meet, can it be developed at a reasonable
cost, and will the demand for the result justify the cost of building it?
Develop software so that customers can access a bank’s computers and carry out their own
financial transactions without the mediation of a bank employee.
Figure: System concept for an automated teller machine
For the ATM case study, we will assume that we are a vendor building the software. We will assume
that we are developing an ordinary product, since deep complexities of the ATM problem domain are
beyond the scope.
For the bank, ATM software increases automation and reduces manual handling of routine paperwork.
It must be reliable and secure since it will be handling money.
The purpose of the subsequent analysis is to fully understand the problem and its implications. There is no
reason to expect that a problem statement prepared without full analysis will be correct.
Figure 1.2 shows a problem statement for an automated teller machine (ATM) network.
Figure 1.2: ATM network, the ATM case study threads throughout the remainder of this book
Design the software to support a computerized banking network including both human cashiers and
automatic teller machines (ATMs) to be shared by a consortium of banks.
Each bank provides its own comt5puter to maintain its own accounts and process transactions against
them. Cashier stations are owned by individual banks and communicate directly with their own bank’s
computers. Human cashiers enter account and transaction data.
Automatic teller machines communicate with a central computer that clears transactions with the
appropriate banks. An automatic teller machine accepts a cash card, interacts with the user, communicates
with the central system to carry out the transaction, dispenses cash, and prints receipts. The system
requires appropriate record keeping and security provisions. The system must handle concurrent accesses
to the same account correctly.
Domain Analysis
Domain analysis the next stage of development, is concerned with devising a precise, concise, understandable
and correct model of the real world. To build a domain model, you must interview business experts, examine
requirements statements and scrutinize related artifacts.
This model serves several purposes:
ü It clarifies the requirements.
ü It provides a basis for agreement between the stakeholders and the developers.
ü It becomes the starting point for design and implementation.
The analysis model addresses the three aspects of objects: static structure of objects (class model),
interactions among objects (interaction model), and life cycle of objects (state model).
Information for the domain model comes from the problem statement, artifacts from related systems, expert
knowledge of the application domain and general knowledge of the real-world.
i. Find Classes:
Constructing a class model is to find relevant classes for objects from the application domain. Classes
often correspond to nouns. Idea is to capture concepts. Not all nouns are concepts, and concepts are also
expressed in other parts of speech.
§ Operations: If a name describes an operation that is applied to objects and not manipulated in its
own right, then it is not a class.
Example: if we are simply building telephones, then call is part of the state model and not a class.
But Billings system for telephone calls a Call would be important class with attributes date, time,
origin and destination.
§ Roles: The name of a class should reflect its intrinsic nature and not a role that it plays in an
association.
Example: Owner of a car in a car manufacturing database, not correct as a class. It can be a person
(owner, driver, lessee)
§ Implementation Constructs: Eliminate constructs from the analysis model that are irrelevant to
the real world. We may need them during design and not now.
Example: Transaction Log class.
§ Derived classes: As a general rule, omit classes that can be derived from other classes. Mark all
derived classes with a preceding slash (‘/’) in the class name.
Prepare a data dictionary for all modeling elements. Account, ATM, Bank,
Describe the scope of the class within the current BankComputer, CashCard,
problem, including all assumptions or restrictions on its Cashier, CashierStation,
CentralComputer, Consortium,
use. Data Dictionary also describes associations,
Customer, Transaction
attributes, operations and enumeration values.
iii. Find associations: Figure 2.6: Data Dictionary for ATM Classes
A structural relationship between two or more classes is called an association. It is also a reference from
one class to another. Associations often correspond to stative verbs or verb phrases. Idea here is to capture
relationships.
Example: Physical Location(partOf, NextTo), Directed Actions(Drives), Communication(TalksTo),
Ownership(Has, PartOf), Satisfaction of some condition(WorksFor, Manages, MarriedTo).
Verb Phrases
Bank computer maintains accounts.
Bank computer processes transaction against account.
Bank owns cashier station.
Cashier station communicates with bank computer.
Cashier enters transaction for accounts.
ATMs communicate with central computer about transaction.
ATM accepts cash card.
ATM interacts with user.
ATM dispenses cash.
ATM prints receipt.
Central computer clears transaction with bank.
System handles concurrent access. Implicit Verb Phrases
Banks provide software. Consortium consists of banks.
Cost apportioned to banks. Consortium owns central computer.
Bank holds account.
Knowledge of problem domain
Customers have cash cards.
Cash card accesses accounts.
System provides record keeping.
Bank employs cashiers.
System provides security
Figure 2.7: Association from ATM problem statement
§ Multiple Inheritance: If require then apply to increase sharing because it increases both conceptual
and implementation complexity.
§ Generalization vs. Enumeration: Generalization is all about common structure. Enumeration is all
about list of values.
Example: CurrentAccount and SavingAccount share common structure but it does not affect behavior
within the ATM application; Type can be made a attributes of Account and enumerate it.
§ Similar association: When the same association name appears more than once with the same
meaning, try to generalize the associated class.
Example: EntryStation generalizes CashierStation and ATM.
§ Adjusting inheritance Level: Assign attributes and association to specific classes in the class
hierarchy. You may need some adjustment to get everything right.
It can be acceptable to have classes that are “disconnected” from other classes. This usually occurs when
the relationship between a disconnected class and the remainder of the model is diffuse. However, check
disconnected classes to make sure you have not overlooked any associations.
Example: A cash card itself does not uniquely identify an account, so the user must choose an account
somehow.
Try to refine classes to increase sharing and improve structure. Add details that you glossed over during
the first pass. Remove classes or associations that seemed useful at first but now appear extraneous.
Often two classes in the analysis can be combined, because the distinction between them doesn’t affect
the rest of the model in any meaningful way.
The final verified analysis model serves as the basis for system architecture, design, implementation.
You should revise the original problem statement to incorporate corrections and understanding
discovered during analysis.
Application Analysis
We include these application artifacts in analysis, because they are important, visible to users and must be
approved by them.
Most domain models are static and operations are unimportant. The focus of domain modeling is on building
a model of intrinsic concepts. After completing the domain model, we then shift our attention to the details
of an application and consider interaction.
Begin interaction modeling by determining the overall boundary of the system. Then identify use cases and
flesh them out with scenarios and sequence diagrams.
You can construct an application interaction model with the following steps:
During analysis, you determine the purpose of the system and the view that it presents to its actors. During
design, you can change the internal implementation of the system as long as you maintain the external
behavior.
Usually, you should not consider humans as part of a system, unless you are modeling a human organization,
such as a business or a government department.
Example: ATM System boundary
An actor is a coherent face presented to the system, and an external object may have more than one actor.
Example: In ATM System Boundary actors are Customer, Bank and Consortium.
For each actor, list the fundamentally different ways in which the actor uses the system is a use case. The use
cases partition the functionality of a system into a small number of discrete units, and all system behavior
must fall under some use case.
A scenario is a sequence of events among a set of interacting objects. Prepare scenarios for “normal” cases-
interactions without any unusual inputs or error conditions. An event occurs whenever information is
exchanged between an object in the system and an outside agent, such as a user, a sensor, or another task.
ATM Example: Normal scenario for each use case shown in the below figures.
Finally, consider various other kinds of interactions that can be overlaid on basic interactions, such as help
requests and status queries.
§ The ATM can’t read the card. § The machine is out of cash or paper.
§ The card has expired. § The communication lines are down.
§ The ATM times out waiting for a § The transaction is rejected because of
response. The amount is invalid. suspicious patterns of card usage.
An event can trigger effects for a target object. Internal computation steps are not events, except for
computations that interact with the external world.
Use scenarios to find normal events, but don’t forget unusual events and error conditions.
In the application class model, however, you should capture the existence of the controllers in a system,
the control information that each one maintains, and the associations from the controllers to other objects
in the system.
Consider the example, Normal Scenarios for each use case on ATM that has two major control loops.
The outer loop verifies customers and accounts. The inner loop services transaction.
To add operation, we are using use cases. Most complex functionality of a system comes from its use
cases. During the construction of the interaction model, use cases lead to activities. Many of these
correspond to operations on the class model.
4 Shopping-List Operations:
Shopping list Operations are not dependent on particular application but are meaningful in their own right.
ATM Example:
Ø bank.createSavingAccount(customer): account
Ø bank.CreateCheckingAccount(customer): account
Ø bank.createCashCardAuth(customer): cashCardAuthorization
Ø cashCardAuthorization.addAccount(account)
Ø cashCardAuthorization.remove Account(account)
Ø account.close()
Ø cashCardAuthorization.close()
4 Simplifying Operations:
Study class model for similar operation and variations in form on a single operation.
Use inheritance where possible to reduce the number of distinct operations. If needed then only introduce
New superclass. Locate each operation at correct level within the class hierarchy.