Introduction


Before moving on to the core of the assignment I firmly believe that there are certain things to explain first, for it would be – not useless, but a real waste if we went on without explaining these terms. So please bear with us for a while as it will certainly help you during your journey as you move further along this blog. So without wasting any more of your time let’s get started.

Software Engineering

As you can see this term consists of 2 distinct words : Software and Engineering. So what is Software and what’s Engineering?

Software

In very simple words, software is defined as computer applications and associated documentation. It refers to the intangible parts of the computer system and is the interface that links the end user to the hardware. For non IT people consider the following case. Say that you have a car and you are the driver. In this case the car is the hardware and you are the end user. So where’s the software? We can say that it is your ACTIONS i.e. what you do is what will drive the car. Similarly, keeping this in mind, software is what will drive the hardware and make it react to the end user.

Engineering : Is a discipline that completely englobes and deals with a particular object in practice.

Software Engineering : Can be defined as a discipline that deals with all aspects of software production - from its design to its implemetation stage.


Tuesday, October 9, 2007

Real Time System

A Realtime System : A hydroelectric Power Station


Emergent System Properties


The name may seem to be quite frightening but the concept is not as difficult as the name sounds.

The easiest way to understand the definition is to break the term into 2 parts : Emergent and System.

Emergent comes from the word to Emerge, it means to arise from or stems from something.

Whereas a System can be defined as a purposeful collection of interrelated components that work together to achieve some objective. A system is composed of sub systems, modules and components. The characteristic of a sub-system is that they can operate as independant systems in their own right and they have specific properties.



When the sub-systems combine and work together as a whole new properties emerge from the system as whole and these properties are known as Emergent System properties. These properties cannot be attributed to any specific part of the system, rather they emerge only when the system as a whole is considered. The way these sub-systems interact with each other influences the successful functioning of the main system.



System Block Diagram



















Functionalities of System


  • Main Frame System

This is the mainframe computer system on which the software is set up and it is this computer that is reponsible for making descisions and carrying out these descisions.

  • Water level sensor / River
A sensor is place in the river to detect the amount of water and the speed at which the water is arriving in the Dam. Readings are taken every hour in normal weather conditions. In case of flooding or bad weather the sensor detects the speed and amount of water every minute and transmits this information to the main computer which takes the necessary actions.
  • River Door Controller
A mechanical device is implanted into the river to control the river gate. In case the mainframe computer decides from the sensor infromation it has obtained that the level and speed of water coming from the river is above normal values then as a precautionary measure it will activate the mechanism and shuts the river door.



  • Water Level sensor in Dam
This sensor has as function to detect the water level in the Dam and send continuous readings to the mainframe system. In case the water level is too low or too high it is up to the main system to decide the appropriate actions to take.
  • Blaster Door Controller in Dam
A mechanical device is implanted into the Dam to control the dam gate. In case the mainframe computer decides from the sensor information it has obtained that the level of water in the dam is below or above normal values then as a precautionary measure it will activate the mechanism and shuts or opens the dam door.



  • Actuator - Emergency outlet
This emergency outlet found at the bottom of the dam is connected directly to the Main software. The mainframe will open this outlet in case that the level of water in the dam has gone above accepted values and release this water so as not to cause overflooding.
  • Turbine Controller
A special mechanism used to control the turbine connected directly to the super computer. It is used to increase or decrease speed of the turbine depending on the time ; whether it is peak time or idle time.
  • Water level sensor in Basin
This sensor detects the water level in the basin and sends the readings to the main PC whereby the latter will take the necessary actions.
  • Evacuation outlet
The mainframe activates this outlet which is found in the basin in case of bad weather conditions and if the water level has gone above the normal level.
  • Water pump
A special pump used to pump back water into the dam when there is a lack of water in the dam or in normal conditions at night. The system uses the electricity produced by the turbine itself to activate the pump.
  • Siren / Telephone Caller
In case there is a system failure the siren is activated and an automated call is sent to the police station and fireman's department.



Emergent Properties

Functional properties : All parts of this system work together to achieve the objective of moving the turbine to produce electricity with the use of water.

Non-functional properties : Reliability, performance, safety and security. The system must be reliable in order to enable the proper function of all parts of the system. Performance must be at its maximum else the system will become unusable by its users if it is too slow. The system must also ensure safety and security for those using it, otherwise it will not be acceptable by users.




Sources of input from the Environment

  • Water (level, speed and quantity)
  • Weather which will determine the water level, speed and quantity.

Monday, October 1, 2007

System Software

Taking the same approach as above I will try to explain what a System is first so you can have a distinct idea. What’s the use of understanding system software when you can’t describe what a system is or what it does.

A system can be defined as a group of interrelated modules working together to achieve a specific task. Not pretty clear for someone who has not done IT ?? Think of your body as a system. And all its parts, i.e. all your organs are the modules of the system – your body. All of your internal organs each have a specific function but each of them work in collaboration to achieve a particular task which is keeping you alive. Applying this idea to the above statement you can now understand what a system is. Referring to the above you will see that software has already been defined so we move on to system software which is nothing but the heart of the system. In other words it is the main backbone software without which a system won’t be able to function.

Applying it to the IT domain we can extrapolate the following :

1. System software – a set of programs that organise, utilise and control hardware in a computer system.

2. 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. It is an essential part of the computer system. System software contrasts with application software, which are programs that help the end-user to perform specific, productive tasks, such as word processing or image manipulation.

Examples of system software are :

1. An operating system
2. An OpenGL
3. Database library

References :

http://en.wikipedia.org/wiki/System_software
http://www.depts.alverno.edu/cil/mod1/software/system.html
http://www.webopedia.com/TERM/s/systems_software.html

Realtime Software

The best way to define this definition is to try to define each word separately. By now you have already understood the meaning of software. So now comes the concept of realtime.

What’s Realtime?

Realtime refers to the situation where something is happening at a particular instant.

So what does that have to do with IT? Infact you will be amazed at the numerous instances where realtime is being used in the IT domain. But before moving on to these examples it is crucial that you understand what is a realtime system and thus realtime software.

According to me, a Realtime system can be defined as any system which has to respond very quickly within a specific timeframe to produce a change in the system taking into account the situation at that particular time and what has been input into the system.

Real time systems can be categorised into 2 types : Soft realtime and Hard realtime.

1. A Soft Realtime system is one which can still accept some lateness in producing change in the system without any damage to the system.

2. A Hard Realtime system is a system which has been designed in a such a way that if it doesn’t respond to a particular situation in a predefined amount then the system crashes and there might be considerable damage if something like that happens.

Realtime software

Is nothing but a software that has been designed to work with a real time system. In other words, a software that must cater for the needs of the system and produce change in the system as required.

Applications of Realtime software are :

1. A nuclear power plant
2. An airline booking system

Issues in Real-time System Design are :

1. Realtime Response
2. Recovering from Failures
3. Working with Distributed Architectures
4. Asynchronous Communication
5. Race Conditions and Timing

References :

http://en.wikipedia.org/wiki/Real-time_computing
http://www.eventhelix.com/RealtimeMantra/IssuesInRealtimeSystemDesign.htm

Business Software

Analyzing this term we get 2 distinct words : Business and Software

So what’s a business?

A business can be defined as any transaction resulting in profit or loss for an individual or a particular organization.

Now moving onto the required definition.....

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:

1. The small business market generally consists of home accounting software, and office suites such as Microsoft Office and OpenOffice.org.

2. 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.

3. 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.
Reference :

Engineering / Scientific Software

Applying the same working principle, understanding the meaning of scientific will greatly help you to understand the idea of scientific software.

Scientific : Is a term to describe anything that has to do with science…

Shifting.......

Scientific software: It is a powerful specialised science based software that has been designed to help scientists and engineers in their work. The characteristics of this software is that it can deal with very large amount of data at a time and has heavy processing capabilities. By this I mean that the software can calculate very complex expressions in an analytic form and deliver the result almost instantaneously depending on the situations where they are used.

This type of software finds its place in almost all sciences. Applications of this software are :

1. Behavioral and social sciences: Examples are criminal science, psychology, political science.

2. Statistical software

3. Evironmental science:

4. Weather forecasts and for space programs in the NASA department.

5. Oil detection program: It is a scientific software used to detect the presence of oil under the sea by analyzing certain factors.

Embedded Software

Understanding what embedded means will greatly help you to understand the concept I am trying to explain. The term may seem to be very difficult but yet the meaning is quite simple to understand.

Embedded comes from the word embed which means to put into something or something that already has something in it.

Transposing this idea to the IT domain embedded means to be in built.
In this case the next logical step to use to make you understand the meaning of embedded software is to first explain what an embedded system is.

Embedded system : Is a system that cannot be programmed by the user because it has already been preprogrammed for a specific task and its software embedded within the equipment which it serves.

Coming to the definition of Embedded software : It is defined as a software that has already been inbuilt in a particular device or system at the time it was at the manufacturing stage.

Common examples of such devices that use embedded software are the :

1. Washing machine. You don’t need to program it when u buy it as it has already been preprogrammed with specific instructions. You just use it.
2. Microwave

Less common examples are :

1. A car


These are the systems in a 1998 Volvo S80, all of which were linked via two networks and controlled by a central module. Thirty years earlier, the Volkswagen 1600 used a microprocessor to control its fuel injection, making it the first embedded system in the auto industry. Today, a car's electronics cost more than the steel used to build it, and high-end cars can have more than 100 CPUs.

2. A shoe - The microprocessor embedded in an adidas running shoe calculates the pressure between the runner's foot and the ground five million times per second and continuously changes the cushioning to match an adjustable comfort level. The computer controls a motor that lengthens and shortens a cable attached to a plastic cushioning element.


Artificial Intelligence Software

Breaking this term……

What is artificial?

Artificial : Artificial refers to something which is not natural. Its original sense, related to artifact and artifice, refers to a product of human endeavor; a more English synonym is man-made. It is also used, however, to mean false, a substitute for the real thing.

What is intelligence?

1. All but the simplest human behaviour is ascribed to intelligence.

2. A very general mental capability that, among other things, involves the ability to reason, plan, solve problems, think abstractly, comprehend complex ideas, learn quickly and learn from experience. It is not merely book learning, a narrow academic skill, or test-taking smarts. Rather, it reflects a broader and deeper capability for comprehending our surroundings—"catching on", "making sense" of things, or "figuring out" what to do.

Artificial Intelligence system

1. The ability of a computer or other machine to perform those activities that are normally thought to require intelligence. The branch of computer science concerned with the development of machines having this ability.

2. The ability of a digital computer or computer-controlled robot to perform tasks commonly associated with intelligent beings. The term is frequently applied to the project of developing systems endowed with the intellectual processes characteristic of humans, such as the ability to reason, discover meaning, generalize, or learn from past experience. Since the development of the digital computer in the 1940s, it has been demonstrated that computers can be programmed to carry out very complex tasks—as, for example, discovering proofs for mathematical theorems or playing chess—with great proficiency.

Artificial Intelligence software

AI software are programs that have attained the performance levels of human experts and professionals in performing certain specific tasks.

Applications of AI are :

1. Medical diagnosis
2. Computer search engines
3. Voice or handwriting recognition.

References :

http://en.wikipedia.org/wiki/Artificial_intelligence
http://www.britannica.com/eb/article-9009711/artificial-intelligence
http://www.answers.com/topic/artificial-intelligence?cat=biz-fin

Web applications

Also referred to as web software, WWW Software, and Web Application Software

Analysing word by word :

Web

The World Wide Web (commonly shortened to the Web) is a system of interlinked, hypertext documents accessed via the Internet.

Application

It is defined as a computer program.

Web application software

1. 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.

2. Software stored on a server and delivered via the Web based on the web, usually a combination of one or more interactive Web pages that can invoke and integrate Browsers, Active Server Pages (ASP), server-side Visual Basic or Java scripts, Access or SQL Server databases, HTML, XML, Cookies, and/or Component Object Model (COM) objects to create a dynamic website for bidirectional submitting, retrieving, and storing of information. A Web application is usually a three-tier structure, comprising a User Service tier (allowing user access to the application), a Business Service tier (allowing the user to carry out complex activities) and a Data Service tier (which allows data storage and retrieval)

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.

Example of web applications are :

1. Webmail
2. Online retail sales
3. Online auctions
4. Wikis
5. Discussion boards
6. Weblogs.

References:

http://www.bitpipe.com/tlist/Web-Applications-Software.html
http://en.wikipedia.org/wiki/World_Wide_Web
http://en.wikipedia.org/wiki/Web_application
http://www.hcirn.com/tutor/webapp/index.php