Wednesday, May 9, 2012

Data Warehouse


What is Data Warehouse:
A data warehouse is a relational database that is designed for query and analysis rather than for transaction processing. It usually contains historical data derived from transaction data, but it can include data from other sources. It separates analysis workload from transaction workload and enables an organization to consolidate data from several sources.
In addition to a relational database, a data warehouse environment includes an extraction, transportation, transformation, and loading (ETL) solution, an online analytical processing (OLAP) engine, client analysis tools, and other applications that manage the process of gathering data and delivering it to business users.

Abbreviated DW, a collection of data designed to support management decision making. Data warehouses contain a wide variety of data that present a coherent picture of business conditions at a single point in time.
Development of a data warehouse includes development of systems to extract data from operating systems plus installation of a warehousedatabase system that provides managers flexible access to the data.
The term data warehousing generally refers to the combination of many different databases across an entire enterprise

Data Warehouse is collection of data from different operational systems in to one place.we can read,write,modfy the data as per requirement similar like the database.but main difference between database and datawarehouse is that we use data warehouse for decision support and analysis purpose.


Types of Software Testing


Software Testing Types:
Black box testing – Internal system design is not considered in this type of testing. Tests are based on requirements and functionality.
White box testing – This testing is based on knowledge of the internal logic of an application’s code. Also known as Glass box Testing. Internal software and code working should be known for this type of testing. Tests are based on coverage of code statements, branches, paths, conditions.
Unit testing – Testing of individual software components or modules. Typically done by the programmer and not by testers, as it requires detailed knowledge of the internal program design and code. may require developing test driver modules or test harnesses.
Incremental integration testing – Bottom up approach for testing i.e continuous testing of an application as new functionality is added; Application functionality and modules should be independent enough to test separately. done by programmers or by testers.
Integration testing – Testing of integrated modules to verify combined functionality after integration. Modules are typically code modules, individual applications, client and server applications on a network, etc. This type of testing is especially relevant to client/server and distributed systems.
Functional testing – This type of testing ignores the internal parts and focus on the output is as per requirement or not. Black-box type testing geared to functional requirements of an application.
System testing – Entire system is tested as per the requirements. Black-box type testing that is based on overall requirements specifications, covers all combined parts of a system.
End-to-end testing – Similar to system testing, involves testing of a complete application environment in a situation that mimics real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate.
Sanity testing - Testing to determine if a new software version is performing well enough to accept it for a major testing effort. If application is crashing for initial use then system is not stable enough for further testing and build or application is assigned to fix.
Regression testing – Testing the application as a whole for the modification in any module or functionality. Difficult to cover all the system in regression testing so typically automation tools are used for these testing types.
Acceptance testing -Normally this type of testing is done to verify if system meets the customer specified requirements. User or customer do this testing to determine whether to accept application.
Load testing – Its a performance testing to check system behavior under load. Testing an application under heavy loads, such as testing of a web site under a range of loads to determine at what point the system’s response time degrades or fails.
Stress testing – System is stressed beyond its specifications to check how and when it fails. Performed under heavy load like putting large number beyond storage capacity, complex database queries, continuous input to system or database load.
Performance testing – Term often used interchangeably with ‘stress’ and ‘load’ testing. To check whether system meets performance requirements. Used different performance and load tools to do this.
Usability testing – User-friendliness check. Application flow is tested, Can new user understand the application easily, Proper help documented whenever user stuck at any point. Basically system navigation is checked in this testing.
Install/uninstall testing - Tested for full, partial, or upgrade install/uninstall processes on different operating systems under different hardware, software environment.
Recovery testing – Testing how well a system recovers from crashes, hardware failures, or other catastrophic problems.
Security testing – Can system be penetrated by any hacking way. Testing how well the system protects against unauthorized internal or external access. Checked if system, database is safe from external attacks.
Compatibility testing – Testing how well software performs in a particular hardware/software/operating system/network environment and different combination s of above.
Comparison testing – Comparison of product strengths and weaknesses with previous versions or other similar products.
Alpha testing – In house virtual user environment can be created for this type of testing. Testing is done at the end of development. Still minor design changes may be made as a result of such testing.
Beta testing – Testing typically done by end-users or others. Final testing before releasing application for commercial purpose.

Embedded System


A specialized computer system that is part of a larger system or machine. Typically, an embedded system is housed on a single microprocessor boardwith the programs stored in ROM. Virtually all appliances that have a digital interface -- watches, microwaves, VCRs, cars -- utilize embedded systems. Some embedded systems include an operating system, but many are so specialized that the entire logic can be implemented as a single program
An embedded system is some combination of computer hardware and software, either fixed in capability or programmable, that is specifically designed for a particular function. Industrial machines, automobiles, medical equipment, cameras, household appliances, airplanes, vending machines and toys (as well as the more obvious cellular phone and PDA) are among the myriad possible hosts of an embedded system. Embedded systems that are programmable are provided with programming interfaces, and embedded systems programming is a specialized occupation.
Certain operating systems or language platforms are tailored for the embedded market, such as EmbeddedJava and Windows XP Embedded. However, some low-end consumer products use very inexpensive microprocessors and limited storage, with the application and operating system both part of a single program. The program is written permanently into the system's memory in this case, rather than being loaded into RAM (random access memory) like programs on a personal computer.


Items such as smart phones and iPods contain embedded systems. Telephone and communication devices were some the earliest innovators of embedded systems.



10 Reasons Why dotNET Is Better Than Java



This post is prompted by a post by africanboy when he said something like "Java Is Dead" and some people were like attacking him for expressing his view.

I've been a fan of the Java technology for quite some time now. I remember literally copying a Java book when I didn't have the money to buy it.

But one thing I discovered with technology is that it's not always about love but it's more about power. 
The bitter truth is when I compare java technology with CLI (popularly known as .NET), I see that Java is less powerfull in many areas.

I'll be using the words CLI and .NET interchangeably refferring to any implementation of the CLI (.NET, Mono or dotGnu)
This are some of my points.

1- In .NET you have a choice of languages to code with (C#,VB.NET, Java,Boo,Python e.t.c), producing the same type of compiled code but in Java one is limited to the java language. One may argue that jython is an alternative, but even the creator of jython who later created it's .NET version called IronPython admitted that .NET is a more powerful technology.

2, NET prgrams run at native speed while java is interpreted which makes java slower.Although java has Just In Time compilation but it stills run slower. With .NET you are not limited to JIT but have the option AOT or ahead of time compilation if you want to eliminate startup delays.

3. Calling native code in java is not a very clean process. You need to generate some stub files which makes the whole process cumbersome and dirty. In .NET you just declare that you are calling a native function from a specified library and just start calling it.

4. .NET languages are richer than Java. They have object oriented feature that are absent in java e.g properties,delegates,generics.

5. Java GUI programs look alien on the host operating system. Even if you use the OS's theme you still notice that the java widgets look out of place.

6. .NET in the form of Mono has brought a whole revolution on the linux desktop in form of great applications like beagle, tomboy, diva, iFolder, banshee e.t.c. This is something that java has failed to do despite the fact that it's been there long 
before .NET

7. Many programs that would have been difficult to develop with java have been developed with .NET things like compilers (Mono's C# and VB.NET) 3D game engines (unity game engine) e.t.c

8. The CLI is an open standard maintained by an independent standards organization (E.C.M.A) while java is still governed by SUN microsystems.Even though java has recently been open-sourced, it's future will still be highly influenced by SUN.

9. You can code on the .NET platform using Java but you cannot code on Java platform using any of the .NET languages.

10. Using Mono's IKVM to call java code from .NET or convert java classes to .NET assemblies. This is so efficient that large java programs like the eclipse I.D.E have been runned on .NET.

This is not an exhaustive list but I believe 10 points are enough to send the message.

One more thing, feel free to criticize my views or even flame me.

Product and Service based companies


Product based company is one which develops the its own products like hardware monitors , keyboard etc . Product based company uses there own idea to introduce theire product and they work on them from scratch to product.
whereas Project based companies provides services to those products or to projects which were developed by other companies.

Product based Software companies:
1. Google 
2. Amazon 

3. AOL 

4. Sun 
5. Oracle 
6. McAfee 
7. EMC-square 
8. Microsoft 
9. Yahoo! 

10. Goldman Sachs 
11. E&Y 
12. NetApp 
13. IBM (ISL) 
14. HP 
15. SAP 
16.Huawei 
17.Mportal 
18.TeleDNA 
19.vmware 
20.onmobile 
21.NDS
22.Omniture

IT Software products

Adobe reader, VLC media player, format factory And Avast 

Paltform vs Framework



In my programming experience I’ve worked on many platforms and i’ve used many frameworks. The difference between a framework and a platform is described by the verbe i used in the first sentence.
You work on a platform. You use a framework. This is the conceptual difference. The Framework gives you a set of tools to help you write the code faster and better, while the platform gives you the website in a basic form so you can work on it.
For example when you want to build a website in PHP and Mysql you have to write the queries, you have to write the user log-in, registration, almost everything. Using a php framework this things are much easier to do, you have only to write few lines and the Framework knows what to do. A frameworks helps you to write code more efficiently.
On the other hand, the platforms have the basic things done, and they will provide you with basic functions to extend the platform more easy. The real difference is that a good Framework may give you better tools to write efficiently, but if you install a platform it works as it is and you’re work can resume to installing a new theme so the website to look different.
There are many cases when you have advanced requirements, but the platform also can be extended, but in that case you have to take some time to analyze the code.

Framework refers only to software and ignores hardware totally. So, if you work with hardware it will never have a framework ;-). Second: a platform allows a software to run, which is not a framework requirement, since it is more focused on design. For instance, Java is a platform because it has a virtual machine that allows Java applications to run in many operating systems. On the other hand, Spring is a framework because it simplifies the way you design software, taking the responsibility for a lot of things to reduce the effort and the volume of code needed to implement the application. So, a platform doesn't aim to save your time, but to give you one or more possibilities to run your application.
A platform defines a runtime or program environment that frameworks can run on e.g. the Java Virtual Machine, Microsoft's .Net or Mac OS X
 A Framework extends existing functionality or defines new the functionality within the platform e.g. the Java Media Framework, Microsoft's or Mac OS X's Cocoa Framework


Operating System

 What is an operating system ? Where is this used ? Name some operating systems that you have come across? 
An operating system is software that manages the computer hardware . The hardware must provide appropiate mechanisms to ensure the correct operation of the computer system and to prevent user programs from interfering with the proper operation of the system 

The purpose of an operating system is to provide an environment in which a user can execute programs in a convenient and efficient manner.

Operating systems
Quick links

Operating system ABCs
An operating system, or OS, is a software program that enables the computer hardware to communicate and operate with the computer software. Without a computer operating system, a computer would be useless.
Operating system types
As computers have progressed and developed so have the operating systems. Below is a basic list of the different operating systems and a few examples of operating systems that fall into each of the categories. Many computer operating systems will fall into more than one of the below categories.
GUI - Short for Graphical User Interface, a GUI Operating System contains graphics and icons and is commonly navigated by using a computer mouse. See the GUI definition for a complete definition. Below are some examples of GUI Operating Systems.
Multi-user - A multi-user operating system allows for multiple users to use the same computer at the same time and different times. See the multi-user definition for a complete definition for a complete definition. Below are some examples of multi-user operating systems.
Multiprocessing - An operating system capable of supporting and utilizing more than one computer processor(e.g intel, AMD). 
Below are some examples of multiprocessing operating systems.
Multitasking - An operating system that is capable of allowing multiple software processes to run at the same time. Below are some examples of multitasking operating systems.
Multithreading - Operating systems that allow different parts of a software program to run concurrently. Operating systems that would fall into this category are:
Troubleshooting
Common questions and answers to operating systems in general can be found on the below operating system question and answers. All other questions relating to an operating system in particular can be found through the operating system page.
Operating system listing
Below is a listing of many of the different operating systems available today, the dates they were released, theplatforms they have been developed for and who developed them.
Operating system
Date first released
Platform
Developer
Various
AmigaOS
Currently no AmigaOS history.
Various
BSD
Various
Various
Various
Various
Various
Various
Various
Various
Kondara
Various
MAC OS 9
MAC OS 10
MAC OS X
Various
Mandrake
Various
MINIX
MS-DOS 1.x
IBM
MS-DOS 2.x
IBM
MS-DOS 3.x
IBM
MS-DOS 4.x
IBM
MS-DOS 5.x
IBM
MS-DOS 6.x
IBM
Various
Various
OSF
QNX
Various
QNX
Various
Various
Various
Slackware
Various
Various
SuSE
System 1
System 2
System 3
System 4
System 6
Various
System V
Various
Turbolinux
Various
Turbolinux
Various
Ultrix
Unisys
Various
Various
Bell labs
UnixWare
Various
UnixWare
Various
VectorLinux
IBM
Windows 2003
IBM
IBM
IBM
IBM
IBM
PDA
IBM
IBM
IBM
IBM
Various

Components of Operating Sytem:

There are three main components:
1.control programs
2.sytem service programs
3.utility programs
CONTROL PROGRAMS
A. Control Programs 
control & maintain the operation of computer 
1. Initial program loader (IPL) 
Program in the form of firmware (software stored in ROM) 
Computer ON, then electronic chip is automatically activated & IPL read the boot sector routine (BSR), reside in the primary memory
B. System Service Program 
Support control programs 
Divided into three portions 
Linkage Editor 
Librarian 
Input/Output control system 
C. Utility Programs 
e.g. 
MS-DOS : Fdisk, FORMAT, ATTRIB, BACKUP, FIND