|
Yeah I do.
"The pursuit of excellence is less profitable than the pursuit of bigness, but it can be more satisfying."
- David Ogilvy
|
|
|
|
|
Hi Everyone,
I have gotten myself into a project who's design is far beyond my abilities. I'm a rookie when it comes to good object oriented design. I understand the basics, but am not familiar with all of the patterns and such. I am the only programmer at my company and don't have anyone to bounce ideas off, so I'm posting here hoping for some coaching and guidance on a good class diagram.
That being said, the project is a reporting system that allows spreadsheet entry via a website. The website is currently operational and used for other purposes. We are currently using FarPoint Spread for other spreadsheet data entry. We have a folder on our web server that is called forms and holds each report spreadsheet.
I have identified what I think are the main objects.
What I don't know how to handle is the validation and processing. I assume I would create a validation interface and a form processing interface, but I don't know how to lay that out.
I've typed up a summary of this project:
Abstract:
Professional Hospitality, a hotel management company, has each hotel report back to the home office on a monthly basis. The current arrangement requires the manager to type up all of the information on spreadsheets. The spreadsheets are then printed and mailed via postal to the Home Office. The Home Office, then opens and sorts the mail and types in the data from the spreadsheets. The new spreadsheets are then printed and delivered to the appropriate regional managers around the home office. After the regional managers review the information, the printed spreadsheets are then sorted and filed in file cabinets.
Problems:
The current process involves large amounts of manual labor, postage, printing costs, filing costs, and data entry costs. The goal of this project is to reduce or eliminate these cost burdens and therefore increase company profitability. Professional Hospitality would like to be able to create other reports to be submitted on differing intervals. Current examples are a Sales month-end, bi-weekly rate reporting, or annual reports.
Requirements:
• Web based data entry that is similar to Excel spreadsheets
• Templates (master spreadsheets) used to format each form and also ensure consistent entry
• Enter data on multiple templates for each reporting period
• Submit the entire group of spreadsheets when the period has lapsed
• Ability to create multiple report periods. AKA, a monthly report, bi-weekly report etc.
• Ability to setup validation rules in spreadsheet cells. Validations would be enforced when trying to submit the report.
• Ability to setup automatic value transfer rules from one reporting period to another. In other words ability to copy cell E10 from the last reporting period to the current.
Definitions:
Periods: A collection of “Periods”.
Period: Required reports to be submitted at a specified interval. A period contains a collection of period reports. (Month-End, Bi-Weekly, Sales Reports, Rate Reports etc).
Period Reports: A collection of reports for the specified period. If this were a month-end period, then you would see January 2008, Feb 2008, Mar 2008 month-ends.
Report: A collection of forms to be submitted for the reporting period. An example of a report would be January 2008 Month-End.
Form: Individual report-specific instance of a template fill with the periods information
Template: Excel spreadsheet used to standardize data entry
|
|
|
|
|
i am sure it's your home work and you are just making up about the company and stuff .
innit
|
|
|
|
|
Actually, no...it is my day job. The company is Professional Hospitality.
You can see more info here. http://www.prohospitality.com/staff[^]
Since, you mentioned it though... I could see where people would take advantage of resources like this to help them solve their homework.
~Wauna?~
|
|
|
|
|
Wauna wrote: I have gotten myself into a project who's design is far beyond my abilities. I'm a rookie when it comes to good object oriented design. I understand the basics, but am not familiar with all of the patterns and such.
First and foremost, don't get bogged down in the abstract of design without understanding the nuts and bolts of the technology you'll be using to build this system (or add functionality to an existing system as it sounds like part of it is already built). Have a firm understanding of the tools you'll be using. Once you have that knowledge, then you can begin to think in the abstract and play with the pieces, so to speak, fitting them in different ways until you have something that works for you.
Other than that, I don't have much to offer at this time. Web based apps are not my forte. But perhaps in the future if you have a specific design question I may be able to help.
|
|
|
|
|
Would anyone be willing to help me via email correspondance?
|
|
|
|
|
Wauna wrote: Would anyone be willing to help me via email correspondance?
I would seriously doubt that people here have the time. Most of the people on this site are busy professionals, who have enough on their plate just answering in the forums. Sorry.
|
|
|
|
|
Time to find a new job, me thinks.
Gary
|
|
|
|
|
Wow Gary,
That wasn't very nice. I was asking for help, not insults.
Mental note to self... "Don't use this message board anymore"
|
|
|
|
|
You're silly Wauhoo.
I offered not an insult, but advice. You may take it or ignore it, but I think if you can't do the basics of your job, you should be looking for another. Just kindly advice.... Just because you can spell coder doesn't mean you are one.
Is a "mental note to self" a mental note to self when it is public and to everyone?
Gary
|
|
|
|
|
Gotta say, with 10 years experience in something that hasn't existed for 10 years, I'd expect you to know a little more that what's evidenced in your post.
You should take advantage of "Professional Hospitality offers competative [SIC] compensation and a comprehensive benefit package which includes:
* Career training program"
Gary
|
|
|
|
|
Wow..... you are really a mean and nasty person.
Why do you want to insult me so much?
What on earth do you have to gain by rubbing my face in the sand?
You've made a lot of judgements about me with extremely little information.
It's hard not to take it personal when someone says you are not good at the job you've been doing for over 10 years.
|
|
|
|
|
" but I think if you can't do the basics of your job.."
How do you know that I cannot do the basics of my job?
Have you ever heard the statement "Two heads are better than one?"
It's always beneficial to have people review your designs, whether you're a veteran or a rookie.
|
|
|
|
|
Wauna wrote: Have you ever heard the statement "Two heads are better than one?"
Especially if you're conjoined.
|
|
|
|
|
Wauna, There is a ton that can be said about design and architecture and there is no way to fully answer you question here. That being said, after reading your summary a few things strike me.
1) Can you identify entities on the spreadsheet that are, or can be, represented by objects? If so, then you may need to rethink your architecture to leverage those objects instead of a spreadhseet.
2) Don't tie the UI for data entry to the layout of the report. Or perhaps a better way of saying this is, don't assume that the method off data entry must mirror the report layout or vis versa. A spreadhseet may not only not lend itself to easy validation in a web app, but it may not be the most optimal form of data entry for your end users.
Just a few thoughts, take 'em or leave 'em, but there they are.
|
|
|
|
|
The last couple of days I have been recreating Pong in Silverlight. The reasons for this are threefold:
1) I'm on holiday, and have little better to do (well, actually I have lots better to do, but no motivation to do them).
2) I wanted to play around with the Silverlight 2.0 beta
3) I wanted to investigate a UI pattern, so I picked on MVP although I realise now it has been deprecated.
All-in-all the process was extremely easy, despite a few quirks in the SL 2.0 beta, however one issue popped up related to MVP - possibly due to my naivety - which I thought I'd run past you folks.
In a business application that collects various data from various textboxes and other controls the model and the view can be cleanly separated via the presenter as the way in which the data are displayed is unimportant to the model, and the way in which the data is handled by the model is unimportant to the view.
Whilst some of this holds true for my Pong game I found - naivety again? - that there exists a coupling between the view and the model. This in my mind is because the objects involved - bat, ball etc. - do not hold data themselves as a textbox would, but because the model holds data about the position and size of these objects.
Quick aside: The reason this situation occurred is because I drew the court etc. in Expression Blend first and then came to the coding in a simulated designer + programmer type environment.
Now I could take this up a level and say well the Canvas - ie the court the game is played on - contains these objects and it should be relatively trivial, except that we might reasonably want to change the size of court and again we run into the same issues of that dependency existing between the model and the view.
By now I'm thinking whilst MVP is a powerful technique - and offered a number of benefits, including the removal of all game logic from the view - it needs tweaking for this problem domain.
So basically I think what I'm looking for is either a method of defining the game elements from the model and building the UI on the fly - which completely does away with the idea of Expression Blend, graphic designers and arty-types, or a sensible approach to sending the details of the UI (court size, ball size, bat size and position &tc.) into the model without creating a huge dependency between the two... thinking about it, this second could quite easily be accomplished by the Presenter, couldn't it - but would that create another dependency issue, or would having a SilverlightPongPresenter tied to Silverlight (and maybe a WinformsPongPresenter and a...) which implements IPongPresenter be acceptable?
/me Goes off to fiddle.
|
|
|
|
|
So, what happened???
Jon
Smith & Wesson: The original point and click interface
|
|
|
|
|
I went back to work
|
|
|
|
|
martin_hughes wrote: I went back to work
Oh !@#$#@! Your post was great. Raised all sorts of questions in my head. Now I'm going to have to work on the answers? . . .Maybe I could post a PLS HELP URGNT about it. . .
Jon
Smith & Wesson: The original point and click interface
|
|
|
|
|
I have an Export Engine that uses an XML export definition to create mainly CSV files from a database. I would like to build in exception tolerance at the field and line level, so that when testing a new definition or a change to a definition, I just log all exceptions, and deal with them as a batch after a test run, rather than have the run abort at each new exception found. Exceptions that should be tolerated are invalid field names, null values etc.
Are there any established patterns for implementing this?
Pits fall into Chuck Norris.
|
|
|
|
|
I would use a validation engine for this, and just build up a list of validation failures. The beauty of a validation engine is that you can add rules iteratively and the engine should be able to cope. I wrote part of one a while back that you are more than welcome to take and add your rules to. Send me a mail for it.
|
|
|
|
|
Thanks Pete, I'd love to have a look at your engine, but what are you suggesting I validate? The definition, i.e. does the query execute, do all the output fields map correctly to input fields etc? Or validate every row of input data against the output schema?
Pits fall into Chuck Norris.
|
|
|
|
|
It's up to you what you validate, but you could do things like validate that mandatory fields aren't null, that field types don't conflict with field values - that type of thing.
|
|
|
|
|
I've decided, in light of this being a financial application, any exception handling or avoidance, is not worth the risk, so I'm revising my strategy to only possibly increase the number of exceptions thrown. Applying a validation engine here would be overkill, as most operations generate exceptions for fault conditions, e.g. invalid field names, but I'd still like to see your engine and maybe use it as inspiration elsewhere.
|
|
|
|
|
Brady - send me an email (through the email link here) so that I can get an address to send the project to.
|
|
|
|