Tuesday, October 16, 2007

BI Upgrade - Second Assignment-Software Engineering by Karishma SUNNOTAH-THAKOOR (ID: 0700172) & Rinabye COOSHNEA-DHURMEA (ID:0700211)


A SIMPLE ORDER - ENTRY SYSTEM





To place an order, a user interacts with the order-entry graphical user interface (GUI) on a client machine. This starts the transaction processing flow.




  • The GUI program calls the client program with a request to place an order. The request identifies a transaction to be run and passes appropriate parameters to qualify the request.


  • The client program calls a CICS (Customer Information Control System) region, passing on the request from the GUI.


  • The CICS region verifies that the user is authorized to make the request and that the user's terminal is supported. If not, the user is prevented from using the transaction processing system.


  • The CICS region assigns a task to process the new instance of the transaction and schedules the task for processing alongside other current tasks. The CICS region processes and monitors the order-entry request throughout the task.


  • The CICS region starts the task, getting storage and other operating system resources for it. It runs the first program for the transaction, the main order-entry program. The program runs on an application server taken from the server's pool of such processes.


  • The main program checks and decrements the entry in the relational database. The CICS region and the RDBMS both lock the database entry to isolate it from update by other transactions. Only this one transaction can update the account. The CICS region logs the change but does not commit it until the shipping and billing operations have succeeded.


  • The main program adds a shipping request to the central shipping queue. The CICS region logs the change but does not commit it until the billing operation has succeeded.


  • The main program invokes a local billing program to route a request to the central billing program, which runs as a remote program on a mainframe host. The local billing program runs on a separate application server.


  • The local billing program sends the billing request through a Peer-to-Peer Communication Gateway server to the mainframe host. It waits for the reply and then returns the reply to the main order-entry program. While the billing program waits for a reply from the mainframe host, in the meantime the main program can be doing other work.


  • Having successfully accessed the database, queued the shipping request, and processed the billing request, the main order-entry program now issues a *syncpoint. The CICS region commits and logs the changes made to the database, shipping queue, and billing data. This makes the changes durable.


  • The CICS region releases the resources used for the order-entry request and makes the application server available for other tasks.


  • The CICS region returns an appropriate success message to the user through the client program and the order-entry GUI.


*: Synchronization (sync) points divide a task, usually a long – running one, into smaller logical units of work (LUWs). Each syncpoint command establishes a syncpoint to mark the completion of a LUW.


EMERGENT PROPERTIES OF THE SYSTEM

Functional Properties:

The above depicted system can be said to achieve its goals in the sense that when a user makes a request, he gets a response for the request he has made. In other words, he has been able to do what he wanted and the system has also been able to achieve what it is meant to achieve.

The system also supports such user tasks as querying details of items in a catalog, ordering items and shipping items to customers. To order an item, the application checks for the item in its database, changes the inventory and sends requests to billing and shipping applications.

Non-Functional Properties:

Security and Performance are two non-functional properties of this system.

Security: The CICS region verifies that the user is authorized to make the request and that the user’s terminal is supported and unless that is the case, the user is prevented from using the transaction processing system.

Performance: The gap between the time a user makes a request to the time he receives a response is fairly short, implying the client-server model depicted in the system is more rapid than other models like, for instance, teleprocessing and file-server models.

THE SYSTEM ENVIRONMENT

The order-entry application and associated programs described in the application are implemented on several client and server machines.

Thursday, October 4, 2007

First Assignment - Software Engineering

Introduction
In this assignment, we are going to discuss about the different types of software applications. We are going to elaborate each one of them:-give a definition, some examples of each type of software application and if possible, give some uses of each.

Software Engineering
Before moving on to software applications, let us first of all talk about software engineering. What is software engineering? Well, software engineering can be defined as the systematic approach towards the analysis, design, implementation, testing and maintenance of software. In more simple terms, software engineering can be defined to be the process which makes the software more viable for the user (from a crude state to a more refined one). Polishing/Shapping the software to state where it can be used more easily by the user.

Software Applications

There are seven types of Software Applications

1. System Software
From our point of view System Software is a generic term referring to any computer software which manages and controls the hardware so that application software can perform a task. To be more explicit, it is a set of programs that organize, utilize and control hardware in a computer system, that is, it helps run the computer hardware and computer system.It includes device drives, operating sytems, servers, window system, utilities and more. Moreover the purpose of systems software is to insulate the applications programmer as much as possible from the details of the particular computer complex being used, especially memory and other hardware features, and such accessory devices as communications, printers, readers, displays, keyboards, etc.

http://en.wikipedia.org/wiki/Software
http://www.techweb.com/encyclopedia/defineterm.jhtml?term=systemsoftware

2. Business Software
Business software is generally any software program that helps business increase productivity or measure their productivity. The term covers a large variation of uses within the business environment, and can be categorized by using a small, medium and large scale:

  • The small business market generally consists of home accounting software and office suites such as Microsoft Office and OpenOffice.org.
  • The medium size or SME has a broader range of software applications, ranging from accounting, groupware, customer relationship management, human resources software, loan origination software, shopping cart software and other productivity enhancing applications.
  • The last segment covers enterprise level software applications, such as those in the fields of enterprise resource planning, enterprise content management (ECM), business process management and product lifecycle management.These applications are extensive in scope, and often come with modules that either add native functions, or incorporate the functionality of third-party software programs.

    http://en.wikipedia.org/wiki/Business_software#column-one

3. Scientific Software
In our opinion Scientific Software are applications that help businesses work fast and accurately by integrating technology that enables our customers and their customers to save time, insure accuracy, gain profit, and enjoyment. Some examples of Scientifc Software are Software utilities, custom software, programs that retrieve and synchronize email automatically in outlook of Exchange, mortgage calculators, back up utilities for windows NT, 95, 98 and 2000.

http://www.softwarescientific.com/

4. Real-time Software
Real-time computing can be defined to be the study of hardware and software systems which are subject to a "real-time constraint"—i.e., operational deadlines from event to system response.

A real-time system may be one where its application can be considered, within the specified context to be mission critical. The anti-lock brakes on a car are a simple example of a real-time computing system — the real-time constraint in this system is the short time in which the brakes must be released to prevent the wheel from locking. Real-time computations can be said to have failed if they are not completed before their deadline, where their deadline is relative to an event. A real-time deadline must be met, regardless of the system load.

Real-time system can also be defined as a system in which the total correctness of an operation depends not only upon its logical correctness, but also upon the time in which it is performed. Real-time system can be classified into hard real-time systems and soft real time systems. In hard real time system, the completion of an operation after its deadline is considered useless - ultimately, this may lead to a critical failure of the complete system whereas a soft real-time system will tolerate such lateness, and may respond with decreased service quality for e.g., dropping frames while displaying a video.

An example of real-time system may be a car engine control system. This is so because a delayed signal may cause engine failure or damage. Other examples of such systems may include heart pacemakers and industrial process controllers.

http://en.wikipedia.org/wiki/Real-time_computing#column-one
http://en.wikipedia.org/wiki/Mission_critical


5. Embedded Software
An embedded system is a special-purpose computer system designed to perform one or a few dedicated functions. It is usually ‘embedded’ as part of a complete device including hardware and mechanical parts. Since the embedded system is dedicated to specific tasks, design engineers can optimize it, reducing the size and cost of the product, or increasing the reliability and performance.

Physically, embedded systems range from portable devices such as digital watches, and MP3 players to large stationary installations like traffic lights, factory controllers, routers or the systems controlling nuclear power plant. Complexity varies from low, with a single microcontroller chip, to very high with multiple units, peripherals and networks mounted inside a large chassis or enclosure.

Some more examples where embedded system is used are:-avionics, aircraft, engine controllers, calculators, washing machines, air conditioners and microwave ovens.

The software written for embedded systems is often called firmware and is stored in read-only memory or Flash memory chips rather than a disk drive. It often runs with limited computer hardware resources: small or no keyboard, screen, and little memory.

http://en.wikipedia.org/wiki/Embedded_system#column-one

6. Web Application
In software engineering, a Web application or webapp is an application that is accessed via web over a network such as the internet or an intranet.

Web applications are popular due to the ubiquity of a client, sometimes called a thin client. The ability to update and maintain Web applications without distributing and installing software on potentially thousands of client computers is a key reason for their popularity. Web applications are used to implement Webmail, online retail sales, online auctions, wikis, discussion boards, Weblogs and many other functions.

Web applications dynamically generate a series of Web documents in a standard format supported by common browsers such as HTML/XHTML. Client-side in a standard language such as JavaScript is commonly included to add dynamic elements to the user interface. Generally, each individual Web page is delivered to the client as a static document, but the sequence of pages can provide an interactive experience, as user input is returned through Web form elements embedded in the page markup. During the session, the Web browser interprets and displays the pages, and acts as the universal client for any Web application.

Web developers often use client-side scripting to add functionality, especially to create an interactive experience that does not require page reloading, which many users find disruptive.

A Web application is commonly structured as a three-tiered application. The Web browser being the first tier, an engine using some dynamic Web content technology (such as ASP, ASP.NET, Cold Fusion, PHP) is the middle tier, and a database is the third tier. The Web browser sends requests to the middle tier, which services them by making queries and updates against the database and generates a user interface.

http://en.wikipedia.org/wiki/Web-application#column-one


7. Artificial Intelligence

Artificial Intelligence can be defined to be the branch of computer science concerned with making computers behave like humans. Artificial intelligence includes:

  • Games playing: programming computers to play games such as chess and checkers;
  • Expert systems: programming computers to make decisions in real-life situations, for example, some expert systems help doctors diagnose diseases based on symptoms;
  • Natural language: programming computers to understand natural human languages
  • Neural networks: Systems that simulate intelligence by attempting to reproduce the types of physical connections that occur in animal brains;
  • Robotics: programming computers to ‘see’ and ‘hear’ and react to other sensory stimuli.

In the area of robotics, computers are now widely used in assembly plants, but they are capable only of very limited tasks. Robots have great difficulty identifying objects based on appearance or feel, and they still move and handle objects clumsily.


Some areas of artificial intelligence is neural networks, which are proving successful in a number of disciplines such as voice recognition and natural-language processing.


There are several programming languages that are known as AI languages because they are used almost exclusively for AI applications. The two most common are LISP and Prolog.

http://www.webopedia.com/TERM/A/application.htmlhttp://www.webopedia.com/TERM/A/expert_system.html