Subscribe by Email


Showing posts with label Unit. Show all posts
Showing posts with label Unit. Show all posts

Thursday, June 21, 2012

What ingredients are necessary to achieve component composition?


Component based software development or CBSD is nowadays becoming a very common practice when it comes to re- using the already existing practice components that have already been validated. This practice has shortened the development cycle gradually and has enhanced the quality of the software products or artifacts. This approach of software development is focussed up on the development of new software systems and applications through the selection and assembling components that belonged to the pre- existing software components. 

Furthermore, CBSD development methodology helps to:
  1. Accelerates the productivity of the software development
  2. Reduces the overall development cost
  3. Reduces maintenance efforts
  4. Enhances flexibility
  5. Enhances maintainability
  6. Assembles system rapidly
  7. Reduces the time to market
Usually no wear and tear occurs to the software system but there is a need to change or modify the software in accordance with the changes in business needs and complexity. Since the system keeps on acquiring more and more complexity, and hence more and more errors are introduced. 
This whole concept of component based software development is based up on components and the success of this development approach is highly affected by the composition of the software components that are being used.

What is a Component?


- A component as we know can be defined as a re- usable unit of deployment which has its access through a graphical user interface. 
- Component can be thought of as an independent entity that possesses its own complete functionality that can be distributed separately and shows no problem in upgrading from time to time. 
- Certain standards have been defined according to which the components are developed and are re- used. 
- Smaller pieces of software are aggregated at a high level and this aggregation is what that forms a component.  

Types of ingredients in Component Based Software Development



  1. An ideal component consists of the implementation detail obtained from the environment that can be re used by the interfaces of those components. This is essential as re- usability of the components is very much important for the component based software development.
  2. The second most important ingredient is the service or functionality that is to be provided by the component.
  3. Quality aspects like predictability, component reliability, usability and so on.
  4. The composition of the components requires meta information regarding the interfaces of the components and properties so as to support the tools during the process of the component composition. This meta information is obtained from the implementation/ interface repositories, type libraries or introspection or dedicated info classes etc.

Different Means of Component Composition


- Though the implementation inheritance works for most of the object oriented frame works, it does not prove useful for the component composition.
- The composition of the components takes place on a binary level. 
- There are 4 means of component composition:
  1. Scripting or glue languages
  2. Component frame works
  3. System languages
  4. Visual programming
All the above mentioned means have their own advantages and disadvantages but, they all are considered to be useful when used in combination. 

- Mostly scripting languages like tcl, visual basic etc are used for component composition rather than using system languages like java, Pascal, C++ etc. 
- The scripting languages are found convenient for this purpose because they are intended for plugging components together operating on a high abstraction level as compared to the system languages. 
- The component composition requires an equivalent object oriented frame work called component frame work and in this the glue code between the classes is predefined for a specific application domain. 


Monday, February 6, 2012

What are different aspects of Institute of Electrical and Electronics Engineers (IEEE)?

ABOUT IEEE
- The institute of electrical and electronics engineers is often abbreviated and called as IEEE.
- The institute has its head quarters in the city of New York.
- It is a non profit organization and is comprised of professionals from the fields of electrical and electronics engineering.
- The main aim of the association is to continually make excellent technological advancements in the field of electrical and electronics engineering.
- IEEE currently has around 40, 00, 00 members world wide and across 160 plus countries.
- Around 45 percent of the member population is from countries other than United States.
- IEEE was started as a non profit association in the New York City in the year of 1963.
- It was formed as a resultant the merging of 2 great institutes of that time namely the American Institute of electrical engineers (AIEE) and the institute of radio engineers (IRE).
- AIEE and IRE were formed in 1884 and 1912 respectively and in 1963 they merged together to give rise a new association i.e., institute of electrical and electronics engineers.

IRE AND AIEE
- The IRE was mostly concerned with the works regarding radio engineering.
- It was composed several small associations dealing with their own subjects like wireless technology and telegraph engineering etc.
- On the other hand, the AIEE was involved with the technology of wire communications like telephony and telegraphy, power systems, light systems and so on.
- The field of electronics engineering saw a huge rise in 1930s.
- At that time it was obvious for an electronics engineer to become a member of IRE.
- It happened so because with the advent of technological advancements it was getting difficult to keep the technology of IRE and AIEE from mixing with each other.
- The competition between the 2 organizations continued till the end of World War II.
Soon after that the 2 separate organizations were consolidated and a new association IEEE took birth.

FORMATION OF IEEE
- The formation of the IEEE was officially declared on the date of 1st January, 1963.
- Following were some prominent and influential presidents of IEEE:


Elihu Thomson (1890, AIEE)
Alexander Graham Bell (1892, AIEE)
Charles Proteus Steinmetz (1902, AIEE)
Lee De Forest (1930, IRE)
Frederick E. Terman (1941, IRE)
William R. Hewlett (1954, IRE)
Ernst Weber (1959, IRE; 1963, IEEE)
Ivan Getting (1978, IEEE)


AIM OF IEEE
- The main aim of the IEEE is to make theoretical and practical advancements which are educational and scientific and in the field of electronics, electrical, computer engineering, communications, related sciences and arts, and the other allied branches of engineering.

- IEEE also organizes conferences and publishes scientific journals on the related matters.

- IEEE is also responsible for organizing standards in the industrial area like:

bio medical technology
electric power
energy
information assurance
information technology
consumer electronics
aerospace
telecommunications and
nanotechnology


DEVELOPMENT OF IEEE
- Till date IEEE has developed over 900 technical standards.
- Therefore, it can be concluded it is also an organization for standards development.
- It conducts various programs in the institutes of higher learning.
- The merging of the two institutes can be seen in the logo of IEEE.
- It consists of a diamond shape which resembles the kite of Benjamin Franklin.
- In the kite there is an illustration of the right hand thumb rule.
- IEEE is a dual nature institute and has following 2 parts:
1.Technical focus: it refers to the computer society of IEEE.
2.Geography: it refers to the Philadelphia and South Africa section.

Apart from these there is one more unit that is managed by IEEE namely organizational unit IEEE- USA. The purpose of this unit is to implement the strategies and policies.


Saturday, April 23, 2011

How are programs tested? Explaining Unit Testing and Integration Testing

In testing programs, individual units are tested and this comes under unit testing. Then, their relationship with one another is tested which comes under integration testing.

UNIT TESTING


- It tests the smaller building blocks of a program.
- It confirms that each module performs its assigned task.
- It involves testing the interface, local data structures, boundary conditions, independent paths and error handling paths.
- Two things are used for unit testing : Driver and Stub.
- Driver is a program that accepts test case data, passes data to the component to be tested, and prints relevant results.
- Stub is program that performs support activities such as data manipulation, queries of states of the component being tested and prints verification of entry.

INTEGRATION TESTING


- Integration testing is followed after unit testing.
- All classes are tested for integration.
- Each component performs correctly within collaboration and that each interface is correct.
- Integration testing can be done by thread based testing approach. A thread is a path of communication among classes that needs to process a single input or respond to an event.
- Regression testing is re-execution of some subset of tests to ensure that changes have not produced unintended side effects.


Thursday, October 14, 2010

Validation phase - Unit Testing - how to write Unit test cases

Preparing a Unit test case document commonly referred as UTC is an important task in unit testing activity. Having a complete UTC with every possible test case leads to complete unit testing and thus gives an assurance of defect free unit at the end of unit testing stage.

While preparing unit test cases the following aspects should be kept in mind-

Expected functionality
Write test cases against each functionality that is expected to be provided from the unit being developed. It is important that user requirements should be traceable to functional specifications which should be traceable to program specifications which should be traceable to unit test cases. Maintaining such traceability ensures that the application fulfills user requirements.

Input Values
- Write test cases for each of the inputs accepted by the unit. Every input has certain validation rule associated with it. Write test cases to validate this rule.
- There can be cross-field validations in which one field is enabled depending upon input of another field. Test cases for these should not be missed.
- Write test cases for the minimum and maximum values of input.
- Variables that hold data have their value limits. In case of computed fields, it is very important to write test cases to arrive at an upper limit value of the variables.
- Write test cases to check the arithmetic expressions with all possible combinations of values.

Output Values
- Write test cases to generate scenarios which will produce all types of output values that are expected from unit.

Screen Layout
Screen/report layout must be tested against the requirements. It should ensure that pages and screens are consistent.

Path Coverage
A unit may have conditional processing which results in various paths, the control can traverse through. Test cases must be written for each of these paths.

Assumptions and Transactions
A unit may assume certain things for it to function. Test cases must be written to check that the unit reports error if such assumptions are not met.
In case of database applications, test cases should be written to ensure that transactions are properly designed and in no way inconsistent data gets saved in the database.

Abnormal terminations and Error messages
Test cases should be written to test the behavior of unit in case of abnormal termination.
Error messages should be short, precise and self explanatory. They should be properly phrased and free of grammatical mistakes.


Wednesday, October 13, 2010

Validation phase - Unit Testing - Stubs and Drivers

The validation phase falls into picture after the software is ready or when the code is being written. There are various techniques and testing types that can be appropriately used while performing the testing activities.

Unit Testing


A unit is allocated to a programmer for programming. Functional Specifications document is used as an input for programmer's work. The programmer prepares program specifications for his unit from the functional specifications. Program specifications describe the programming approach, coding tips for the unit's coding.
Using these program specifications as input, the programmer prepares unit test cases document for that particular unit. A unit test cases checklist may be used to check the completeness of unit test cases document. Program Specifications and unit test cases are reviewed and approved by quality assurance analyst or by peer programmer. The programmer implements some functionality for the system to be developed. The same is tested by referring the unit test cases. While testing that functionality if any defects have been found, they are recorded using the defect logging tool whichever is applicable. The programmer fixes the bugs found and tests the same for any errors.

Stubs and Drivers
A software application is made up of a number of units where output of one unit goes as an input of another unit. Due to such interfaces, independent testing of a unit becomes impossible. So here, we use stub and driver.
A driver is a piece of software that drives the unit being tested. A driver creates necessary inputs required for the unit and then invokes the unit.
A unit may reference another unit in its logic. A stub takes place of such subordinate unit during the unit testing. A stub is a piece of software that works similar to a unit which is referenced by the unit being tested but it is much simpler than the actual unit. A stub works as a stand-in for the subordinate unit and provides the minimum required behavior for that unit.
Programmers needs to create such drivers and stubs for carrying out unit testing. Both the driver and stub are kept at a minimum level of complexity, so that they do not induce any errors while testing the unit in question.


Facebook activity