Project Organization  
Author Message
Delmer Johnson





PostPosted: Team Foundation Server - Setup, Project Organization Top

I work for a Microsoft Dynamics VAR that has averaged a staff of four-six developers over the years. We would like to move our existing SourceSafe projects into Team Foundation Server. In SourceSafe we have over 200 clients with multiple projects. Most projects are small and often take two days or less to create. Some have taken several months. Nearly all are client-specific. If they averaged even three projects per client it looks like we would exceed the limit of 500 projects per Team Foundation Server.

In SourceSafe each of our clients is a "project", and the actual projects for that client are organized in projects under the client. We would like to set up this sort of hierarchy in TFS.

Here are my questions: Is is possible to create parent containers, such as clients, for projects Second, can you create project hierarchies in TFS like you can in SourceSafe, or something similar If the answer is "yes", then do the sub-projects count against the 500 project limitation in TFS Is there a resouce somewhere that describes how to organize a large number of projects in TFS



Visual Studio Team System10  
 
 
eugene.z





PostPosted: Team Foundation Server - Setup, Project Organization Top

Delmer,

You have touched on somewhat complicated topick. As it is there different recommendations (see recent post from MS Jason Barile on the subject of whats Team project and post on TFS partitioning) and I doubt you will find single opinion on the subject.

Now it is clear that you cannot make a team project for each client (since you have lots of clients and some project are very simplistic). The parent container or hierarchy between Team project is not supported in current version and, unlike VSS, Team project is much more than source control. There is project portal and reporting site associated with each Team project, as well as work items providing project meta data (tasks, bugs etc.). So when you ask about sub-projects - if you mean the source code control hierarchy, then what matters is how many Team projects you have, not how many subfolders are there in the hierarchy under root project folder (source control folders are not synonymous with Team projects).

From your post it is not clear whether you are going to use additional TFS features such as Work Item Tracking etc. If you are going to concentrate on source control tree only, you may possibly to organize your projects by complexity or by technology, for example

By technology (there are two Team projects here - Web and ClientServer)
$/
Web\
Client1\
ProjectA\
ProjectB\
Client2\
ProjectD\
ClientServer\
Client2\
ProjectC\

By complexity (there are two Team projects here - Simple and Medium)
$/
Simple/
Client1/
ProjectA/
ProjectB/
Client2/
ProjectD/
Medium/
Client2/
ProjectC/

Or even you may create single Team project and organize your source code under it:
$/
Development/
Client1/
ProjectA/
ProjectB/
Client2/
ProjectC/
ProjectD/

The thing is - if you are going to use TFS only for source control you will be missing the wealth of features TFS provides such as Reporting, Work Item Tracking etc. So I would shape your question differently - how do you organize the source code in such way that you will be able (may be at some future stage, but still) to use Work Item Tracking and run reports and use Team Build for your projects. Is it something you consider

Hope that gives you part of the answer.

Yours truly, Eugene



 
 
nobugz





PostPosted: Team Foundation Server - Setup, Project Organization Top

Thread split to the C++ General forum with subject title "Project organization".


 
 
Wayne.C





PostPosted: Team Foundation Server - Setup, Project Organization Top

 
Thread split to the C++ General forum with subject title "Project organization".

Thanks, nobugz. I hope someone will help me with this. It's frustrating not knowing where to put things.

It's too bad that Microsoft didn't think to add "Put your code here" comments in projects so someone new to Visual Studio projects would have a clue. I've seen the "To Do" comments, but they tell me nothing about what I'm supposed to put there.

 


 
 
Harris140c





PostPosted: Team Foundation Server - Setup, Project Organization Top

Hello, Wayne.C

I am also new to C++, but with a lot of background in other languages and technologies.

That said, just an idea: MSDN documentation is more like a reference than a didactically organized stuff. Is full of links, one link per two or three lines of text. So you jump and jump, but not learn.

Try this: I had a great experience in working with Ivor Horton's Beginning Visual C++.

Just take a look at that book.

With best regards, and good luck.


 
 
Wayne.C





PostPosted: Team Foundation Server - Setup, Project Organization Top

Hello, Wayne.C

I am also new to C++, but with a lot of background in other languages and technologies.

That said, just an idea: MSDN documentation is more like a reference than a didactically organized stuff. Is full of links, one link per two or three lines of text. So you jump and jump, but not learn.

Try this: I had a great experience in working with Ivor Horton's Beginning Visual C++.

Just take a look at that book.

With best regards, and good luck.

Thanks, Harris140c. I found a site that suits beginners well. It's called Function X Visual C++. I recommend it highly for those who want to look online.


 
 
Samuel Hobbs





PostPosted: Team Foundation Server - Setup, Project Organization Top

Projects are a different animal. Everything revolves around events in the Windows environment.
I don't understand why you blame projects; I really don't. A project can be a console-application project that does not use or have events.

The problem is events. Events are an immense barrier to good programming, whether top-down or object-oriented or whatever.

For about the first 18 years of my programming experience, most of my programming was non-interactive. I was a programmer in the Army when top-down programming was new, and the Army sent me to a presentation of top-down programming for me to evaluate it. I understand it, and the problem with interactive programs is events. Even old-style Mainframe computers that existed long before the first PC existed had interactive programs that were difficult to design using top-down concepts.

Interactive programs are fragmented in a manner that is highly inconsistent with the logical hierarchy concept of top-down programming.

The MFC document / view architecture is inconsistent with object-oriented programming, especially in the manner that the document and view are so segregrated that objects are highly fragmented. An object's UI (the view, including the control window) should be a part of the data portion, but MFC is not designed that way.

For interactive programs, it helps to design the application in terms of what the user sees. Design the forms and the data the forms will process. Design the data that must be stored; sometimes we must start with the data and then design the forms. From there, it is possible to use a modified top-down methodology.



 
 
Wayne.C





PostPosted: Team Foundation Server - Setup, Project Organization Top

I don't understand why you blame projects; I really don't. A project can be a console-application project that does not use or have events.

I believe you are right, however Visual Studio isn't the only programming environment that is built this way. FutureBASIC (for the Mac) is an oop-style event-driven development environment. Having been a Mac user for some time, I understand that the use of a GUI necessitates the event-driven programming style. Events are the heart of the GUI interface. I think the organization of the source code is the real issue. Projects are nothing more than a collection of code and data that merge together to form an application. This is true whether events are the underlying foundation or not. However, I had not thought in terms of projects until I started learning objects and event-driven programming.

All I'm really asking for here is an example of an app that includes code not generated by the designer so I can see where to put what and how to reference it.


 
 
Samuel Hobbs





PostPosted: Team Foundation Server - Setup, Project Organization Top

Projects are nothing more than a collection of code and data that merge together to form an application.
Perhaps the problem is that we are using different definitions of project. In the VC environment, a project is relatively specific; perhaps you are using it in a more general definition. If you are, then you might confuse people when the context is VC.

All I'm really asking for here is an example of an app that includes code not generated by the designer so I can see where to put what and how to reference it.
I am not sure I understand. Are you looking for a sample Windows application There are many around. I have a few in Sample Windows Programs but there are hundreds more. My Other Windows Sites is a list of Windows programming sites I have found, but there are many more.

In addition to many other resources, the Book Reviews area of The Association of C & C++ Users has a reputation for being the best and most complete set of C & C++ book reviews.

A book that I have that you might be interested in is Windows++. Another book that seems to me to be worthwhile is "Practical object-oriented development in C++ and Java" by Cay S. Horstmann (ISBN 0471147672) but I have not read it. There is a web site for that book also but I don't have it conveniently available. The web site is interesting because it has the Java version of the sample programs working in the site.



 
 
nobugz





PostPosted: Team Foundation Server - Setup, Project Organization Top

Jump in, I'm seeing this because alerts are on the fritz again and I saw the Windows++ book reference from Sam. The book that changed the way I programmed. The book that took me a year to grok and I had to re-read 3 times to understand what it was trying to teach me. Oh, the memories. Paul DiLascia's column is still the one I read first. His fortunes have changed, as have mine. C++ is no longer my first choice of weapon.

There are several C++ programming standards being violated, willy-nilly, by the VS200x IDE. First thing we learned is to keep the declarations separate from the implementation. .h and .cpp. The Windows Forms designer plays rough with that principle; everything gets stuffed in the .h. That's a fair implementation detail, it is just a lot easier for the designer (MSFT programmers) to keep everything in one file rather than trying to keep two files in sync. As the C# form designer so readily demonstrates. Delete an event handler in C# and watch the cryptic compiler errors fly.

More specifically, it is IntelliSense that is handed the problem. It promotes "declare first, use later" style of programming. That's fair too, it is the only way it can get the job done. It can't show you a helpful popup window while you're editing unless it knows the type.

That promotes "bottom-up" design, not "top-down" design. Top-down is what everybody, and her sister, evangelizes. I've read that criticism in a several blogs. And I completely disagree. "Top down" design happens when you think about the problem and write it down on paper or talk to your colleagues or have a few restless nights over. Bottom-up design happens when you type in the code and come up with ways to test what you've written with unit test or whatever else you use to make sure that the basis is solid. Bottom-up is invaluable, as long as you think about the problem.

Hope it makes sense, ranting a bit...


 
 
Wayne.C





PostPosted: Team Foundation Server - Setup, Project Organization Top

Perhaps the problem is that we are using different definitions of project.

You may be right, so let's stop referring to project. I never meant to infer that projects were the problem anyway.

All I'm really asking for here is an example of an app that includes code not generated by the designer so I can see where to put what and how to reference it.
I am not sure I understand. Are you looking for a sample Windows application

Yes, and no. I looked at the references you gave. What I would like is a sample app created with the designer that does more than just add a couple of objects to a window and a line or 2 of code in each object's click event. I need to know where to put the code I write that won't be contained within the click event, but called from a click event. Plus I need an example of how to reference something that is contained in a different file. For example, in the app I'm writing, I want to incorporate multiple levels of undo and redo. The undo and redo will be callable from menu items and from buttons in a toolbar. Since each is a click event, I need to know where to put the code that constitutes the undo and redo functionality and how to reference it from the click event for each menu item and tool button.

In addition to many other resources, the Book Reviews area of ...

Books is another issue. At present I am working on a notebook computer and don't have the benefit of an office or other place from which to work that will accomodate a library of books. Not even a few. The more online resources I can find, the better.


 
 
Samuel Hobbs





PostPosted: Team Foundation Server - Setup, Project Organization Top

First thing we learned is to keep the declarations separate from the implementation. .h and .cpp. The Windows Forms designer plays rough with that principle; everything gets stuffed in the .h. That's a fair implementation detail, it is just a lot easier for the designer (MSFT programmers) to keep everything in one file rather than trying to keep two files in sync.
The STL has everything in incuded files, but it does not use the "h" extension.