You are on page 1of 19

Software Engineering Design Architectures

Previously, we learnt that software applications are developed to meet the business needs of organizations for which they are designed. In any software engineering projects, designing of application architecture is essential to help in understanding of the business logic graphically. Although the logic may be explained in plain English or English like statements, otherwise known as Psydocode. Yet, as a software engineer, you cannot escape the use of these architectures at least to avoid the cumbersome nature of writing business logic in using plain text. When developing simple systems, it is ok to use simple architectural model. However, when dealing with complex systems, you have to make use of a hybrid architecture. By hybrid, we mean that each sub-system has to be considered and designed separately for later integration into the complex whole. In this course, we are going to consider some generic models of application systems architectures, in order to help us to:
understand the operation of applications, compare applications of the same type, validate application system designs and assess system components for reuse.

Software Engineering Design Architectures cont

These generic applications are classified as follows:
I. II. III. IV. Data processing systems, Transaction processing systems, Event processing systems and language processing systems.

In practice, many software applications either fall into one of the above four classes or are combinations of them, thus in summary;

Data processing systems operate in batch mode and generally have an input-processoutput structure. Records are input into the system, the information is processed and outputs are generated. Transaction processing systems are interactive systems that allow information in a database to be remotely accessed and modified by a number of users. Information systems and resource management systems can be seen as examples of transaction processing systems. Event processing systems include editing systems and real-time systems. In an editing system, user interface events are interpreted and an in-store data structure is modified. Word processors and presentation systems are examples of editing systems. Language processing systems are used to translate texts from one language into another and to carry out the instructions specified in the input language. They include a translator and an abstract machine that executes the generated language.

Software Engineering Design Architectures cont

Data processing systems (DPS)
As the name implies, DPS focus on data and the databases, which in some cases these databases are by far larger than the systems themselves. Many businesses rely on data processing systems to support many aspects of their business such as:
paying salaries, calculating and printing invoices, maintaining accounts and issuing renewals for membership tickets, rental tickets, etc.

In data processing systems, data are input /output in batches from a file or database rather than from /output to a user terminal. These systems select data from the input records and, depending on the value of fields in the records, take some actions specified in the program. They may then write back the result of the computation to the database and format the input and computed output for printing. The architecture of batch processing systems has three major components, thus;
An input component collects inputs from one or more sources; a processing component makes computations using these inputs; and an output component generates outputs to be written back to the database and printed. These components can be presented graphically as follows:

Software Engineering Design Architectures cont

An input component may read some data (input) from a file or database, check the validity of that data and correct some errors (process), then queue the valid data for processing (output). A processing component may take a transaction from a queue (input), perform some computations on the data and create a new data record by recording the results of the computation (process), then queue this new record for printing (output). Sometimes the processing is done within the system database and sometimes it is a separate program. An output component may read records from a queue (input), format these according to the output form (process), then send them to a printer or write new records back to the database (output). some data processing systems are naturally function-oriented rather than object-oriented, in which case records or transactions are processed serially with no need to maintain state across transactions. When designing function-oriented systems, Data-flow diagrams are used where; each round-edged rectangle in the data flow represents a function that implements some data transformation, and each arrow represents a data item that is processed by the function. 4 Files or data stores are represented as rectangles.

Architectural design scenarios:

Design scenario1: Suppose you are mandated by your organization to develop payroll software for computing employee salary. Then, you may wish to consider the following detail architecture for salary payment system.

Architectural design scenarios:

From the above system,
information about employees in the organization is read into the system, monthly salary and deductions are computed, and payments are made.

Starting from the left of the diagram:

The functions Read employee record, Read monthly pay data and Validate employee data input the data for each employee and check that data. The Compute salary function works out the total gross salary for each employee and the various deductions that are made from that salary. Then compute the net monthly salary. The output functions write a series of files that hold details of the deductions made and the salary to be paid. These files are processed by other programs once details for all employees have been computed. The system then prints a pay-slip for the employee, on which the net pay and the deductions made are recorded.

Advantages of the DFDs

The advantage of data-flow diagrams is that they show end-to-end processing activities. That is, it visibly show all the functions that act on data as the data move through the stages of the system. The fundamental data-flow structure consists of an input function that passes data to a processing function and then to an output function. Quiz: Can you think of any disadvantages of DFDs?

Transaction processing systems (TPS)

Transaction processing systems are designed to process user requests for information from a database or requests to update the database The input-process-output structure of data processing applications also applies to many transaction processing systems. Some of these systems are interactive versions of batch processing system All of the operations in a transaction have to be completed before the changes are made to the database This means that failure of operations within the transaction do not lead to inconsistencies in the database.

Example of transaction2:
A customers request to withdraw money from a bank account using an ATM. This involves:
getting details of the customers account, checking the balance, modifying the balance by the amount withdrawn and sending commands to the ATM to deliver the cash.

Until all of these steps have been completed, the transaction is incomplete and the customer accounts database remain unchanged This type of system can be represented graphically as follows:

Transaction processing systems (TPS) cont..

The above TPS allows customers to query their accounts and withdraw cash from an ATM. The system is composed of two cooperating software sub-systems:
the ATM software and the account processing software in the banks database server. The input and output sub-systems are implemented as software in the ATM, whereas the processing subsystem is in the banks database server. In the Figure above, some detail to the basic input-process-output to show components that may be involved in the input, processing and output activities were added., without details of how these internal components interact,. This is because sequence of operation may differ from one machine to another. Therefore, it is essential to know the target machine before designing the software.

Information and resource management systems

All systems that involve interaction with a shared database can be considered as transaction-based information systems. These information systems allow controlled access to a large base of information, such as : i. Timetable and space allocation systems that allocate classes to timetable slots. The resource being allocated here is a time period and there are usually a large number of constraints associated with each demand for the resource. ii. Library systems that manage the lending and withdrawal of books or other items. In this case, the resources being allocated are the items that may be borrowed. In this type of system, the resources are sometimes allocated and de-allocated from the user of the resource. iii. Air traffic management systems where the resource that is being allocated is a segment of airspace so that separation is maintained between the planes that are being managed by the system. Again, this involves dynamic allocation and reallocation of resource, but the resource is a virtual rather than a physical resource. iv. The records of patients in a hospital, where booking has to be made for consulting a medical practitioner and nurses have to be assigned to patients, etc. Resource allocation systems and information systems are very widely used class of application. They also have similar architectures, as we can see in the following 10 figures:

Architecture of the Library system

Architectures for Information/Resource Management Systems

Architecture for Resource Allocation system


A layered model of an information system

The Library System:

The Library system Login component identifies and authenticates users. You should know that all information systems that restrict access to a known set of users need to have user authentication as a fundamental part of their user communication systems. This could be in form of personal identification, or using credit card details. The form and query manager component manages the forms that may be presented to the user and provides query facilities allowing the user to request information from the system. Again, all information systems must provide this functionality. The print manager component controls the printing of documents. This may be restricted for some reasons, example; a user may print colored documents up to 50 pages per semester on the library printers for economy purposes. The information retrieval and modification layer in the Library system includes applicationspecific components that implement the systems functionality. These are:


Distributed search allows searching for documents in response to user queries across all of the libraries that have registered with the system. The list of known libraries is maintained in the library index. ii. Document retrieval retrieves the document(s) that are required by the user from the server running the Library System Application Software. Rights manager handles all aspects of digital rights management and copyright. It keeps track of who has requested documents and, for example, ensures that the same person does not send multiple request for same document at the same time. Accounting This component logs all requests and, if necessary, handles any charges that are made by the libraries in the system. It also produces management reports on the use of the system.

Resource Allocation Systems

The components of a resource allocation system shown above include:
i. A resource database that holds details of the resources being allocated. Resources may be added or removed from this database. For example, in a library system, the resource database includes details of all items that may be borrowed by users of the library. Normally, this is implemented using a database management system that includes a transaction processing system. The database management system also includes resource-locking facilities so that the same resource cannot be allocated to users who make simultaneous requests. ii. A set of rules governing allocation of resources. For example, a library system normally limits who may be allocated a resource (registered library users), the length of time that a book or other item may be borrowed, the maximum number of books that may be borrowed and so on. This is encapsulated in the resource policy control component. iii. A resource management component that allows the provider of the resources to add, edit or delete resources from the system. iv. A resource allocation component that updates the resource database when resources are assigned and that associates these resources with details of the resource requestor.

Resource Allocation Systems.

v. A user authentication module that allows the system to check that resources are being allocated to authenticated user. In a library system this might be a machine-readable library card; in a ticket allocation system it could be a credit card that verifies the user is able to pay for the resource. vi. A query management module that allows users to discover what resources are available. In a library system, this would typically be based around queries for particular items; in a ticketing system, it could involve a graphical display showing what tickets are available for particular dates. vii. A resource delivery component that prepares the resources for delivery to the requestor. In a ticketing system, this might involve preparing an e-mail confirmation and sending a request to a ticket printer to print the tickets and the details of where these should be posted viii. A user interface component (often a web browser) that is outside the system and allows the requester of the resource to issue queries and requests for the resource to be allocated.


Classify this model according to a particular information System

Ans: Order Processing System


Software Requirements Engineering

The Software Requirements Engineering process aims to create and maintain a system requirements document, and comprises of the following high-level requirements engineering activities: i. Feasibility studies ii. Requirement Elicitation and Analysis iii. Requirements Validation and iv. Requirements Management
These activities can be modeled into waterfall or spiral pattern, as shown in the following figures:

The water fall model of the requirements engineering process

The water fall is mostly concerned with Requirements discovery Requirements documentation Requirements checking


Software Requirements Engineering

Because of the dynamic nature of systems requirements, a more advanced and iterative approach is developed and preferred by many engineers The amount of time devoted to each activity in an iteration depends on the stage of the overall process and the type of system being developed! This model suites development activities in which requirements are developed to different levels of the system The number of iterations around the spiral can vary depending on the system being developed The spiral can be excited after some or all of the user requirements have been elicited

The Spiral model of the requirements engineering process


A closer look on the requirement process activities

Feasibility studies
Feasibility study is the beginning of all new systems development and should be able to address a number of questions including: i. Does the system contribute to the overall objectives of the organization? ii. Can the system be implemented using current technology and within given cost and time constraints? iii. Can the system be integrated with other systems that are currently operational? The input to the feasibility study is a set of preliminary business requirements and an outline description of the system and how it intends to support organizational processes. Normally, feasibility study should be completed within three weeks of inception by consulting managers of the user departments, software engineers who are familiar with the type of proposed system, technology experts and end users of the system The output of the feasibility study should be a report that recommends whether or not it is worth carrying on with the requirements engineering and system development process. Carrying out feasibility study involves information collection, assessments and report writing. The information assessment stage identifies the information necessary to answer the above questions as well as the following questions: i. ii. iii. iv. v. vi. How would the organization cope if this system were not implemented? What are the problems with the current processes and how would a new system help eliminate these problems? What direct contribution will the system make to the business objectives and requirements? Can information be transferred to and from other organizational system? Does the system require technology that has not previously been used in the organizations? What must be supported by the system and what need not be supported? 18

Requirements Elicitation
In requirements engineering, the requirements elicitation is the practice of obtaining the requirements of a system from users, customers and other stakeholders. The practice is also sometimes referred to as requirements gathering. The term elicitation is used in books and research to raise the fact that good requirements can not just be collected from the customer, as would be indicated by the name requirements gathering. Requirements elicitation is non-trivial because you can never be sure you get all requirements from the user and customer by just asking them what the system should do. Requirements elicitation practices include interviews, questionnaires, user observation, workshops, brain storming, use cases, role playing and prototyping.