Adam Carr wrote:
Good Morning:

I am very new to Python but I am enjoying the learning process. I have a question about the application of Python to a problem at the industrial business where I work. My two main questions are:

1. Can Python be used to achieve the goals of the possible project?

Yes.


2. Where are the best places to look (books, blogs, websites, etc.) for programming examples or modules that would help me begin to assemble and test some code?

Do you know Python? If not, start with a tutorial or three. Google is your friend: google for "python tutorial" or "learn Python". Don't just read them, do them.

Don't start with code. Start with a list of Functional Requirements. FRs should be technology independent, and preferably written for non-tech people. In other words:

BAD:
The training notes are opened in Powerpoint using a remote procedure call.

GOOD:
The training notes are shown to the user by the system.


You already have the skeleton of an FR, your text below. Don't think the FR needs to be a huge, technical, ISO-standard document. A single page may be enough. You're just trying to identify the target you are aiming for, so you can tell whether or not you've hit it.

Requirements includes things like:

- How scalable does this need to be? Do we have 10 users, or 10 million?
- Do we have to service remote users over the Internet?
- What sort of security is needed? Do you need fear staff cheating?

Don't be afraid to postpone functionality for the next version. You don't need all the bells and whistles from day one. In fact, I recommend that you start with the simplest application you possibly can do, and add extra features afterwards. Release early, release often.

Get the Powers That Be to approve the FRs. Make sure that everyone (especially you!) understands that no changes will be accepted to functionality without it being put in writing. Now you have a stable target, rather than a moving one.

Now write a technical design document: this is where you choose the technologies used. This is the point you start thinking about:

- Do we need a database? Which one? SQLite? Postgres? Oracle?
- A web app or a desktop app?
- Which web framework, or GUI toolkit?
- Do you have a server that can run this web app?
- Do you need a server-class machine, or can it run off a cheap PC?

Again, this may be quite short, although probably a bit longer than the FR. Don't think that you *need* to answer every question up front, although it is best if you can. Especially for small projects, you can leave gaps to be filled in later. But the gaps will guide you, by showing you what you need to learn before you can even start writing code.

E.g. if you decide you need a web application, but you have no idea which web framework to use, you now know that you need to spend some time investigating frameworks. CherryPy, Django, Zope, Pylons...

http://wiki.python.org/moin/WebFrameworks

Once you know what sort of code you need to write, then you can start writing code.

More comments below:


[...]
2. A confirmation is generated showing the employee name and other minor details, accessed from a simple list, to be sure the identity number and the person are correctly matched. This requires employee acknowledgment.

You state that the employee name and details are "accessed from a simple list"? That's a technical design choice, not a requirement of the program. Perhaps it would be better to come from a database, or a Python dict, or an INI file. Who knows?

The requirement is that the employee must acknowledge that he or she is who the system thinks he or she is based on the ID number. Everything else is design.


3. The employee freely selects a training subject from a list.

I would put it as, "freely selects a training subject from a menu of available subjects". This could be implemented as a list box GUI widget, or a set of checkboxes, or a set of push buttons, or by typing the name of the subject... the user interface is a design choice, and should be kept separate from the requirement that the employee somehow choose a subject.

You should see the pattern now... keep design *choices* separate from functional *requirements*.

Nothing you have stated seems impossible for Python. Far from it, I would think that Python is a good choice for this project.


[...]
I would like to see a program that can be deployed as originally intended, on individual PCs, that can be more easily maintained and modified than the behemoth Access program we now have. We are running a Windows network with most production floor PCs using the latest version of XP and most individual desktops and laptops using Windows 7. I have the blessing of our network gods to pursue an open source solution because the options for this kind of program, which is tailored to individual locations, are few. The best approach the network folks suggested was a Lotus Notes database, which would work great I'm sure but the development cost is very, very high and each of the company's many manufacturing locations would require a slightly different version of the database.

Do your staff have access to a web browser? Will your network sys admins allow you to put a PC on the intranet running a web server (possibly on a different port)?

If the answers to this are both Yes, I would recommend you use a web-based solution, using CherryPy as a lightweight webserver, Sqlite as the database, and only OpenOffice and a browser on the desktops.

But of course my recommendation is meaningless, because I don't have your functional requirements! I might as well guess that you need a distributed application spread over thirty countries, capable of servicing tens of millions of users at once, with nine-nines uptime...

*wink*

Good luck, and enjoy!


--
Steven
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to