User:Vravi2/sandbox

A collaborative development environment (CDE) is an online meeting space where a software development project's stakeholders can work together, no matter what timezone or region they are in, to discuss, document, and produce project deliverables. The name was coined by Grady Booch.

It is seen as an evolution from the integrated development environment (IDE), which combined programming tools on the desktop, and the extended development environment (XDE), which combined life cycle development tools with an IDE (such as Microsoft Azure DevOps and the IBM Rational Rose XDE); while the IDE focuses on tools to support the individual developer, the CDE focuses on supporting the needs of the development team as a whole.

Although growing from a tool base in the software development sector, the CDE has been taken up in other sectors, with teams typically geographically dispersed, where it is beneficial to be able to collaborate across the web, including automotive and aeronautical engineering, movie production, and civil engineering.

Need for Collaborative Development
When software is developed collaboratively, a number of problems arise. If large number of people are working on the same piece of code everyone working on the code should know what changes are being made to the code. Moreover, Everyone should keep track of what piece of code each one is working on. And also there should be real time communication between developers for successful software development. These problems get more aggravated when people collaborate across geographically dispersed sites. Some examples of collaborative tools are Redbooth,Basecamp

Typical Functionalities of CDE
Some typical functions CDE offer

Version control system
Version control system or revision control system helps developers working in a collaborative development environment to keep track of the changes made to the code by them or by other developers over time.Thus if any error occurs during development process with the help of VCS one can revert to the state of a code which was functioning error free.

Version control systems are mainly of two types distributed version control system such as git and centralized version control system such as Apache Subversion. In case of centralized version control system all the files in repository are stored in a single centralized server and every client has snapshot of this repository stored in their local machine.on the other hand in case of distributed version control systems the clone of the repository (full mirror) is stored in every client computer

Some examples of VCS are  git,Mercurial,Apache Subversion. With the help of these VCS one can keep track of their project files, they can see the changes made to the code or if any new files added, and also they could undo any changes made to the file or code.

Bug tracking system
Bug tracking software or also known as Defect Tracking System is a set of scripts which maintain a database of bug reports. Bug tracking software allows groups of developers to keep track of bugs in the product effectively.Bug tracking software can track bugs and changes, communicate with members, submit and review patches, and manage quality assurance. The typical functions of a bug tracking system are as follows
 * It would allow us to maintain record of what each person on team works on
 * With the help of bug tracking system we could record previous updates to an issue or bug, or issues that were resolved in the past
 * Every update is permanently logged in the system allowing us to quickly see who worked on the issue, how long they worked on it, and how the issue progressed to completion.
 * And also Some bug tracking system provides an infrastructure where team members can communicate and collaborate, promoting teamwork.

Some examples of bug tracking system are bugzilla (open source developed by mozzila), FogBugz(Web based project management) featuring bug/issue tracking ,discussion forms, wikis, customer relationship management, and evidence based scheduling developed by Fog Creek Software.

To do list
To do list software helps developers to have a checklist of tasks that are to be completed.It also helps them to note what tasks are to be done urgently ?,what tasks are more important?,what are due dates of a task? and who is working on that particular task?. Having prioritized the tasks it lets developers concentrate on the main points and plan their work ahead .Some examples of to do list are Trello,Todoist.

Mailing Lists
Some CDE’s are designed for mailing list purposes, such as Google Groups or GrexIt, with the intent of easily managing mass producing dynamic emails, managing shared emails, organizing large user groups.

Document management system
A document management system can be implemented in a CDE that allows the members to easily collaborate on documents or other files. One example of such is Google Docs, Sheets, and Slides, which allows for simultaneous online editing for documents, spreadsheets, and presentation slides.

Internet Forum
The purpose of a internet forum is an online discussion site where people can hold conversations in the form of posted messages. This functionality is typically expected to be more like a group sms than a mailing list. One example of an internet forumn that works like a CDE is Piazza.