views:

426

answers:

5

I am in the last year of undergraduate degree and i am stumped by the lack of example in c++ and c# large project in my university. All the mini project and assignment are based on text based database, which is so inefficient, and console display and command, which is frustrating.

I want to develop a complete prototype of corporate software which deals in Inventory, Sales, Marketing, etc. Everything you would usually find in SAP. I am grateful if any of you could direct me to a books or article or sample program.

Some of the question are :

  1. How to plan for this kind of programming? should i use the concept of 1 object(such as inventory) have its own process and program and have an integrator sit for all the program, or should i integrate it in 1 big program?

  2. How to build and address a database? i have little bit knowledge in database and i know SQL but i never address database in a program before. Database are table, and how do you suppose to represent a table in a OOP way?

  3. For development type, which is better PHP and C++ or C# and ASP.NET? I am planning to use Web Interface to set form and information, but using a background program to handle the compute. .NET is very much integrated and coding should be much faster, but i really wonder about performance if compared to PHP and C++ package

thank you for the info

+5  A: 

Before I start this is a shallow answer to a deep question.

1) It looks like you have a reasonable grasp of the major components of your target application. As a .net developer I'd build assemblies that matched broad areas of functionality (not sure what the equivalent is in PHP) and then you can use those assemblies together as a single large app, or seperately as required. It's unlikely you'll get it right first time, so build it how it feels right, and then do some ruthless refactoring to make it better once you've got a handled on the problem.

2) This whole area is covered by Object Relational Mapping - ORM, NHibernate is the best of the bunch in the .Net world. BTW if you learn that you'll be way ahead of the game come graduation/work time. Raw sql is so last decade. I guess you know that Sql Server Express is a free download?

3) For development go with the languages/environment you feel most comfortable in. My preference is .net, and the integrated coding is much faster. Performance is definitely good enough, especially as this is learning project - SO runs on .Net and that supports a gazillion users pretty well.

Enjoy

MrTelly
While I think NHibernate is a good product, I would disagree that it is the best of the bunch. EF v4 has radically improved from v1, and offers many things that NHibernate does not. It is a very solid product, with considerable flexibility and extensibility, fantastic LINQ support, amazing tooling (far out-pacing anything available for NHibernate), and pretty amazing multi-tier support with self-tracking entities. Forthcoming improvements like Code-Only support only solidify EF v4 as a major contender for the ORM crown.
jrista
A: 

I don't have any good recommendations for SAP-like projects in particular, but in general the best examples to use for things like this are well-established open-source projects. Anything else is going to be a "toy" example in one way or the other, and will be simplified and cleaned up. It's the "cleaned up" that makes it most unrealistic -- one of the really key things that makes real-world large software projects different from university examples is that the real world is messy, and real-world requirements are messy, and collaboration between lots of people with not quite the same priorities is messy, and real-world software projects have to adapt to and thrive in this messiness.

In answer to your specific questions, though:

1.) Do things in a modular way. This means you have something you can test and work with as soon as you get the first module done. That's especially important when you're learning, because (a) you probably won't have time to actually finish the whole thing, (b) you'll learn a lot from writing the first bit that you'll want to apply in future bits and then you'll probably want to rewrite the first bit, and (c) you'll learn even more from using the first bit.

2.) There are many views on this, and many online articles and books. I can't answer that in an answer here (except to note that in some cases trying to represent it in an OOP way is the wrong programming paradigm -- be careful about overconstraining the answer by the question you ask!); the right answer is to find things to read and spend some days reading them.

3.) You do not care about that sort of performance issue here. Successful programs have been written in both forms. You care about what will teach you the most, and what you are comfortable working with. Either one should be fine. You'll probably find more open-source pieces to look at with PHP and C++.

Brooks Moses
A: 

Your question pretty much covers the whole gamut of planning for a project; a whole thesis might be written (+:

Keep in mind what your team and your teaching-staff want out of the project.

1) Modular is my choice. It'll force you to address the application one module at a time and keep you focussed, but that is subject to

  • The familiarity of your team with the preferred/recommended language for this project.
  • Time in hand Remember that modular means you will necessarily have to provide for module integration too.

2) C++ or C# ? Whichever offers the more learning experience. My own experience with both mentioned technologies is limited, but I remember there used to be a Database Template Library (DTL). C# on the other hand will probably be faster to develop. I could be wrong. There are any number of free DBMS engines available on the net. Unless the assignment explicitly recommends using a text, opt for one of these.

3) I concur w/Brooks up there ^^^

Good Luck!

Everyone
A: 

You are a university graduate. And you are talking about complete inventory system. I suggest building a blog application first with all the best practices (like blogengine), then move to e-commerece sites (nopcommerce, dotcommerce). And then do whatever you like. This is a common problem with grad.s like you, of jumping way higher without building any simple projects first.

pokrate
+2  A: 

This may not answer your question directly, but I thought this might help you get started in some way. So here it goes: I would say, "think through the process". This means, think through the software development process:

  • Gather requirements
    • Identify and define the problem.
    • Get as much information/facts as you can. (turn on green light, think about everything that you want to go into your software)
    • Come up with a baseline (turn on red lights, what you really want? the minimum functionality your software "must have" - cant live without)
  • Analyze
    • Know what you don’t know, what are the missing facts?
    • Evaluate your information or lack of it/reliability of information source.
    • Infer facts that you don’t know.
    • Form an assumption, opinion, or possible solutions.
    • Consider alternatives and implications of each solution.
    • Form an action plan.
    • Identify technology pros/cons.
    • Decide technology
    • Comeup with a functional specs.
  • Research
    • Dig into stuff that you would want to know (Best database, ORM, design practices, code samples - gather everything, read about inventory systems that are already there)
  • Design
  • Develop
  • Test
    • Fix
  • Prepare deployment plan
  • Release the product
  • Gather user feedback
  • Analyze user feedback
  • Plan for items in next release.
  • Repeat steps

And Enjoy!

KMan