Distributed Software Development

As we all should know, two heads are better than one. Teamwork is the key to success. When you enter the industry to work as a software engineer, you will be working with groups. However, when working on a project, how do you get access to all the information you need to accomplish your assigned task? This is where I introduce you to the practice of distributed software development. Distributed software development is the sharing of information between others to accomplish a main specific task. In today’s industry, almost all company’s used distributed software development practices. In this article I will be discussing issues relating to why we use distributed software development, what type of tools support distributed software development, and how distributed development may influence the effective construction and use of an application framework. I will also discuss issues such as heterogeneous platforms, project management concerns, communication barriers, cultural and social differences, time zone changes, system integration challenges, and best practices. Then I will discuss the advantages and disadvantages of software collaborative development. This article should give great insight to those who just entered the industry to work in the profession as a software engineer.

Why Distributed Development?

After understanding what distributed software development is, we can value the importance of it. Imagine that one day your group leader had to go out of town for a few weeks but your project is due very soon and you need the files that he has not finished yet. This causes a problem in accomplishing your task since you need his files to finish your. Not so if you used the practice of distributed software development. He can be out of town, yet he can still work on his part of his project and keep you updated with his progress so you can accomplish your task. This is why this practice is so important.

Software collaborative development allows all group members to be in different locations and yet have them all know what each member is doing. Another example is say universities which do research on software. Not all outstanding professors in the field of computers is all going to be in one university, so software collaborative development lets them work together. The main issue is that it allows specialists from all around the world to develop software together. As hardware is getting faster and better, the demand to make the most hardware is due much to software meaning that software is getting larger and larger. This means that it is necessary for more and more people to work on software together in order to complete them in a desired time frame.

Another important aspect is that by using collaborative techniques, this allows other software engineers to help improve existing software. Software such as OpenBSD allows any user to improve it. With all these issues mentioned, you can see how collaborative software development is very important allowing specialist from all over to develop software.

Supporting Infrastructures

Collaborative software development requires tool support to make this practice efficient. If we don’t have the support then this practice would be useless. As we mentioned earlier, hardware is improving at a drastic rate. On significant and most important tool or concept is networking. Networking includes tools such as WAN’s and LAN’s. A big example of this was just recently announced last month on March 5, 2002. A company called VA Software Corp. announced that the Open SystemC Initiative has selected development software called SourceForge Enterprise Edition 3.0 as the collaborative software development platform for the SystemC language and as the support platform for the SystemC community. The web site which will be used uses SourceForge to enable different companies to collaboratively develop specifications and code in a common environment, and support the large and growing SystemC user base.

Another tool that is very common is CVS. CVS is a very useful tool for software collaborative development. It allows group members to share updated files, recover last saved files, and keeps each member of your group updated on their progress, thus enables developers scattered all over the world to function as a single team. Another tool to mention is called Arachne. Arachne is intended to facilitate collaborative development in domains such as systems based on textual mainframes. Complex problems arise and get addressed by a community of software developing researchers. Arachne does this by providing a comprehensive cross-platform environment for the development, encapsulation, sharing, and reuse of software capabilities. Arachne tries to enable the long-range, evolutionary construction of highly complex software systems, from components developed over time in part through research and in part commercially. This brings up back to the idea how distributive software development helps improve existing software. The list could go on for the tools that help distributive software development. The ones that I listed are just a few examples.

Collaborative software development is a growing concept that will keep growing. All these tools that I mentioned are all based on one important tool, which is the network. Without networking, collaborative software development would not be possible.

Operating Systems

Another big issue for software collaborative development is that not all software developers use the same OS or same system. I will explain how distributive software development is affected by heterogeneous platforms. Obviously, this is a problem for software distributive development since OS usually can’t share all information between other OS. However, there are ways around this problem. First of all you need a set standard for some of the files you are using. One example is from a large worldwide High Energy Physics community. They split the software into 2 parts, a specific part for each OS containing binary files and libraries and then a shareable part which is usable on all platforms. The specific part contains all needed references to the shared part to make sure that the repository and the products are self-contained. To avoid unwanted site dependencies, all symbolic links are relative and independent of the root directory of the project. This makes the software easily exportable. Another way around heterogeneous environments is to use the World Wide Web. All information is kept on a server which serves as a medium. This allows anyone from anywhere using any machine to logon to the server and access the files needed. As you can heterogeneous platforms form a problem, but there are several ways around this problem, and I just discussed a few.

Project Coordination

Working with a large number of people can get very complex and disorganized. This is why we need to discuss the issues of project management concerns. Each group should have a project leader in charge which duties should include checking to see if each member is doing their fair share of the workload. He should keep up-to-date on the progress of the project. This person should also be responsible for any problems and other members should consult him with problems about a project. When distributive software development is used, we need an overseer of everything. Without this person foreseeing the project, projects would have problems such as not being completed on time. This is why the person who is the project manager should be well experienced and be well trained to handle the duties required to be a project manager. The project manager would also be the person to present the project when it’s finished to the company that hired them.

This is why there are many institutions that offer extensive training for these types of people. The Project Management Institute is an example of a school that provides this service. Also many books are available for a person to learn on his own. A project manager is a necessity in working with collaborative software development. As you will see later on in this article, project management is a very important issue that every collaborative software development team needs.

Team Communication

Collaborative software developers spend a lot of time communicating with each other, wither it’s via email or real-time. Communications is a must for distributive software engineers because it keeps everybody informed and up-to-date on the project. Communication also allows individuals with key knowledge to apply that knowledge where it is needed the most. However when people don’t speak the same language, this causes implications on the working field. Distributive software development may break geographic barriers but it doesn’t break language barriers. For example, when a group member who writes some code and documents the code in Chinese, then the next person working on the project is trying to figure out what the previous person did. These are known as communication barriers. However in today’s society, we have the resources to translate any language to any other language. An example is Lingo Ware. This program can translate any language via the web instantly. There are also plenty of other translation software out there such as Systran and NeuroTran. Another way around this complication is select your group that knows a common language. Sometimes the best solution is prevention. Software distributive development may not break communication barriers but with software mentioned above it can.

Cultural Difference

Since we talked about different languages being an issue, we can see how cultural and social differences can come into affect on distributive software development. As we know, not everybody is the same. We eat, dress, and play differently. This can also apply to programming. We all program differently, especially in different cultures. Different societies value different things. For example, one programmer who was educated in say China may value speed over reliability, while another programmer who was educated in Germany values reliability over speed. Their society has implications on how resources should be used. If a country is rich, they are willing to spend more money and time to get better results, however if your country is poor, you want to spend less money to get workable results. You can see how this can complicate collaborative developed software. The end results will be some parts will be fast but often cause errors, while another part will result in less errors but a long time to compute. The resulting project will be very inconsistent. This is the reason why we talked about project management concerns. With proper project management skills, this should never happen. So you can see, cultural and social differences can cause a problem, but when properly managed, it’s not a big issue.

Time Difference

Time zones are another issue that we should not overlook. When a project needs to meet a deadline, it doesn’t matter what time zone you live in. That deadline has to be met. This means if the project needs to be proposed 1:00 pm Eastern Time and you live in a place that is around the world and 1:00 pm is your 5:00 am that means your deadline is 5:00 am. Unfortunately, there is no software that can synchronize time so that there is only 1 time zone. There really is no way around this implication. The only way around this is to live by a set time as a group. Standardize your own time zone for your group. This way, when your project is due at a certain time, all members will treat that time the same. This is again why we have a project manager to foresee this problem.

System Integration

System integration also causes some implications to collaborative software development. System integration tries to incorporate many different systems into one main system. This is not a simple and easy task for it requires a lot of recourses and time. However many companies have developed to help deal with these issues such as T&T and Deltacom. Many of these companies are specialized in integrating systems to allow a flawless environment for collaborative software development.

Final Word

As you becoming a professional software developer and working in a collaborative software development environment, you will need to know and understand the best practices in this field. On a more technical point of view, having the right environment is also a best practice. As an article written by Frank Hecker, a colonmist at Collabnet, talked about the importance of the software development environment. Make sure the environment you are working in is setup for collaborative software development. This means your environment should support real-time or near real-time communication such as email or tracking. A common code repository with versioning should be supported so developers can share code in a controlled way. As mentioned before, since not all developers will use the same tools, have flexibility in the tools and methodologies in conjunction with the developer’s environment. Having such support is a must for collaborative software development. Another best practice to have is version control, documentation management, and distribution. The reason to have good version control is because projects need strong and flexible support for many concurrent developers working on overlapping sets of files. This also makes recover of files easier to manage and developers know when files get updated. Good documentation is a must because this lets other developers know what you have done. There should be a template for design documents, technical documentation, and end user documentation. Again, with the proper environment setup, all these files should be globally accessible for every developer in your project group. Another good practice is to frequently build and test the project. This is a good way to check for earlier signs of bugs. This will make things more concurrent.

As for the project manager, his best practice is to keep track of the explicit goals, resources, and a detailed schedule of the whole project. This way the project should go smoothly without complications and meet the desired deadline. Sharing your knowledge effectively is also a key for success. Explicitly managing knowledge can help reduce the learning curve for novice developers. This also reduces the barriers to entry for potential contributors while automatically keeping the load on the experts down to a minimum in terms of training others. If you and your other fellow developers follow these best practices you will be more efficient and your project should have no problems. The key is that all your members of the group follow these practices since, it’s collaborative development.

About The Author

Thomas Cheah is the Principal CTO-for-hire of Procto. He helps business owners and executives to innovate their business model thru strategic technology management so that they get 80% of the benefit for 20% of the cost. If you have innovative ideas but do not the technical expertise, he is your partner to validate and build your digital business models. Thomas believes that constant business innovation is increasingly important in today's business environment so that our business is prepare for rapid change of customer behavior, rising cost, and globalization in order to stay ahead (or away) of competition.

Share, Bookmark & Discuss This Article

Comments

Thank you for another essential article. Where else could anyone get that kind of information in such a complete way of writing? I have a presentation incoming week, and I am on the lookout for such information.

I’m liking your blog’s color scheme, generic but very easy on the eye.
I’ve been trying to setup a blog just like yours, can you tell me how you managed it?
Let’s clean up this mess of a forum and start posting meaningful stuff, shall we?
Hey, what’s the best way to start blogging right away? Like, without any difficult setups.
This page rocks, keep up the good work.

Simply, admirable what you have done here. It is pleasing to look you express from the heart and your clarity on this significant content can be easily looked. Remarkable post and will look forward to your future update.

Hey there, I think your site might be having browser compatibility issues. When I look at your blog in Safari, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, fantastic blog!

I know this isn’t precisely on topic, but i’ve a web site using the identical program as effectively and i get troubles with my feedback displaying. is there a setting i’m lacking? it’s attainable you may assist me out? thanx.

I simply want to say I am just new to blogs and actually enjoyed this web site. Very likely I’m likely to bookmark your website . You surely come with remarkable well written articles. Thanks a bunch for revealing your web page.

I just want to tell you that I am beginner to blogs and absolutely savored you’re web site. Likely I’m planning to bookmark your site . You certainly have terrific articles. Cheers for sharing with us your website page.

I simply want to mention I am very new to blogs and honestly savored this web site. Probably I’m planning to bookmark your blog post . You surely have remarkable well written articles. With thanks for revealing your blog site.

After looking over a few of the blog articles on your web page, I honestly appreciate your technique of writing a blog.
I book-marked it to my bookmark site list and will be
checking back in the near future. Please check out
my website too and tell me what you think.

I think this is one of the most important information for
me. And i am glad reading your article. But want to remark on some general
things, The website style is wonderful, the articles is really great :
D. Good job, cheers

I came across iPage on a blog during some time that I was looking for just a hosting provider for my business. I wished to host a blogshop of my own. It’s excellent that I found them on the blog because the blogger gave fantastic ratings for iPage.

I simply want to say I am just beginner to blogs and seriously savored you’re web-site. Most likely I’m planning to bookmark your blog post . You surely come with exceptional well written articles. Thanks for sharing with us your web page.

Hi there just wanted to give you a quick heads up and let you know a few of the pictures aren’t loading properly. I’m
not sure why but I think its a linking issue.
I’ve tried it in two different internet browsers and both show the same results.

I simply want to tell you that I’m beginner to weblog and absolutely savored you’re web blog. Most likely I’m likely to bookmark your site . You actually have superb writings. Bless you for sharing with us your blog site.

It is the best time to make some plans for the future and it’s time to be happy. I have read this post and if I could I wish to suggest you some interesting things or suggestions. Perhaps you can write next articles referring to this article. I want to read more things about it!

I simply want to say I am all new to blogging and site-building and truly liked your web-site. Probably I’m want to bookmark your site . You amazingly have fantastic writings. Thanks for revealing your web site.

Aw, this was a really nice post. In thought I would like to put in writing like this additionally – taking time and actual effort to make an excellent article… however what can I say… I procrastinate alot and certainly not seem to get one thing done.

I just want to tell you that I am just beginner to blogs and truly enjoyed this page. Likely I’m likely to bookmark your site . You actually come with beneficial stories. Bless you for sharing your web page.

An interesting discussion is worth comment. I think that you should write more on this topic, it might not be a taboo subject but generally people are not enough to speak on such topics. To the next. Cheers

Simply wish to say your article is as astounding. The clearness in your post is simply great and i can assume you are an expert on this subject. Fine with your permission let me to grab your RSS feed to keep up to date with forthcoming post. Thanks a million and please keep up the gratifying work.

I simply want to tell you that I am very new to blogging and site-building and seriously enjoyed you’re blog. Most likely I’m want to bookmark your blog . You actually come with beneficial stories. Appreciate it for sharing with us your blog.

I just want to tell you that I am just all new to blogging and site-building and really liked this blog site. Most likely I’m likely to bookmark your blog . You certainly come with fabulous well written articles. Thank you for revealing your web site.

I simply want to tell you that I’m newbie to weblog and seriously enjoyed you’re blog site. More than likely I’m likely to bookmark your blog . You actually come with superb posts. Many thanks for sharing your website.