|
|
Comments and Discussions
|
|
 |

|
good first article, can't wait to read the second.
cheers,
Donsw
My Recent Article : Optimistic Concurrency with C# using the IOC and DI Design Patterns
|
|
|
|

|
These are the programming techniques that you don't consider when you are at school.
But when you have to do some real world job, you understand the importance of a previous and extensive software design.
The customer part was great that's exactly how things work.
Great article, though it's kind of large
|
|
|
|

|
Thank you Matt
|
|
|
|

|
I just want to thank the Author for this Great Article !
-- AliAmjad --
|
|
|
|

|
hello, i am in need of ur help regarding the following. how to develop a bug tracking and reporting system. what is the main fuctionality, how to identifie bugs, which tests we have to do. give me a clear idea regarding this. thank u
g.sudhakar raju
|
|
|
|

|
keep doing good work.
Asif Naeem
|
|
|
|
|

|
Dear Sir,
I have some questions regarding system design.
Please have look below for my questions.
Waiting for reply.
Best regards,
ASIF
Question#1
Imagine we are a vending machine maker company. You are in charge to design the the software to control a vending machine. You can assume that you have any type of software interface to the hardware.
Describe some of the requirements and modules/object design you will use to make such a system.
Question#2
Imagine we are a Online English School. We already created client’s user interface for the teacher and the students to use. Now we need to create the server side. An online class with has teacher and multiple students. The teacher can lecture to the students and the students can ask questions to the teacher. Questions asked by a student are heard by all students and the teacher.
Describe some of the modules/object design you will use to make such a system.
|
|
|
|

|
This is a typical case of software engineering.
I love this article, you explain every step you have taken to get to the solution you want.
I myself am studying software engineering at the moment, I need to figure out whats a good way to setup and work on a project. This article has helped me a lot to get the first things clear.
You got my 5.
WM.
What about weapons of mass-construction?
|
|
|
|

|
I like how you explained the requirements phase. Funny and quite realistic
I'll check your other articles as well.
Thanks,
Ogun
|
|
|
|

|
Very helpful article! I am developping a Project Management System and your article "The life of a project" was not like anything I've been read before.
|
|
|
|

|
We had exactly the same problem in our software house. We are using successfully the Bt.Net project. I strongly suggest you to use this one. What makes in different from anything else is:
- this is ASP.Net based open source, so if you need to change anything from adding a picture on start page to make some serious refactoring you are free to do it
- this has very opend architecture and you can easily create different views using SQL language. This is how we created and maintain ToDo lists.
- this extendable; number of times we added and removed some customed fields
- this is not very fancy but in daily work for dev. team with is horse power and this really works great
I would fell like selling this staff, unless this is free in fact.
I am looking forward also for a new VS .Net 2005. There is going to be some bug tracking system as well. Wondering what kind of.
-------------------------
Adam Koszlajda
|
|
|
|

|
Hi Adam,
Could you please give a link for BT.NET ?
Regards
Kareem Shaker
|
|
|
|

|
http://btnet.sourceforge.net/bugtrackernet.html[^]
By the way I have also researched the number of the other options last time;
http://www.techexcel.com seems to be a great shot for development team - I was really impressed after watching number of their recorded demos, however unfortunatelly this is very expensive (for DevTracker, desktop version they charge you about 500$ per user )
-------------------------
Adam Koszlajda
|
|
|
|

|
Another to add to the list is Gemini: http://www.countersoft.com. They give out a FREE 5 user license and free licenses to open source projects. Cool.
|
|
|
|

|
Enjoyed reading that. I too have developed issue tracking systems for the teams use, its now heading towards it 4th inception. Originally a GUI application (still in use today in another company), then went web based (again being used by another company though it looks horrible) when i learnt asp.net, then got a total revamp and got to be quite cool, but was missing things like a timer so we could track time. There are limits to a web client, limits to a windows clients, limits to all clients. I really see only a SOA working as the back end, then you can write all the clients you need to interface into wherever, probably dev environment/Windows app/sys tray/outlook even. Youre requirements list is very close to mine. I made my biggest mistake on the last version in trying to show too much information at once, i didnt realise how much data the users would put into it! And of course the users didnt use it the way it was supposed to be used, even though it is dead simple, especially after being shown. Another round of changes and it will be a really good application. Always seems to be just one release away from perfection...!
I also looked at commercial systems, and none of them blow me away, all pretty average, which is why i am considering releasing the last version at some point. But then... SOA beckons... i really believe this is the way to go. Best of luck and will be here watching from the sidelines.
One final comment; 5 years ago i had surgery and spent 6 months unable to walk at all. My company brought round my computer so i could continue programming and kindly gave me a project that i could do alone (counterpoint i love you). I ordered food online weekly from tesco and they even put it in the fridge for me. I bought a webcam, learnt to write flash and asp. To be honest it was not a great time in my life (leg covered in plaster and no showers for 6 months - go figure), but without the computer and something to focus on, it could have been a lot worse than that. Keep writing, you write well. Keep sane, and feel free to drop me a line to brainstorm anything, i am here on skype.
The architect concerns himself with the depth and not the surface, with the fruit and not the flower.
- Lao-Tsu, revisited by Philippe Kruchten
For cost effective internet solutions, get your free quote at ImageIntellect
|
|
|
|

|
Nice stuff!
I really liked your article and I think it contains good advice that would be hard to argue against. It gets a 4 from me. I realize it's below your current ratting, but I don't see it as a bad mark.
There's only one thing that I think should have been made more clear: what you have here is a team of one writing an application for himself to avoid watching too much telly. Practicing good habits while doing this is great, but a "...process of software development starting from a concept and going to a product" implies quite a bit more than that.
In real life, with real products, there are a few things you cannot dismiss just like that. In no particular order these would be:
- your users (those who might end up using your creation)
- your clients (those who pay for the application, usually others than those using it)
- your managers (those who should manage the clients and their expectations better, so the whole development process can be less of an art and more of a process)
I just realized I wrote two paragraphs criticizing your article and only one of praise. Sorry about that, to even it out let me say it again: very good article and a great starting point.
OGR
|
|
|
|

|
I'm going to be meeting my first (real) customers tomorrow for the first "interrogation", so this article series is really encouraging.
Just felt like sharing since I'm a bit nervous. Thanks and wish me luck!
By the way... do programmers wear suits and ties to "interrogations"?
|
|
|
|

|
i am designing a client/server application. i am using v++. it is a dialog based application. i have buffer of 1024 bytes for receiving data but iam unable to send a file more than 100 bytes
kashyap
|
|
|
|

|
I believe you need to sent chunk of bytes over the socket until you finish. Of course, you need to check your data for ending to stop getting data over the socket.
I hope this help.
|
|
|
|

|
Sir,
im a student, and do my final semester project.
I've to develop a project management tool.It will create teams and subteams in
org, and assign tasks to team members and allow the members to initiate new tasks
in a workflow based system.
Sir plz give me hints, how to start my work.
I will wait for ur response.
Regards.
Salarzai:
|
|
|
|

|
I am not able to use various commands,macros, project settings and all other stuff of Visual Studio. Like yesterday i come to know TRACE is very usefule but yet not able to use it. Similiary many hidden. Do help me for proper use of Visual Studio.I developed aplication in VC++ using MFC and win32 API.
Thanks for kind help
Moyeen
Sr. Software Design Engineer
|
|
|
|

|
Sir.
i have a created project and i want to add it into my own proect to use its funtion,or some way to use its funtion
please help me
thank you in advance
dnqhung
|
|
|
|

|
Thanks, this will help those of us (or maybe it is just me!) that are less than organized, hopefully to become more rational in program design. Thanks for putting this together. I look forward to reading the rest of them. I have also had similar thoughts about object oriented programming - something about it just doesn't seem quite right.
David Spain
|
|
|
|

|
You're welcome.
Matt Gullett
|
|
|
|

|
Great article. I have had many of the thoughts you have expressed. I agree that some applications just don't work well as applications. They need to be ubiquitous in your work environment. Writing can be so theraputic can't it.
How about instead of just a tray icon with a pop-up menu you have a dockable menu bar much like the one provided by windows that displays the active applications.
It could have an auto-hide feature so that it is out of the way when you don't need it. Instead of applications being displayed on it you would have a "systray" area that gives you one-click access to common features. Another are you would display the "priority" items with one-click access to opening the full item.
--
"The money power of the country will endeavor to prolong its rule by preying upon the prejudices of the people until all wealth is concentrated in a few hands and the Republic destroyed."
-- Abraham Lincoln
|
|
|
|

|
Thanks.
Ubiquity, Hadn't thought of using that word, but that pretty much sums it up.
Robert Little wrote:
How about instead of just a tray icon with a pop-up menu you have a dockable menu bar much like the one provided by windows that displays the active applications.
Are you suggesting a replacement for the task bar or an additional bar docked to one side of the screen?
|
|
|
|

|
An additional one that would be your "workspace" or "control center" if you will for the system. One feature I can think of would be to drag an email from Outlook or even a Journal or Task entry from Outlook to the bar and have it automatically create an entry from that. Or drag it to one of the existing items on the bar and have it append it to that items journal.
--
"The money power of the country will endeavor to prolong its rule by preying upon the prejudices of the people until all wealth is concentrated in a few hands and the Republic destroyed."
-- Abraham Lincoln
|
|
|
|

|
I kinda like your idea, but I think I need to see it to fully appreciate it. I am invisioning an integrated "developer bar" which can be customized to have various icons. Each icon can do something like:
1) Popup a list of "open" issues or recent journaling changes
2) Display an issue entry form
3) Jump to a particular activity entry
4) Show a summary report
5) etc.
Is this what you are thinking? Usually I am not foud of bars in addition to the task bar (like the office shortcut bar), but it might work if we could find a way to make it work when needed, but be invisible when not. I can see how this could be better than the tray icon because it would provide even quicker access to desired functionality, but I still think I would have to see it to know if I would use it.
Maybe we just need to create a band on the task bar?
|
|
|
|

|
This is what I am thinking. I kind of like the idea of just adding it as a band to the existing task bar now that you mention it. It would be an addition to a systray item really. And since you want it to be configurable the band and the systray item would be optional.
--
"The money power of the country will endeavor to prolong its rule by preying upon the prejudices of the people until all wealth is concentrated in a few hands and the Republic destroyed."
-- Abraham Lincoln
|
|
|
|
|

|
I hope the CP2 project leads read this article. Good one, look forward to the next one.
Paul Watson Bluegrass Cape Town, South Africa
Chris Losinger wrote:
i hate needles so much i can't even imagine allowing one near The Little Programmer
|
|
|
|

|
Thanks for the kind words.
|
|
|
|

|
Paul Watson wrote:
I hope the CP2 project leads read this article.
I have had a chance to skim it, and am taking home a printed version tonight. Looks quite promising, now if I can only get hime to do the requirements gathering and specs for me...
Roger Allen
Sonork 100.10016
Were you different as a kid? Did you ever say "Ooohhh, shiny red" even once? - Paul Watson 11-February-2003
|
|
|
|

|
You outdid yourself, Matt! I find the same problems with photo-organizers, so for the same reasons, I'm writing my own. Definitely inspirational, and I think your gut feelings about OOP are dead-on, as are your comments about programs being closed, representing someone else's idea of what data should be managed, how, and where presented and your comments about wanting an application to read your mind. Absolutely! (Even figuratively, it's amazing how, as you said, apps often cause more work than not--like a manager, they should facilitate work, not hinder it)
It's high time for customizable entry forms, etc. There was a lot of work done in this area in the 80's, believe it or not, when the personal computer just started taking off. Sadly, none of it seemed to materialize, which begs the question "What went wrong with those ideas?" To take a stab at it, I'd say they tried to be *too* general, requiring the end user to be a sort of "macro" programmer, which is also not productive.
If, like in other industries, applications start catering to the service industry, then I see the future being models like yours that ship with a dozen or so different pre-configured templates, and companies hire technicians to make minor custom tweeks.
I see a dynamically generated form created for each type of task. These forms should be customizable on-the-spot and I should be able to add new task-types on-the-spot.
He he he. You need a, um, framework. Want some help?
Marc
Help! I'm an AI running around in someone's f*cked up universe simulator. Sensitivity and ethnic diversity means celebrating difference, not hiding from it. - Christian Graus Every line of code is a liability - Taka Muraoka Microsoft deliberately adds arbitrary layers of complexity to make it difficult to deliver Windows features on non-Windows platforms--Microsoft's "Halloween files"
|
|
|
|

|
Thanks Marc. I always enjoy conversing with you.
The funny thing is that when I decided to start this article series over the weekend I knew that I wanted to develop an issue tracking system, but I didn't know the specifics of it. Until I sat down and wrote the article, throught about my work process, went through the motions, how I use my PC, etc did I realize what I really wanted and why.
I started this series of articles with the intent of exponding on my previously posted design pattern "The Entity Design Pattern"[^] as well as demonstrating why platforms (eg. frameworks) are critical to software development in todays world.
I haven't really fully formulated all the details of how I will implement this, but I believe that my vision is on the mark and deserves to see the light of day, so off I go.
Marc Clifton wrote:
Want some help?
Sure, if you're up for it. Send me a private email and we can discuss more details, if you are interested.
|
|
|
|

|
Matt,
I've already done a lot of work in building a C++ framework that incorporates a lot of the thinking you have in "Entity Design Pattern". In fact, one of the current uses for this framework is building an issue tracking system for inhouse use within my company. Very co-incidental -- and very strange.
|
|
|
|

|
I echo everyone's sentiments, great idea for a piece of software. Need help developing it? lol.
Marc, where did you get this line...it's great!
Help! I'm an AI running around in someone's f*cked up universe simulator.
I've been thinking that for years, it's all some bad dream.
James
|
|
|
|

|
All i can say is thankyou, this is going to be very interesting.....
BTW What launguage r u going to write this application in?;P
|
|
|
|

|
Thanks.
soloforce wrote:
What launguage r u going to write this application in?
Good question. Keep your eyes out for the next set of articles and see what transpires.
|
|
|
|

|
If it was up to me i would write it C# for a number of reasons....
|
|
|
|

|
I'm thinking Quick Basic myself.
|
|
|
|

|
Really good article - looking forward to the conclusions
|
|
|
|

|
Matt, your article is awesome.
I really hope you write a lot more like this!
|
|
|
|
|

|
OR, maybe the pipe dream that is object oriented programming is just plain wrong. Maybe it is a house of cards that will ultimately collapse upon its own weight. OOP has been around a long time and has promised quite a bit, and in truth has delivered some of its promises, but I always have a nagging feeling in the back of my head that says "it just isn't right." Maybe I misunderstand OOP and maybe all of these abstractions are just illusions any my concerns are misplaced, but I doubt this too. How can we have a system dependent on so many chances of failure? How can we have a system that relies on a lack of change when we know that change is not only inevitable, but a daily occurrence?
I think OOP is great if you are building some general tools/systems (such as Dev Studio, Outlook, etc.). For internal projects, developers tend to go too far with OOP. They spent a lot of time on design (over and over again) eventually got a set of complicated classes that are supposed solve almost all the possible problems. However, these complicated systems rarely get reused. The next guy will likely want to start from scracth because either he doesn't like it or he doesn't understand it (the complexity is to blame), he can easily find many disadvantages of the current system to justify starting from scratch.
Great article, by the way.
|
|
|
|

|
Thanks.
I partially agree with you on OOP. I don't really know where the line between wonderful and terrible is, but its out there somewhere.
|
|
|
|

|
I would have to say that it is not the OOP concept that is the problem, but how the average developer chooses to apply it. Far too often they overcomplicate their object models, and I really think that drives *non*-reuse. Personally, I think OOP is wonderful...when applied correctly...
|
|
|
|

|
jterrell wrote:
Far too often they overcomplicate their object models, and I really think that drives *non*-reuse.
This is certainly true in many instances.
jterrell wrote:
I think OOP is wonderful...when applied correctly
Absolutely.
jterrell wrote:
I would have to say that it is not the OOP concept that is the problem
Not always true. OOP has its limits and its natural consequences just like anything else. It is these limits and consequenes that concern me. I feel that OOP has a place today (a huge place) and will possibly have forever, but I believe it has been overextended in the many layers of abstractions that we developers use in our daily lives. There are too many interdependent layers which are subject to change and the end-vision of computers, that being a truly adaptive and responsive computer-human interface, cannot be built on the layers we have today due to the lack of flexibility and stability. That is not to say that many of the common applications (ie. order entry, etc) will not remain forever, though.
This is really just my own personall "take" on OOP. I love OOP and can't imagine how I would do my job without it, but I don't see it as a panacea, or as the end. It is only some middle ground that we have for today.
|
|
|
|

|
Matt Gullett wrote:
I don't really know where the line between wonderful and terrible is, but its out there somewhere.
After having seen some outrageous failures and very few successes, I've come to the conclusion that OOP is excellent when applied to very universal and/or very well thought out constructs, AND has very well thought out or very implicit relationships between objects. Constructs that are essentially "naturally occuring". Constructs that change slowly, if at all. And if they change, it is more in the arena of performance than in functionality. Constructs that are completely definable, or whose abstraction is 99.9% guaranteed to handle all unknowns.
Some examples:
GUI: The concept of a user interface is pretty universal and has well defined relationships.
Messages: a well understood structure of content, address, addressee.
Modem-type devices: very fixed hardware, easily abstracted concepts for "send" and "receive", very well defined protocols and relationships between machine and device.
Game engine: Highly abstractable, fixed and definable set of technologies, even though technologies are changing rapidly, they can be contained well in abstractions, relationships between player and NPG's are definable at a high level of abstraction/generalization.
Terrible OOP cases (taken from real life):
Satellite engineering: constantly shifting technologies, requirements, functionality. Engineering rules change as technology changes.
Elevator engineering: undefinable, technology/requirement changes, not universal, not well thought out, relationships are hard to abstract. Engineering rules change as technology changes.
Boat yard management: different workflow processes depending on department. Different requirements depending on department. Very undefined requirements. Prone to significant amounts of feature creep as technology is adopted.
---
In other words, OOP is good when:
1. concepts can be highly abstracted
2. concepts are very well defined
3. relationships between concepts are very well defined
4. concepts and their relationships are slow to change
5. most importantly, the concept is something that is, for lack of a better term, taken for granted knowledge about the concept and its relationships. The social understanding of something is critical in driving the technological and conceptual changes that take place. If a concept is engrained in society (or some piece of society) it is not very likely to change in dramatic ways.
Marc
Help! I'm an AI running around in someone's f*cked up universe simulator. Sensitivity and ethnic diversity means celebrating difference, not hiding from it. - Christian Graus Every line of code is a liability - Taka Muraoka Microsoft deliberately adds arbitrary layers of complexity to make it difficult to deliver Windows features on non-Windows platforms--Microsoft's "Halloween files"
|
|
|
|
 |
|
|
General News Suggestion Question Bug Answer Joke Rant Admin
|
A detailed look at the evolution of a project from concept to product. (This is the first installment of what should be several more articles.)
| Type | Article |
| Licence | |
| First Posted | 10 Jun 2003 |
| Views | 250,455 |
| Bookmarked | 361 times |
|
|