Extreme Programming (XP)
Kent Beck has developed Extreme Programming. In Extreme Programming, every person in the project is an integral part of the "Whole Team". The team creates around a business representative called "the Customer", who is also part of the team and works with them daily.
Extreme Programming (XP) is a trivial discipline of development of software based on principles of communication, simplicity, feedback and courage. XP is designed for use with small teams who need to develop software quickly in rapidly changing requirements.

Extreme Programming teams use a simple form of planning to decide what should be done next in order to predict when the project would be done. The team produces the software in a series of small fully integrated releases that pass all the tests the customer has defined by focusing on business value.

Extreme Programmers work together in pairs as a group with simple design and tested code improving the design continually to keep it always just right for the current requirements. The Extreme Programming group keeps the system fully integrated and running at all the time. The programmers always use to write production code in pairs and all work together all the time. They code in a consistent way so that everyone can understand and improve all the code as per requirement.

there are 12 Basic practices of XP
1) Planning Game
In software development XP planning addresses two key questions which are predicting what will be accomplished by the due date and determining what to do next. The emphasis is on direction finding the project, which is quite straightforward rather than on exact prediction of what will be required and how much time it will take which is quite difficult. There are two key steps in XP addressing these two questions:

a) Release Planning
In this planning the Customer presents the desired features to the programmers and the programmers calculate their difficulty. The Customer lays out a plan for the project with the costs estimates and with knowledge of the importance of the features. Initial release plans are necessarily imprecise because until the team begins to work neither the priorities nor the estimates are truly solid. Even the first release plan is accurate enough to make decision however XP teams revise regularly the release plan.

b) Iteration Planning
It is the practice in which the team is given direction every week. XP teams develop software in two-week iterations, delivering software at end of iteration. The Customer presents the features desired for the next two weeks during Iteration Planning. The programmers divide them down into different tasks and estimate their cost. Based on the amount of work accomplished in the previous iteration, the team decides for what will be done in the current iteration.

2) Small Releases
XP teams practice small releases in two different ways:
First the team releases tested, running software, delivering business value chosen by the Customer. The Customer uses this software for evaluation or even release to end-users. The most important aspect is that the software is visible to the customer at the end of every iteration. This keeps everything visible, open and tangible to customer.

Second, XP teams release design of software to their end users frequently. XP Web projects release daily in house projects or more frequently.

3) Metaphor
Extreme Programming teams develop a common view of how the program works which is called as "metaphor". The metaphor is a simple suggestive description of how the program works. XP teams use a common name system to ensure that everyone understands how the system works and where to look to find the functionality you're looking for.

4) Simple Design
XP teams use simple design to build software. An XP team maintains the design, which exactly implemented for the current functionality of the system.
In XP design is not a one-time thing. It is an all time thing. There are certain design steps in release planning and iteration planning plus teams engage in quick design sessions and design revisions through the course of the entire project. In an incremental, iterative process like Extreme Programming, good design is very important. That's why there is so much concentration on design throughout the entire development of software.

5) Customer Tests
The XP Customer defines one or more automated tests to show that the feature is working as a part of presenting each desired feature. The team runs these tests and uses them to prove to the customer that the feature is implemented correctly. Automation is used in the press of time to skip manual tests.

In best XP teams the customer tests are same as programmer tests: once the test runs correctly the team keeps it running correctly thereafter.

6) Refactoring
XP teams improve the development of the software throughout its design cycle. This is done by maintaining the software clean with high communication, simple, complete and without duplication.

7) Pair Programming
All development of software in XP is built by using two programmers: sitting side by side and at the same machine. This practice guarantees that at least one programmer reviewed all development code and which results in better design, better testing and better code.

It is looking like two programmers doing "one programmer's job", but the reverse is true because pairing produces better code in the same time as programmers working singly. Pair programming offer better code and tests, serves to communicate knowledge throughout the team. As pair programmer uses to switch then everyone gets the benefits of everyone's specialized knowledge.

8) Collective Code Ownership
In collective code ownership any pair of programmers can improve any code at any time. This means that all code gets many people's attention, which improves code quality and reduces defects. There is another important advantage is that when code is owned by particular individuals then required features may be put in the wrong place.

9) Continuous Integration
XP teams build and integrate the software design system multiple times everyday. This maintains all the programmers on the same page and enables very rapid growth. Team integrating more regularly tends to reduce integration problems that plague teams who integrate less often.

10) 40-hour Week
Exhausted programmers make more mistakes. XP teams do not work overtime, maintaining team member fresh, healthy and effective.

11) On-site Customer
An XP project is observed by a dedicated individual who is determine requirements, set priorities and answer questions as the programmers have them. The effect of on-site customer is that communication improves with less hard-copy documentation.

12) Coding Standard
For a team to work in pairs and to share ownership of all the code; all the programmers should write the code with some rules that make sure the code communicates clearly.
XP teams use a common coding standard so that all the code in the system looks as a single individual wrote it. The specifications of the standards are not important but important is that all the code looks familiar in support of collective ownership.








By Ravi Kumar Paluri
Computer Networking Tutorial
An effective computer networking tutorial for beginners is very difficult to find. Most of the times, various websites on the internet mislead the user into making a false purchase. The following computer networking tutorial for beginners should give the common man enough networking knowledge to make an informed decision while implementing any kind of simple network.
Computer Networking Tutorial
The basic purpose of computer networking is resource sharing. If you plan to have an ethernet with many terminals, then you should be armed with some knowledge of the computer networking basics. This computer networking tutorial for beginners is aimed at achieving exactly that.

Computer Networking History: The technological advancements in the field of computer networking started in 1969. During that time, the Advanced Research Projects Agency (ARPA) decided to implement a project called the Advanced Research Projects Agency Network (ARPANET). This was the world's first network, which only consisted of four nodes. Since then, computer networking has come a long way. Read more on what does ARPANET stand for?

Introduction to Computer Networking: So what is a computer network? It is, literally, a network of computers. Each computer in the network is connected thorough a transmission media such as ethernet cable wiring. There are many different kinds of computer networks, such a LAN, MAN or WAN. There are also many different types of network topologies (a.k.a backbone network structures). A LAN (local area network) typically consists of a fewer number of computers (hundred or even less). The computer network in any single establishment or building will have a local area network. A metropolitan area network (MAN) is a network of many LAN's. For example, an MNC might have many buildings in the same area. Every building might have their individual LAN's. It would be highly essential to have a network between them. This is where a MAN comes into the picture. A city like New York or Chicago will definitely have many MAN's. When you connect all these networks together, you will get a WAN (wide area network). There are also ethernet protocols (such as TCP/IP, according to which communication in a computer network takes place). When all the above issues are taken care of, then you have a smooth running computer network.

Parameter LAN WAN MAN
Area Covered Covers small area Covers large area Covers Larger than LAN, smaller than WAN
Error Rates Lowest Highest Moderate
Transmission Speed High Speed Low speed Moderate Speed
Equipment Cost Uses Inexpensive equipment Most Expensive equipment Uses moderately expensive equipment


Designing a Simple Computer Network: When a beginner starts designing a computer network, selecting the right design should be given priority. There are, basically, five standard types of computer network designs. These designs are also known as network topologies. Depending upon the number of terminals that your network is going to have, you should select the suitable topology. There are five types of network topologies. They are, star, ring, mesh, tree and bus. In star topology, all the nodes are connected to a single node. In ring topology, every node is connected to two other nodes and they form of a circle. In mesh topology, every node is connected to every other node. In tree topology, there is a root node (or super node), to which two or more nodes are connected, and the rest of the terminals are connected in a hierarchical fashion. In bus topology, there is a common medium like a backbone, and terminals are connected to it.

Transmission Media : The physical channel between sender and receiver is called transmission media. There are two different types of media, bounded and unbounded. The bounded media are those media in which communication takes place through wires. The unbounded media comprises of wireless communication. Read more on computer networking cables and crimping device tools.

Types of Bounded Transmission Media
  • Twisted pair cable
  • Coaxial cable
  • Fiber optic cable
Types of Unbounded Transmission Media
  • Radio links (Microwave)
  • Infrared
The factors that need to be considered while selecting a transmission media are as follows.
  • Bandwidth: The greater the bandwidth of the signal, the higher is the data transmission rate.
  • Transmission impairments: Whatever your media, it should have minimum transmission impairments.
  • Interference: Competing signals can sometimes distort or completely disrupt a signal. Interference by such signals should be minimum.
Computer Networking Equipment: Since this is a computer networking tutorial for beginners, some light must be shed on the components that are used in a computer network.
  • Network Interface Card (NIC): It is a hardware add-on component to the computer. All communication signals, to and from the node, must pass through the NIC first.
  • Switch: All computers in a LAN must first connect to a switch. A switch is a device which is capable of maintaining a local area network between all the terminals that are connected to it. It is also responsible for sending traffic inside and outside the switched network.
  • Hub: It is used to connect various components (computer as well as other devices) in the network. A usb network hub should fill the needs of a home network.
  • Router: A router is a gateway device that is responsible for connection between various networks (Internal as well as external). More on computer hardware information
OSI Reference Model and TCP/IP Reference Model: OSI (Open System Interconnect) reference model describes the hierarchy of various protocols that are used in computer networks. TCP/IP reference model provides a set of protocol that are used across multiple and diverse networks. Protocols are a set of standard rules that are followed during various stages (and situations) of computer networks. Throughout this technical discussion you must have started wondering, what does TCP/IP stand for? The following discussion will help you understand the specific differences between layers of OSI reference model and layers of TCP/IP protocol stack.

There are seven layers in OSI Reference Model, and each layer performs a very defined function:
  • Application layer: This layer provides distributed information services.
  • Presentation layer: Provides independence to application processes.
  • Sessions layer: Provides a control structure for communication between applications.
  • Transport layer: Provides reliable transfer of data between end points.
  • Network layer: Provides independence to the upper layers from the lower layers
  • Data-link layer: Provides reliable transfer of information across a physical link.
  • Physical layer: Handles transmission of an unstructured bit stream.
There are only four layers in TCP/IP Reference Model:
  • Application layer: Includes all processes and services that use transport layer to deliver data.
  • Transport layer: Provides support to TCP or UDP protocol.
  • Internet layer: It handles machine to machine communications.
  • Host to network: Responsible for accepting and transmitting IP datagram.
The key difference between OSI reference model and TCP/IP reference model is that TCI/IP was effected after the advent of internet. The OSI reference model and TCP/IP are similar in many ways. Read more on how does TCP/IP work?

Implementing a Computer Network Design: While implementing a computer network, there are two kinds of technologies that have to be thought of - client/server and peer to peer. In my opinion, peer to peer technology should be avoided, as client/server technology provides a better compatibility to future growth. Most existing computer networks are wired networks, and it is very difficult to change them, and if you are really thinking about future compatibility, then a thought must be given to wireless architecture, as it provides easy scale up for a number of computers, without much degradation of performance and additional cost. Learn how to set up a server?

Wireless Networking: A wireless network is a network which uses unbounded network transmission media, that is, it is a network without any computer network cabling. Various examples of wireless computer networks are, WPAN (Wireless Personal Area Network), WMAN (Wireless Metropolitan area Network), WLAN (Wireless Wide Area Network). Even the network of mobile devices is considered a part of wireless networking.

Computer Networking Security: Network security is a major issue for any software company. If a computer network is carrying sensitive information, there should be an assurance of security of that sensitive information. Computer networking security is a very broad topic, and immense amount of research has been done this field. The following issues in the network security apparatus take prime importance.
  • Security attacks: These are actions which compromise security information.
  • Security mechanisms: Methods to prevent security attacks.
  • Types of computer security: These are the services that are instrumental in handling security of the apparatus. They can be categorized as:
    • Confidentiality
    • Authentication
    • Integrity
    • No repudiation
    • Access control
    • Availability
All these computer security issues are applied for wireless network as well.

Troubleshooting in a Computer Network: Check all the wired connections before you even begin with pin pointing the possible cause of the problem. Bad connection is the most common cause of any network related problem. Wired connections are all checked and problem persists, then check for the hardware. If you find that hardware is also performing properly then check for software malfunction. By performing these basic checks, you should be able to pin point the problem and then proceed to the appropriate solution. Read about how to troubleshoot wireless network and computer hardware troubleshooting.

Computer Networking Certifications: The various certification courses that are available for computer networking certifications are as follows.
  • CISCO
    • Cisco Certified Network Associates (CCNA)
    • Cisco Certified Network Professional (CCNP)
    • Cisco Certified Internetwork Expert (CCIE)
    • Cisco Certified Voice Professional (CCVP)
  • Novell CNE
  • Red Hat Certified Engineer (RHCE)
  • Microsoft Certified System Engineer (MSCE)
  • Certified Information Security Professional (CISSP)
Computer Networking Degree: The degrees that you can get in the field of computer networking are Associates Degrees in Computer Networks, Bachelors Degrees in Computer Networks and Systems, and online diplomas. Once you have the basic qualification, you can go for a Masters of Science in Computer Networking as well.

Computer Networking Jobs: Once you attain a degree, or become a certified professional, then there are many computer networking jobs that can be applied for, like a network administrator, a network technician, a network engineer, or a network analyst. A Network Administrator job description includes the proper functioning of the network of an entire institution. A Network Technician job description includes establishing and maintaining the network. A Network Engineer is responsible for high level tasks such as creating, designing and maintaining the network. The network engineer and network administrator have similar jobs, but they are different in the sense that, the engineer tackles more complex tasks that an administrator cannot handle (issues with network architecture, etc). A Network Analyst job description includes the analysis of various situations in the network, predicts the outcome, and suggests various solutions. He is basically responsible for various occurrences in the network and judging whether the arisen issue is normal or malicious in nature.

Computer networking is a field which encompasses all the aspects of Computer Science (hardware, software and security). Since there is huge growth in IT sector, the future of computer networking seems very bright. Hope the above computer networking tutorial for beginners gives computer networking information that excites one about this aspect of computer science.

By Vipul Lovekar