Sunday, October 21, 2007

Natasha Haulder & Lovena Puran


SYSTEM ARCHITECTURE MODELLING

A System can be defined as “a set or arrangement of things so related as to form a unity or organic whole”. Every computer-based system can be modeled as an information system using an input-processing-output template. Like nearly all modeling techniques used in system and software engineering, the system model template enables the analyst to create a hierarchy of details. An architectural model presents an abstract view of the subsystems making up a system. We have chosen a Conveyer Line Sorting System (CLSS) to represent that.
CLSS must be developed such that boxes moving along a conveyor line are identical and sorted into one of the six bins at the end of the line. The boxes will pass by a sorting station where they will be identified. Based on an identification number printed on the side of the box ( an equivalent bar code will be provided), the boxes will be shunted into the appropriate bins. Boxes pass in random and are evenly spaced.

For this example, CLSS is extended and makes use of a personal computer at the sorting station site. The PC executes all CLSS software , interacts with the barcode reader to read parts numbers on each box , interacts with the conveyor line monitoring equipment to acquire conveyor line speed , stores all part numbers sorted , interacts with a sorting station operator to produce a variety of reports and diagnostics, send control signals to the shunting hardware to sort the boxes, and communicates with a central factory automation mainframe. It can be shown in Figure 1:







Each box shown in Figure 1 represents an external entity –that is, a producer or consumer or consumer of information. E.g., the barcode reader produces information that is input to the CLSS system. The external entity bar code reader produces input information that is labeled bar code. A system flow diagram shows major subsystems and important lines of information (data and control) flow. At this stage, each of the subsystems can contain one or more elements (e.g. hardware, software, people) as allocated by the system engineer. It is schematically illustrated in figure 2:




Figure 2

Subsystems and the information that flows between them can be specified (bounded )
l for subsequent engineering work. From Figure 2,the emergent properties can be clearly seen that is,properties of the system as a whole rather than properties that can be derived from the properties of components of a system.

Software requirements
Requirements are the descriptions of services n constraints of the systems.

Functional and Non functional requirements
Also called domain requirements

Functional req: statements of services the system should provide, how the system should react to a particular input ant to particular situations. For eg:
Our system the conveyor belt must clearly state what it does.

Normally it carries a series of products (such as canned foods) rapidly from one process to another.

Non functional req: these are constraints on the services or functions offered by the system.

Here for our conveyor belt the constraints may be robustness (such as percentage of events causing failure), speed, ease of use( the system must be easily used by workers), reliability and portability (number of target systems)

Failure to meet a non functional system requirement may make the whole system unusable. Say for eg, if the conveyor belt does not meet the reliability requirement, how will the cans move from one process to another? Also the can are placed in an automatic order with equal distance between each one so as there is an orderly n systematic way from one process to another.

The IEEE 830 standard defines the benefits of a good SRS:
Establish the basis for agreement between the customers and the suppliers on what the software product is to do. The complete description of the functions to be performed by the software specified in the SRS will assist the potential users to determine if the software specified meets their needs or how the software must be modified to meet their needs. [NOTE: We use it as the basis of our contract with our clients all the time].


Reduce the development effort. The preparation of the SRS forces the various concerned groups in the customer’s organization to consider rigorously all of the requirements before design begins and reduces later redesign, recoding, and retesting. Careful review of the requirements in the SRS can reveal omissions, misunderstandings, and inconsistencies early in the development cycle when these problems are easier to correct.


Provide a basis for estimating costs and schedules. The description of the product to be developed as given in the SRS is a realistic basis for estimating project costs and can be used to obtain approval for bids or price estimates. [NOTE: Again, we use the SRS as the basis for our fixed price estimates]


Provide a baseline for validation and verification. Organizations can develop their validation and Verification plans much more productively from a good SRS. As a part of the development contract, the SRS provides a baseline against which compliance can be measured. [NOTE: We use the SRS to create the Test Plan].


Facilitate transfer.The SRS makes it easier to transfer the software product to new users or new machines. Customers thus find it easier to transfer the software to other parts of their organization, and suppliers find it easier to transfer it to new customers.
Serve as a basis for enhancement. Because the SRS discusses the product but not the project that developed it, the SRS serves as a basis for later enhancement of the finished product. The SRS may need to be altered, but it does provide a foundation for continued production evaluation. [NOTE: This is often a major pitfall – when the SRS is not continually updated with changes]

Monday, October 8, 2007

System software
System software is a catch-all term for the programs that handle the running of your computer's hardware. The two main categories are:




Refers to the operating system and all utility programs that manage computer resources at a low level. Software is generally divided into systems software and applications software. Applications software comprises programs designed for an end user, such as word processors, database systems, and spreadsheet programs. Systems software includes compilers, loaders, linkers, and debuggers.


Real time
Occurring immediately. The term is used to describe a number of different computer features. For example, real-time operating systems are systems that respond to input immediately. They are used for such tasks as navigation, in which the computer must react to a steady flow of new information without interruption. Most general-purpose operating systems are not real-time because they can take a few seconds, or even minutes, to react.

Real time can also refer to events simulated by a computer at the same speed that they would occur in real life. In graphics animation, for example, a real-time program would display objects moving across the screen at the same speed that they would actually move.

A real time system may be one where its application can be considered (within 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 system load.


Embedded system
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. In contrast, a general-purpose computer, such as a personal computer, can do many different tasks depending on programming. 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. Some embedded systems are mass-produced, benefiting from economies of scale.

Physically, embedded systems range from portable devices such as digital watches and MP3 players, to large stationary installations like traffic lights, factory controllers, or the systems controlling nuclear power plants. 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.

In general, "embedded system" is not an exactly defined term, as many systems have some element of programmability. For example, Handheld computers share some elements with embedded systems - such as the operating systems and microprocessors which power them - but are not truly embedded systems, because they allow different applications to be loaded and peripherals to be connected.


Business software
Business software is generally any software program that helps a 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 matrix:

* 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, field service 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.

Now, technologies that have previously only existed in peer-to-peer software applications, like Kazaa and Napster, are starting to feature within business applications. JXTA is an open source platform that enables the creation of machine and language neutral applications. Peer based applications will be especially useful for aggregating the information at the edge of the network that currently resides in the neurons of the users themselves.


Artificial intelligence
The branch of computer science concerned with making computers behave like humans. The term was coined in 1956 by John McCarthy at the Massachusetts Institute of Technology. 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

Currently, no computers exhibit full artificial intelligence (that is, are able to simulate human behavior). The greatest advances have occurred in the field of games playing. The best computer chess programs are now capable of beating humans. In May, 1997, an IBM super-computer called Deep Blue defeated world chess champion Gary Kasparov in a chess match.

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.

Natural-language processing offers the greatest potential rewards because it would allow people to interact with computers without needing any specialized knowledge. You could simply walk up to a computer and talk to it. Unfortunately, programming computers to understand natural languages has proved to be more difficult than originally thought. Some rudimentary translation systems that translate from one human language to another are in existence, but they are not nearly as good as human translators. There are also voice recognition systems that can convert spoken sounds into written words, but they do not understand what they are writing; they simply take dictation. Even these systems are quite limited -- you must speak slowly and distinctly.

In the early 1980s, expert systems were believed to represent the future of artificial intelligence and of computers in general. To date, however, they have not lived up to expectations. Many expert systems help human experts in such fields as medicine and engineering, but they are very expensive to produce and are helpful only in special situations.

Today, the hottest area 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.


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, MMORPGs and many other functions.


Software engineering
Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. The discipline of software engineering encompasses knowledge, tools, and methods for defining software requirements, and performing software design, software construction, software testing, and software maintenance tasks. Software engineering also draws on knowledge from fields such as computer engineering, computer science, management, mathematics, project management, quality management, software ergonomics, and systems engineering. Software is often found in products and situations where very high reliability is expected, even under demanding conditions, such as monitoring and controlling nuclear power plants, or keeping a modern airliner aloft. Such applications contain millions of lines of code, making them comparable in complexity to the most complex modern machines. For example, a modern airliner has several million physical parts (and the space shuttle about ten million parts), while the software for such an airliner can run to 4 million lines of code.

Natasha Haulder & Lovena Puran

System software
System software is a catch-all term for the programs that handle the running of your computer's hardware. The two main categories are:
operating systems
utility programs



Refers to the operating system and all utility programs that manage computer resources at a low level. Software is generally divided into systems software and applications software. Applications software comprises programs designed for an end user, such as word processors, database systems, and spreadsheet programs. Systems software includes compilers, loaders, linkers, and debuggers.


Real time
Occurring immediately. The term is used to describe a number of different computer features. For example, real-time operating systems are systems that respond to input immediately. They are used for such tasks as navigation, in which the computer must react to a steady flow of new information without interruption. Most general-purpose operating systems are not real-time because they can take a few seconds, or even minutes, to react.

Real time can also refer to events simulated by a computer at the same speed that they would occur in real life. In graphics animation, for example, a real-time program would display objects moving across the screen at the same speed that they would actually move.

A real time system may be one where its application can be considered (within 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 system load.


Embedded system
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. In contrast, a general-purpose computer, such as a personal computer, can do many different tasks depending on programming. 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. Some embedded systems are mass-produced, benefiting from economies of scale.

Physically, embedded systems range from portable devices such as digital watches and MP3 players, to large stationary installations like traffic lights, factory controllers, or the systems controlling nuclear power plants. 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.

In general, "embedded system" is not an exactly defined term, as many systems have some element of programmability. For example, Handheld computers share some elements with embedded systems - such as the operating systems and microprocessors which power them - but are not truly embedded systems, because they allow different applications to be loaded and peripherals to be connected.


Business software
Business software is generally any software program that helps a 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 matrix:

* 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, field service 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.

Now, technologies that have previously only existed in peer-to-peer software applications, like Kazaa and Napster, are starting to feature within business applications. JXTA is an open source platform that enables the creation of machine and language neutral applications. Peer based applications will be especially useful for aggregating the information at the edge of the network that currently resides in the neurons of the users themselves.


Artificial intelligence
The branch of computer science concerned with making computers behave like humans. The term was coined in 1956 by John McCarthy at the Massachusetts Institute of Technology. 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

Currently, no computers exhibit full artificial intelligence (that is, are able to simulate human behavior). The greatest advances have occurred in the field of games playing. The best computer chess programs are now capable of beating humans. In May, 1997, an IBM super-computer called Deep Blue defeated world chess champion Gary Kasparov in a chess match.

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.

Natural-language processing offers the greatest potential rewards because it would allow people to interact with computers without needing any specialized knowledge. You could simply walk up to a computer and talk to it. Unfortunately, programming computers to understand natural languages has proved to be more difficult than originally thought. Some rudimentary translation systems that translate from one human language to another are in existence, but they are not nearly as good as human translators. There are also voice recognition systems that can convert spoken sounds into written words, but they do not understand what they are writing; they simply take dictation. Even these systems are quite limited -- you must speak slowly and distinctly.

In the early 1980s, expert systems were believed to represent the future of artificial intelligence and of computers in general. To date, however, they have not lived up to expectations. Many expert systems help human experts in such fields as medicine and engineering, but they are very expensive to produce and are helpful only in special situations.

Today, the hottest area 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.


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, MMORPGs and many other functions.


Software engineering
Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. The discipline of software engineering encompasses knowledge, tools, and methods for defining software requirements, and performing software design, software construction, software testing, and software maintenance tasks. Software engineering also draws on knowledge from fields such as computer engineering, computer science, management, mathematics, project management, quality management, software ergonomics, and systems engineering. Software is often found in products and situations where very high reliability is expected, even under demanding conditions, such as monitoring and controlling nuclear power plants, or keeping a modern airliner aloft. Such applications contain millions of lines of code, making them comparable in complexity to the most complex modern machines. For example, a modern airliner has several million physical parts (and the space shuttle about ten million parts), while the software for such an airliner can run to 4 million lines of code.