Subscribe by Email


Showing posts with label Principle. Show all posts
Showing posts with label Principle. Show all posts

Monday, August 5, 2013

What is optimality principle?

A network consists of nodes which require communicating with other on various grounds. This communication is established via communication channels that exist between them. The communication involves data transfers. In a network a node may or may not have a link with every other node in the network. 
Applications that require communicating over a network include:
1. Telecommunication network applications such as POTS/ PSTN, local area networks (LANs), internet, mobile phone networks and so on.
2. Distributed system applications
3. Parallel system applications

- As we mentioned above, each and every node might not be linked with every other nodes since for doing so a lot of wires and cables are required which will the whole network more complicated. 
- Therefore, we bring in the concept of the intermediate nodes. 
- The data transmitted by the source node is forwarded to the destination by these intermediate nodes. 
Now the problem that arises is which path or route will be the best to use i.e., the path with the least cost. 
- This is determined using the routing process. 
- The best path thus obtained is called the optimal route. 
- Today, we have a number of algorithms available for determining the optimal path. 

These algorithms have been classified in to two major types:
  1. Non – adaptive or static algorithms
  2. Adaptive or dynamic algorithms

Concept of Optimality Principle

- This is the principle followed while determining the optimal router between the two routes. 
The general statement of the principle of optimality is stated below:
“An optimal policy has the property that whatever the initial state and initial decision are, the remaining decision must constitute an optimal policy with regard to the state resulting from the first decision.”

- This means if P is an optimal state that results in another state say Q, and then the portion of the original from that state to this state i.e., from P to Q must be optimum. 
- This only means the optimality of the part of the optimal policy is preserved. - The initial state and the final state are the most important parts of the optimum. 
- Consider an example, suppose we have problem with 3 inputs and 26 states. - Here, the state is associated with the optimum and the total cost is associated with the optimum policy.
- If brute force method is used for 3 inputs and 100 stages we have the total number of computations as 3100
- That means for solving this problem, a super computer is required.
- Therefore, the approach used for solving this problem is a parallel processing approach. 
- Here, for the each state the least step is computed and stored during the programming. 
- This reduces the number of possibilities and hence reducing the amount of computation.
- The problems become complex if the initial and the final states are undefined. - It is necessary for the problem to follow the principle of optimality in order to use the dynamic programming. 
- This implies that whatever the state may be, the decisions that follow must be optimal in regard with the state obtained from the previous decision. 
- This property is found in combinatorial problems but since they use a lot of time and memory, this method is inefficient for them. 
- These problems can be solved efficiently if some sort of best first search and pruning technique is applied.

- In regard to the routing in networks, it follows from the optimality principle if a router B lies between router A and C which lie on an optimal path, then the path between the router B and C is also an optimal path and lies on the same path. 
- Sink tree is formed as a result of all optimal routes which is the ultimate goal of all the routing algorithms.


Tuesday, May 14, 2013

What is a Distributed System?


In the field of computer science, the distributed computing constitutes of distributed systems. 
- Multiple computers that are capable of communicating via a computer network together compose a distributed system. 
- All the computers in a distributed system work together in order to accomplish a common task.
- A common program is also required for running this whole system and is known as the distributed system. 
- Such programs for distributed systems are written using the process called the distributed programming. 
- Distributed computing involves the use of distributed systems for solving the computational problems.
- A distributed system divides the problem into much smaller tasks that are then given to one or more computers of the distributed systems. 
- These systems use message passing for communicating with each other. 
- The term distributed system earlier referred to the networks which had their hosts distributed over a geographical area. 
- This term was eventually refined and now is applied to a much broader concept. 
- It now also refers to the various autonomous processes that execute on the same system but maintain an interaction with other systems also through message passing. 
Because of the wide sense to which the concept is applied, it has no formal definition; rather the following properties are used for defining it:
  1. There are many computational entities of the distributed system that are autonomous in nature and each of them possesses individual local memory. These entities are commonly referred to as the nodes.
  2. By means of message passing these entities communicate with each other.
- A distributed system works towards a common goal which may involve solving a big computing problem. 
- On the other side, each node in a distributed system may have its own requirements. 
- The distributed system must provide communication means to the user and help in coordinating the use of the common resources.

Properties of Distributed Systems

Distributed systems possess many other typical properties as mentioned below:
  1. It has the capability to tolerate the failures of the individual nodes or the computers.
  2. The system’s structure cannot be determined in advance. It includes a number of factors such as number of computers, network topology, and network latency and so on. The computers in the system might be of many different types and so the links also. As a result the structure of a distributed system may alter while executing a distributed program.
  3. The complete view of the distributed system is hidden from its nodes. They are provided only with a limited view or information about the system. Only a part of the input is known by each of the nodes.
- There are two terms which consistently overlap with the distributed computing namely parallel computing and concurrent computing
- The distinctions between these three are not clear at all. 
- At the same time a system may be called both a parallel one and a distributed one.
- Another thing about distributed systems is that the processors involved run in concurrence with each other but in parallel.
- Distributed computing in a more tightly coupled form is called parallel computing. 
- Thus, a loosely coupled form of parallel computing is the distributed computing. 

Two main reasons have been observed for using distributed computing:
  1. Depending on the nature of the application it may require using a network connecting many other systems. For example, data produced by one system is required by others.
  2. There are cases, where by theory and principle use of a single computer is possible but for the same case if a distributed system is used in practical then it might be more beneficial. For example, using a cluster of low – end computers for attaining the desired level of performance might be more cost efficient. 


Sunday, April 28, 2013

What is fragmentation? What are different types of fragmentation?


In the field of computer science, the fragmentation is an important factor concerning the performance of the system. It has a great role to play in bringing the performance of the computers. 

What is Fragmentation?

- It can be defined as a phenomenon involving the inefficient use of the storage space that in turn reduces the capacity of the system and also brings down its performance.  
- This phenomenon leads to the wastage of the memory and the term itself means the ‘wasted space’.
- Fragmentation is of three different forms as mentioned below:
  1. The external fragmentation
  2. Internal fragmentation and
  3. Data fragmentation
- All these forms of fragmentation might be present in conjunction with each other or in isolation. 
- In some cases, the fragmentation might be accepted in exchange of simplicity and speed of the system. 

Basic principle behind the fragmentation concept. 
- The CPU allocates the memory in form of blocks or chunks whenever requested by some computer program. 
- When this program has finished executing, the allocated chunk can be returned back to the system memory. 
- The size of memory chunk required by every program varies.
- In its lifetime, a program may request any number of memory chunks and free them after use. 
- When a program begins with its execution, the memory areas that are free to allocated, are contiguous and long. 
- After prolonged usage, these contiguous memory locations get fragmented in to smaller parts. 
- Later, a stage comes when it becomes almost impossible to serve the large memory demands of the program. 

Types of Fragmentation


1.External Fragmentation: 
- This type of fragmentation occurs when the available memory is divided in to smaller blocks and then interspersed. 
- Certain memory allocation algorithms have a minus point that they are at times unable to order the memory used by the programs in such a way that its wastage is minimized. 
- This leads to an undesired situation where even though we have free memory, it cannot be used effectively since being divided in to very small parts that alone cannot satisfy the memory demands of the programs.  
- Since here, the unusable storage lies outside the allocated memory regions, this type of fragmentation is called external fragmentation. 
- This type of fragmentation is also very common in file systems since here many files with different sizes are created as well as deleted. 
- This has a worse effect if the file deleted was in many small pieces. 
- This is so because this leaves similar small free memory chunks which might be of no use.

2. Internal Fragmentation: 
- There are certain rules that govern the process of memory allocation. 
- This leads to the allocation of more computer memory what is required. 
- For example, as the rule memory that is allocated to programs should be divisible by 4, 8 or 16. So if some program actually requires 19 bytes, it gets 20 bytes. 
- This leads to the wastage of extra 1 byte of memory. 
- In this case, this memory becomes unusable and is contained in the allocated region itself and therefore this type of fragmentation is called as the internal fragmentation.
- In computer forensic investigation, the slack space is the most useful source for evidence. 
- However, it is often difficult to reclaim the internal fragmentation. 
- Making a change in the design is the most effective way for preventing it. 
Memory pools in dynamic memory allocation are the most effective methods for cutting down the internal fragmentation. 
- In this the space overhead is spread by a large number of objects.

3. Data Fragmentation: 
This occurs because of breaking up of the data in many pieces that lie far enough from each other.
                                                                                                               


Tuesday, June 19, 2012

What is a CBSE process? What are the steps in CBSE?


The component based software engineering or CBSE process is nowadays gaining a new high in the field of software engineering. But still many of us are not aware of this development process. 
This article focuses up on the component based software engineering process as well as the steps involved in it. More commonly the component based software engineering process is known as “CBD” or component based development. 

About Component Based Software Engineering (CBSE) Process


- The CBSE process is treated as an individual branch of the software engineering that primarily emphasis up on the separation of concerns with respect to the wide ranging functionality that are present throughout a software system or application.
- This approach to software development can be thought of as a reuse based approach and is used for defining, implementing and composing the independent components that are loosely coupled in to the given software system or application. 
- With such a practice, an equally wide ranging degree of benefits is brought about in the software system both for the short term and the long term and also for the organizations that are involved with the production of that software system or application. 
- The components of the software system are considered to be a part of the platform where the development process begins by many of the software engineers. 
- The components are often converted in to services and are granted further characteristics that make it different from an ordinary component. 
- For example, this happens in SOA or service oriented architectures. 
- In other cases, the components are used to consume or produce events that cab be later used for EDA or events driven architecture. 
- An individual software component can be considered to be one of the following things:

  1. Software package
  2. Web service
  3. Module encapsulating a set of related functions.

Principle behind CBSE Process


- All the processes of the software system or application are placed in to separate components so that the data remains safe and intact and separated from other dissimilar kinds of data. 
- There is a semantic relation between the data and the functions placed inside the components.
- It is this principle that grants the components the property of modular cohesiveness. 
- The co- ordination among components is facilitated via the interfaces of the components or modules.
- Whenever it is the turn of a software system or component to offer a service to the whole of the other system or application, it makes use of the provided interface specifying the service that can be utilized by the other components and how it is to be utilized is also instructed by that interface only. 
- This interface can be called as the signature of that particular component to which it belongs.
- One of the best things about the CBSE process is that the client need not have the knowledge about the inner working of the components in order to make use of it.

Steps involved in CBSE process


1. The first step is all about the creation of an interface specification using an IDL (interface definition language).
2. The second step deals with the creation of a component specification which consists of member functions and interfaces.
3. At this step the complete control of the development process is in the hands of the developers and the traceability metrics are based up on the CBSE principles.
4. Unit testing of the components using a test harness for making the entire process automated.
5. Component integration testing

With the CBSE process, the developers can make changes to a specific component easily as long as they adhere to their interfaces. 


Wednesday, May 2, 2012

TestLink is a Free, open source test case management tool? - Explain?


Testlink is a free open source test case management tool! It means that it can be freely redistributed and accessed. These kind of open source tools have been invented so to support the new environment created by the issues like:

                                            1.  Licensing
                            2.  Copyright
3                          3. Domain issues
4                          4.  Consumer issues
    
      

Concepts of Open Source Models

 -The open source models employ the concept of different agendas but concurrent with different approaches in  production. 
      - The whole open source concept works on the principle of the peer production.
      - Peer production means collaborating and bartering with the end documentation, source material, blue prints and product which are available for free to the public.
    - The source code of the testlink is made publicly available and the public is given full right for modifying, copying and redistributing it at no cost. 
   - It has evolved through the community operation which is comprised of many individual software programmers from large companies. 

       

What purposes are facilitated by Test Link?


       Testlink is an open source test management tool and provides the facilitation for purposes like:
1                                          1. Test specification
                                            2. Test planning
                                            3. Test reporting
                                            4. Tracking of the requirements
                                            5. Collaborating with the well known bug trackers
     
         

 Features of TestLink

      1.  Set urgent tests
            2.  Custom.css
            3.  Gives an option for creating new test cases and requirements.
            4.   Offers the possibility to do a quick DIFF of the 2 test case versions.
            5.   Fully supports the internet explorer 9 via ExtJS 3.4.0.
            6.  Direct links to each and every requirement can be generated.
            7.  Table ruler
            8.  The requirement versions are well supported by the internal links.
            9.  After editing the requirements and specifications, the tree can be refreshed.
          10.  The states of the tree can be stored and restored in a very reliable way.
          11.  Test result matrix facilitates the filtering by status.
          12.  Requirement revisioning.
          13.  Test case and new requirement comparison method.
          14.  PHPMAILER
          15.  Collapse and expand buttons for trees
          16.  Log messages for the history of the requirements.
          17.  MSSQL support
          18.  IE8 based event viewer
          19.  Query metrics
          20.  Improved minor usability
          21.  Improved tables via EXT- JS
          22.  Improved filters
    23. At the build level, test case execution assignment has been provided.


In spite of all such great features, currently there are two features lurking out:

               1. The debug messages interfere with the working of the reports.
               2. There are troubles going on with the updating of the test case executions. 
       
       

Benefits of TestLink

 

      1. Using the testlink, one can easily integrate one’s test scripts to get the results. 
     2. It is a test management tool that is completely independent and is very effective in managing testing cycle    in a short period of time. 
     3. It helps in cutting down the management, development and maintenance cost of your project, thus making the whole project quite affordable and feasible for you.
     4. It helps in simplifying and accelerating the whole testing process and reporting by:
                 -  Collecting and organizing all of your test cases in a dynamic way.
                 -  Tracking the metrics and the results in association with the test execution.
                 -  Capturing and reporting the details.
                 -  Customizing itself to fit your processes and requirements.
5. It overall assists you in conducting an efficient and thorough testing process and makes best use of the experience it has achieved over 100s of implementations for the clients around the world. 
6. The redistribution of this tool is governed by the GNU general public license.


Sunday, January 15, 2012

What are merits and demerits of ad hoc test approach?

Ad hoc testing as the name suggests is the testing that is carried out without any formal planning and formal documentation though it can be used for scientific experimental studies.

- The ad hoc testing is meant to be carried out only once until and unless a defect is found.
- It would not be wrong if we call the least formal methodology of testing a software application or system.
- It has always been under criticism because of its uneven structure and also because the defects discovered through this kind of testing are difficult to reproduce due to a lack of written test cases.

However, there is still a plus point of ad hoc testing as important defects or bugs can be found quickly and easily without much efforts and pre planning.

Principle of Ad-hoc testing
The ad hoc testing is based on the principle of improvisation i.e., the software testers seek to find the errors and bugs by any means that seems appropriate to him/ her or we can say tests are performed according to the convenience of the tester.

Ad hoc testing can be appropriately called a primitive version of error guessing which itself is an un- sophisticated version of exploratory testing.

- Formal testing is carried out without any test cases and it proves to be a great help in deciding the duration and scopes for the other types of testing that have to be carried out upon the software system or application.

- This also helps the tester to learn more and more about the software system or application prior carrying out the other kinds of testing.

- It can be called as the least formal method of testing.

- The quick discovery of defects is the best use of ad hoc testing.

- Only reading the specifications and requirements doesn’t give a good sense of how the program or the software system or the application actually works and behaves.

- Even the documentation of the testings does not provide the feel of the software system or application.

- Ad hoc testing can be effectively used to find discrepancies in the testing strategies of the tester and the relations between the sub- systems of the software can be explored that would have been left un- exposed.

- In a way we can say that it serves a tool for checking the quality of our testing methodology.

- It helps in finding the missing cases and so these can be added to the list of test cases.

- Discovering new test cases with ad hoc testing is an indication that root cause analysis should also be performed.

While carrying out the ad hoc testing you should ask yourself and your team members “what other tests should we need to carry out in order to supplement this and make testing more effective?”

SOME IMPORTANT FACTS
- Defects or errors found during ad hoc testing provide examples of forgotten test cases.

- Determining the priority for carrying out other testing can also be thought as another use of ad hoc testing.

- For example, if a program allows the user to carry out some task and the ad hoc testing shows that this function works well, then the formal testing of this functionality might be postponed until the areas having problems are completed.

- On the other hand, if the ad hoc testing discovers any problem, then the formal testing for this functionality can be given highest priority.

- It is concerned with application testing without taking into considerations any rules and regulations.

- For carrying out ad hoc testing effectively the tester should have strong knowledge of the software system or application. Ad hoc testing is performed mainly to save time.


Saturday, January 15, 2011

Project Management - The W5HH Principle

Barry Bohem suggested an approach that addresses project objectives, milestones and schedules, responsibilities, management and technical approaches and required resources. This is called W5HH principle. The questions that are answered in this principle are:

- Why is the system being developed?
- What will be done by When?
- Who is responsible for a function?
- Where are they organizationally located?
- How will the job be done technically and managerially?
- How much of each resource is needed?

WHY IS THE SYSTEM BEING DEVELOPED?
It enables the parties to assess the validity of business reasons for the software work. It justifies the expenditure of people, time, and money.

WHAT WILL BE DONE?
It specifies the task set required for the project.

WHEN WILL IT BE DONE?
It helps to determine the project schedule. It helps in determining when tasks are conducted and when milestones are reached.

WHO IS RESPONSIBLE FOR A FUNCTION?
It helps to accomplish the role and responsibilities of each member of the software team.

WHERE ARE THEY ORGANIZATIONALLY LOCATED?
The software team does not contain all the roles and responsibilities. The customers, users and stakeholders also have responsibilities.

HOW WILL THE JOB BE DONE TECHNICALLY AND MANAGERIALLY?
The management and technical strategy of project is defined once the scope of the product is established.

HOW MUCH OF EACH RESOURCE IS NEEDED?
It helps in deriving estimates based on the answers to the above questions.


Tuesday, March 2, 2010

Ethernet Hubs

A hub connects multiple devices together. Ethernet hubs, and are most commonly used in computers for networking purposes. Ethernet hubs are available in different types, depending on the speed of the network connection or broadband speed. The number of ports an Ethernet hub supports also varies. Older Ethernet hubs were relatively large in size and sometimes noisy as they contained built in fans for cooling the unit. Newer devices are much smaller, designed for mobility, and noiseless.

Working of an Ethernet Hub


The main purpose of the Ethernet hub is to transmit the large pockets or cluster of data it receives from one computer onto another through all the ports connected to it. Ethernet uses a protocol called CSMA/CD, which stands for Carrier Sense, Multiple Access with Collision Detection.

- Carrier Sense - When a device connected to an Ethernet network wants to send data it first checks to make sure it has a carrier on which to send its data.
- Multiple Access - This means that all machines on the network are free to use the network whenever they like so long as no one else is transmitting.
- Collision Detection - A means of ensuring that when two machines start to transmit data simultaneously, that the resultant corrupted data is discarded, and re-transmissions are generated at differing time intervals.


Facebook activity