Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

BIG project?

Posted on 2004-08-03
26
Medium Priority
?
259 Views
Last Modified: 2010-03-31
Hi everybody,

I'm going to be starting a very large project soon, and I'm pretty positive I'm going to run into problems 1/2 way down the line. I cannot realistically plan out the entire project on paper since it would take far too long. So my question is, how do you start such a large project and what preperations do you make? I.e. any special programs you use to help the design phase? etc...

Thank you!
0
Comment
Question by:Unimatrix_001
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 5
  • 4
  • +5
26 Comments
 
LVL 35

Accepted Solution

by:
TimYates earned 300 total points
ID: 11705441
Whiteboard, 3 people, markers and circle/line diagrams

Also, a clear definition of what the system should do, what resources it will need, and mockups of any dialogs/webpages

That's what I use anyway...  Even if the 3 people aren't going to be programming the project, you need them there as 3 pairs of eyes spot bugs/pitfalls/optimisations much better than one

Tim
0
 
LVL 3

Author Comment

by:Unimatrix_001
ID: 11705490
What sort of detail do you go into?...for example clicking button A brings up this dialog and clicking button B closes it etc...
0
 
LVL 35

Expert Comment

by:TimYates
ID: 11705535
Nah, just quick layout of the main dialogs... that way you can see if there is too much info on one screen which usually means your data structure could do with normalising ;-)

Basically, I try and get all major classes of object into circles on the board, then we can start linking them up and working out which ones need to be stored, which need to be encrypted, which can be derived from others, etc...

Then it's easier to see how much coding you need to do, and break it into managable units that can be tested in isolation :-)

It's so much easier writing code for a week or two, then testing it, then writing the next block that plugs in and uses the first block, etc...

-------

Other people probably have MUCH better ways of working than this ;-)  It's just the way I find easiest :-)
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 3

Assisted Solution

by:JohnnyAffa
JohnnyAffa earned 100 total points
ID: 11705536
study software enigeering and its phases!

- inputs/outputs
- data structures
- processing
- coding
- testing

actual coding is one of the last things you do!

0
 
LVL 35

Assisted Solution

by:girionis
girionis earned 160 total points
ID: 11705574
The best way is to talk about the project with all the people who will participate and identify the key components. Then try to break them down and write a few UML diagrams that describe the most basic parts.

But even by doing this you will probably run into problems half way down if you do not design it *all* on paper first. Unfortunatelly the bigger the project the more imperative the need to design it on paper first. Better to spend more time now rather than spending it on modifying it later.
0
 
LVL 3

Author Comment

by:Unimatrix_001
ID: 11705615
Hmm...Mind if I leave it open to see what other people say?....
0
 
LVL 35

Expert Comment

by:girionis
ID: 11705693
Not at all :)
0
 
LVL 35

Expert Comment

by:girionis
ID: 11705696
In fact you should leave it open in order to get more ideas :)
0
 
LVL 5

Expert Comment

by:jpolin1
ID: 11705830
Big projects require more people, analysts to define requirments, and programmers to make it happen. If you have to design the system from end to end you are doomed.  U need to insulate yourself from the people that want the system created, or you will have revolving door development.
Thats where the bus. analysts come in.
0
 
LVL 14

Assisted Solution

by:sudhakar_koundinya
sudhakar_koundinya earned 120 total points
ID: 11706537
1. Prepare Functional Specifications Document. In which you need to identify initial functional flow of the project
2. Prepare Software Requirements Specification In which you need to identify the utilities/tools/softwares for your Software based on the Functional Specifications Document
3. Preapre Software Design Document, you need to identify the detailed functional flow of your software.
             1. Prepare Use Cases
             2. Prepare Sequential Flow Diagrams
             3. Prepare Collabration Diagrams
             4. Prepare Class Diagrams
                   1. Database Level - Also known as Physical Design Document
                   2. Code Level -> Based on the use cases and sequential diagrams Identify the classes and objects you require
4. Test Plan - Prepare the Test plans based on your use cases
5. Coding
6. Testing
7. Documentation - High Level and Code Level


     
             
   
0
 
LVL 2

Expert Comment

by:billyea
ID: 11710405
Okie, I bet your subscription to Programmers Weekly was written in Aghagaslavian so I'm here to clear it all up.
Lets get down to the dot on Project Lifespan.

public void Step1
{
Let's see...large project...lots of money. BIG DEAL! Same thing applies to small projects.
First you need an idea of what your program's gonna do (if it actually does anything...useful).
If you don't, you might as well hit your keyboard and call it 'coding'.
}

public class Step2
{
Okay, you got your function of the program.
If your function is too wide then narrow it down or you'll get a program that is a travel agent AND a nuclear reactor AND etc.
If it is too thin, well, you have a program that sells GREEN colored MINTS to SASQUATCHES in BC FARMS.
Next you must list all the stuff required by your program to do it's function.
For example:
Java Runtime, Collision Class, MyLIfe.txt, Arrow.jpg, CopyrightJunk.png.
This should be done after making a map of the interface. All those cute buttons. This will be explained in step 3.
}

import java.util.Step3.*;
The point of Windows is that it's colorish and picturish.
DOS stinks, so you need an interface unless you want to get a slap-in-face.
Especially with commercial apps, you navigate from each 'screen' to screen to operate the program. Make a map of how each screen should be necessary.
Then plot buttons on the map. This is all best done on Paint. As you add a new image, bring out a notebook and list it along with the screen it is placed on, same with a new textbox or object.
Eventually you should have a list of all the components and their locations. You're done the mapping. Good job. :D<[Blegh!]

Step = 4;
Woot, you got your blueprints!!!
Next you have a map saved in Paint, you have a list of components. Now for consultation.
I'm assuming you work in a bigger company and that this is not a one-man show. If it is, skip this step.
Gather all those programmers and show them your map. Do a Shockwave presentation or Powerpoint or get a Live Band. Your point is to make everyone beleieve you're the king.
Tell them your idea, I bet it will look alot better since you planned it.
Also be sure to look at other people's ideas. If they're better than yours, buy a dunce cap and sit in the corner.

String = "Step 5: (are you still there)"
You have a list of components, now you have to make practical of those.
Make your list of components into solid objects. Create a function for a text box, an image for the arrow, and a blank in the Copyright notice. Thank goodness you had that list, so one by one convert the text on your list to real time components.

Step 6 = new Step("WHOA");
Add the components to your program using your map. Then connect them with a list of buttons, checks, and hyperlinks.
This is sort of like making a webpage.

Step 7:
Debug the program. You'll get a mountain of errors :). If this was someone elses' idea, tell him it doesn't work. And use that as an excuse to recall a meeting. (TIME WASTERS!)
If it was yours, slowly debug each, don't worry, its okay to start at step one...100 years isn't that long.

System.exit(8);
Here is the point where you can add extras. For example, docs, a REAL copyright, logo, add ons, etc.
But if your team would not like to do that (lazy asses) then you're done. YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY!

You're done! Your program is ready to be sold to the world! See if it SUCKS!!!!! LOL :)
And that is the end of Programmers Weekly Project Edition.
Hope it helped.
0
 
LVL 35

Expert Comment

by:TimYates
ID: 11710864
mmmm....  that was helpful

:-(
0
 
LVL 3

Author Comment

by:Unimatrix_001
ID: 11711159
...billyea, I hope you won't mind me waiting until some more helpful comments like the previous ones come along before I jump in to accept yours...
0
 
LVL 2

Expert Comment

by:billyea
ID: 11711351
okie, I don't...much
0
 
LVL 2

Expert Comment

by:billyea
ID: 11711371
wait a second...what do you mean my comment's not helpful
0
 
LVL 9

Assisted Solution

by:doronb
doronb earned 200 total points
ID: 11714899
Only adding my two cents here:

1) Break a large project into smaller projects (always helped me in the past)

2) Try to identify the whole cycle of interest in the project (i.e. If you're working on a Client/Server project, like a Newspaper Online Server for instance, remember that the newspaper material has to flow from the individual correspondant through a check-in process, to the Editor's virtual desk, together with page-design-layouts... so you have (Correspondant->Checkin) + (DesignArtist->Checkin) + (Editor->PageComposition->Checkin) + (EndUser->ViewPaper), 4 separate cycles to take care of)

3) Try to keep your client's involvement to a minimum of well defined and isolated points (i.e. don't let your client drive your programmer's nuts with GUI requests like make this label blue and bigger, when the project is still missing major functionallity)

4) There will always be something you've forgotten, it just happens like that, we're all humans and there's no possible way to think about EVERYTHING in a project beforehand, moral is, ALWAYS be ready for changes (i.e. today your clients view your NewspaperSite through an ActiveX, tomorrow, you may be required to re-write the WHOLE rendering engine as a Java Applet!)

5) Try to cement as many API's as possible (i.e. think about componentializing your software project with the help of USE CASE's and other methods, and once you have identified enough components to START declaring API's DO SO!)

6) Having said what I have about API's (Item #5), remember Item #4, be ready for your API's to change! (i.e. imagine how you can prepare for your R&D Manager telling you that your whole communication's layer is to be changed from RMI to simple TCP/IP using Sockets!)

7) Don't get carried away with layers of abstraction, use them when the need is there and valid (i.e. see Item #6, a layer of abstraction keeping the communication layer seprarate would later on help you easily replace the communication layer with another).

8) Make sure all API calls, data structures, component messages and constants are WELL DOCUMENTED and everyone on every team can access the documents!!

9) Use some CVS and regular backups for project documents as well as project code and templates.

10) Tackle harder issues first. (a personal thing with me, I always want to know the project IS doable, so I will first try to identify the points I don't know how to accomplish and research those first, once I know I can do everything, its easier sleeping at nights ;)

I hope this helps,
Doron
0
 
LVL 9

Expert Comment

by:doronb
ID: 11714920
P.S. Cheer up, a Project without constant changes is either a Shelf Product, or simply a dead project ;)
0
 
LVL 2

Assisted Solution

by:billyea
billyea earned 120 total points
ID: 11719348
I'm using the technique used by many of the major software companies out there. (Like Norton and Lavasoft).
I have summarized my steps here. Steps: 8

Step 1: What is the program's function? (I will be using 'function' in the non-programming term)
Step 2: Make your function not too broad, not too specific.
Step 3: Split the functions into separate screens, each with a specific purpose that fuffils your function.
(Norton Anti-Virus has one 'Status' screen, a 'Scanning', and 'Reports' screen all for the function: virus removal)
Step 4: Design the interface for each screen in Paint. For each component you add to the picture, write it down in a notebook along with it's location. Eventually you should have a list of all components and their locations.
Step 5: Convert the components you listed into code,images,and sounds (objects).
Step 6: Add the code to your program. Integrate your objects together. They should plug in nicely.
Step 7: Link the screens together like linking a webpage. (with buttons and stuff).
Step 8: Debug the program.
Step 8: Add External Extras (docs, copyright, JRE, etc)
You're ready!
0
 
LVL 2

Expert Comment

by:billyea
ID: 11719374
P.S. Igonore my first comment, it was too complicated. :)
0
 
LVL 3

Author Comment

by:Unimatrix_001
ID: 11725525
Ok thanks everybody...don't think I'll get any more comments here... Points split! :)
0
 
LVL 35

Expert Comment

by:girionis
ID: 11725552
:)
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 11725581
:-)
0
 
LVL 35

Expert Comment

by:TimYates
ID: 11725618
:-)
0
 
LVL 3

Author Comment

by:Unimatrix_001
ID: 11725626
Hehehe! Millions of smilies! :) :) :) Thanks again people! :)
0
 
LVL 9

Expert Comment

by:doronb
ID: 11728184
Hope we helped :)
0
 
LVL 3

Author Comment

by:Unimatrix_001
ID: 11728198
Yes! :)
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

INTRODUCTION Working with files is a moderately common task in Java.  For most projects hard coding the file names, using parameters in configuration files, or using command-line arguments is sufficient.   However, when your application has vi…
Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
This video teaches viewers about errors in exception handling.
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.
Suggested Courses

715 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question