On 10/03/13 07:59, Rick T wrote:
The code below (server addresses Xed out for security) has been used on my 
website for years, but it does seem to misbehave on rare occasions, so I have a 
few questions on how I might improve it.
<snip>

The problem is that you have a program, but what you really want is programming systems product [1, pp. 4-6]. You posted your program, but where is the requirements specification? Design specification? Programmer/ API/ ABI documentation? User documentation? System administrator documentation? Test/ verification/ validation system, documentation, and history? Configuration management/ build/ release system, documentation, and history? Support/ issue tracking system, documentation, and history? Etc..


Brooks estimates that creating a programming product requires three times the effort required to create a program. A programming system also requires three times the effort. A programming systems product requires three times three, or nine, times the effort. All four approaches produce different, and unequal, solutions (and programs).


Stated another way, the program is only 11% of a complete programming systems product. But, people expect the quality realized by the other 89%.


For personal programming projects, it's very hard to get off the bottom levels of CMM [2]/ CMMI [3]. Few programmers (myself included) have the knowledge, skills, or disposition required for the other 89%, This is where the "three great virtues of a programmer" [4, p. xxvii] will get you into trouble. Perl and Verilog have convinced me of the value of test-driven development, and Test::* make it easy. Perl gives me POD, so I do some documentation (API/ABI at the least). I figured out how to convert PNG diagrams into HTML for documentation. I use VirtualBox for isolation and staging. Everything is in CVS. Everything is backed up/ archived daily, weekly, monthly, etc.. It's a struggle -- both doing the work and forcing myself to do the work.


If you don't know how to put Perl code into reusable modules and write test scripts, those are the next skills you should gain. See [5].


If you are set on computerized examinations for your students and computerized result handling for yourself, there are several choices:

1. Fix N bugs in your program and continue as before. [4] and this list can help.

2. Do all or part of the other 89%, fixing M bugs along the way. [1], [4], [5], this list, and other lists can help.

3.  Hire a service that claims to have already built the 100% solution.

Consider the consequences of a failure at each point of the system, especially who it affects. I would not expect students to react well when "the" computer jeopardizes their ability to take an exam or to have their exam scored correctly. If your script (baby) pukes on you, well isn't that cute?! ;-)


Also consider a mixed approach:

1.  Old-fashioned paper and pencil quizzes, tests, homework, etc..

2.  Computerized result handling.

The first doesn't have the convenience of "anyone can take a test anytime, any place and the results are e-mailed to me". But, it also doesn't have the cheating potential of "anyone can take a test anytime, any place and the results are e-mailed to me". It's also simpler, more reliable, and more durable, for a lot less effort. The second allows you to scratch your programming itch (a spreadsheet could suffice).


HTH,

David


References:

[1] Frederick P. Brooks, Jr., 1995, "The Mythical Man-Month, Essays on Software Engineering", anniversary e., Addison-Wesley, ISBN 0201835959.

[2] Wikipedia, "Capability Maturity Model", http://en.wikipedia.org/wiki/Capability_Maturity_Model .

[3] Wikipedia, "Capability Maturity Model Integration", http://en.wikipedia.org/wiki/Capability_Maturity_Model_Integration .

[4] Tom Christiansen, brian d foy, and Larry Wall, 2012, "Programming Perl" 4 e., O'Reilly Media, ISBN 9780596004927.

[5] Randal L. Schwarz, brian d foy, and Tom Phoenix, 2006, "Intermediate Perl", 2 e., O'Reilly Media, ISBN 9780596102067.

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to