a B5h^WAE&9F9,@*j֤͐n(%ȹօM:y]Xښe _4AR[K[Z u8Hj k.`i]k!'\ *^lR[cD ܰ*$SF2 &2 kdB' xd6N9sM  V#:6 !% x'Q9@%A $^F Wiԁ;"@ %(c $  5aj^Wh&F9,@`b`LV$gzGeVx^n`````PLFU$ w  !h^Wl키&,F9@*fd(%:ȿ]My X%f!`u@):$5a b5h^Wa삤&F9,@*n͐ćj(%HN:y]= Xښu _4AR[K[S[ 5 AD*!So\qHq zwG<='TP)YX@NAjYe8eqB*  `|IN 2: cNN6="$KyNa39,@`*ք%(:hy]EL ښTX ܀o2Y9F3>ax{ afLLy] @ݴ5!85a ʹW1h^&9,@CerX>&Hu -"@ od%($(. x@eмnmBI< _##kiWfvkB&|мm̫I,mMXnrU -InQKu޺ @$5a 5` ppp^jdvӒ&|мmI,mMXorU!- QKu⺊@$5){a r5h^WeD&,F9@*ri(%m1M0`Syb=r:Cy俜I2F&`q$ '~D)Y;tfDq XE*@>'pf)Q\poBqT_&A\ #$3<ܶB9/A1l`CpB$!vpVXT&rCg G ~@ 0a&m #C ifQKzQF|`fe@b*d%(:Hy]L ښXޫ _4R[RAK[ [4u w.Hj`ik{k|&ImmM,rX|oU؄ש-I.!KPQu@=$5q 5ab^Wh&F9,@Ϸ*rև%H(`CМu_#=At{* ;?d HnIL'00DpsG >Y%.HxN8AcS Z!,MGHIY֨ˈxk#!v - `R\hVa j< -h^키8%H7mMorXUĄ - :QK{Y-ې(`C&-;89UȄש-= KQu@$5 5a/ r00f0CtWUЄ!-I QKPu@A+:$5a 5h^Wa&*F9,@*n͐$(%H!N:y]Xښ5 _4AR[K[?\ 440 !:_,`S2 E/bfd.>j\ >KO8vqR1#>dqBY#prRDU8N|#" 9AO#6 zD$@<'lt)QT4Np"\$KDz'( VJY%g <y] ښXm䫈 _4R[CK[ \2u .Hj`ikk|b&ImmM,rXXrUЄש-In KKQu@;>$5 5a^Wah&TF9,@=*nhև%)(N:y]Xښ_- 4AR[[ѺK \9015. n@TeRC@@kkHPV;`D E{ 2?d(_"`r= "9@z}N]CMM|א7Nv .&3jZPEW-@LV 7$MK]zgM. )T'>rg DX%Q b@+$[`PI/pV S$Ɋ{L)>U [&CH%H XQ֐0/00000000}"w7H́1W`![```Hh%O cbZ& {%`!! I(ia` a`oW`q x1< 4m0&OB@B{D>­ kR!?0x0@o<^'E)3- X00dQ%s`h^WAE&9F9,@*j֤͐n(%ȹօM:y]Xښe _4AR[K[Z u8Hj k.`i]k!'\ *^lR[cD ܰ*$SF2 &2 kdB' xd6N9sM  V#:6 !% x'Q9@%A $^F Wiԁ;"@ %(c $  5aj^Wh&F9,@`b`LV$gzGeVx^n`````PLFU$ w  !h^Wl키&,F9@*fd(%:ȿ]My X%f!`u@):$5a b5h^Wa삤&F9,@*n͐ćj(%HN:y]= Xښu _4AR[K[S[ 5 AD*!So\qHq zwG<='TP)YX@NAjYe8eqB*  `|IN 2: cNN6="$KyNa39,@`*ք%(:hy]EL ښTX ܀o2Y9F3>ax{ afLLy] @ݴ5!85a ʹW1h^&9,@CerX>&Hu -"@ od%($(. x@eмnmBI< _##kiWfvkB&|мm̫I,mMXnrU -InQKu޺ @$5a 5` ppp^jdvӒ&|мmI,mMXorU!- QKu⺊@$5){a r5h^WeD&,F9@*ri(%m1M0`Syb=r:Cy俜I2F&`q$ '~D)Y;tfDq XE*@>'pf)Q\poBqT_&A\ #$3<ܶB9/A1l`CpB$!vpVXT&rCg G ~@ 0a&m #C ifQKzQF|`fe@b*d%(:Hy]L ښXޫ _4R[RAK[ [4u w.Hj`ik{k|&ImmM,rX|oU؄ש-I.!KPQu@=$5q 5ab^Wh&F9,@Ϸ*rև%H(`CМu_#=At{* ;?d HnIL'00DpsG >Y%.HxN8AcS Z!,MGHIY֨ˈxk#!v - `R\hVa j< -h^키8%H7mMorXUĄ - :QK{Y-ې(`C&-;89UȄש-= KQu@$5 5a/ r00f0CtWUЄ!-I QKPu@A+:$5a 5h^Wa&*F9,@*n͐$(%H!N:y]Xښ5 _4AR[K[?\ 440 !:_,`S2 E/bfd.>j\ >KO8vqR1#>dqBY#prRDU8N|#" 9AO#6 zD$@<'lt)QT4Np"\$KDz'( VJY%g <y] ښXm䫈 _4R[CK[ \2u .Hj`ikk|b&ImmM,rXXrUЄש-In KKQu@;>$5 5a^Wah&TF9,@=*nhև%)(N:y]Xښ_- 4AR[[ѺK \9015. n@TeRC@@kkHPV;`D E{ 2?d(_"`r= "9@z}N]CMM|א7Nv .&3jZPEW-@LV 7$MK]zgM. )T'>rg DX%Q b@+$[`PI/pV S$Ɋ{L)>U [&CH%H XQ֐0/00000000}"w7H́1W`![```Hh%O cbZ& {%`!! I(ia` a`oW`q x1< 4m0&OB@B{D>­ kR!?0x0@o<^'E)3- X00dQ%s`. x@eмnmBI< _##kiWfvkB&|мm̫I,mMXnrU -InQKu޺ @$5a 5` ppp^jdvӒ&|мmI,mMXorU!- QKu⺊@$5){a r5h^WeD&,F9@*ri(%m1M0`Syb=r:Cy俜I2F&`q$ '~D)Y;tfDq XE*@>'pf)Q\poBqT_&A\ #$3<ܶB9/A1l`CpB$!vpVXT&rCg G ~@ 0a&m #C ifQKzQF|`fe@b*d%(:Hy]L ښXޫ _4R[RAK[ [4u w.Hj`ik{k|&ImmM,rX|oU؄ש-I.!KPQu@=$5q 5ab^Wh&F9,@Ϸ*rև%H(`CМu_#=At{* ;?d HnIL'00DpsG >Y%.HxN8AcS Z!,MGHIY֨ˈxk#!v - `R\hVa j< -h^키8%H7mMorXUĄ - :QK{Y-ې(`C&-;89UȄש-= KQu@$5 5a/ r00f0CtWUЄ!-I QKPu@A+:$5a 5h^Wa&*F9,@*n͐$(%H!N:y]Xښ5 _4AR[K[?\ 440 !:_,`S2 E/bfd.>j\ >KO8vqR1#>dqBY#prRDU8N|#" 9AO#6 zD$@<'lt)QT4Np"\$KDz'( VJY%g <y] ښXm䫈 _4R[CK[ \2u .Hj`ikk|b&ImmM,rXXrUЄש-In KKQu@;>$5 5a^Wah&TF9,@=*nhև%)(N:y]Xښ_- 4AR[[ѺK \9015. n@TeRC@@kkHPV;`D E{ 2?d(_"`r= "9@z}N]CMM|א7Nv .&3jZPEW-@LV 7$MK]zgM. )T'>rg DX%Q b@+$[`PI/pV S$Ɋ{L)>U [&CH%H XQ֐0/00000000}"w7H́1W`![```Hh%O cbZ& {%`!! I(ia` a`oW`q x1< 4m0&OB@B{D>­ kR!?0x0@o<^'E)3- X00dQ%s`, DAVH J'4Ev{[[rX@Lv/@$@H F9,fߝ@LfX<$+C\y 2"@( &+pY @+$G7[iɅkG hXKD&0>dD  M(>H{%Lb@MjH| ]z {/&@JdeCY2Eh2_@/ @iH{r!@șE Ry 2"@͓m nl|-5$cp~PIkt<_@aQ$^h@hj<xԐ 9ҖPCY~b@mfB|7L H #'c!v/PN ``2`a { +"F|nJ |}VP0_0`0@K?ڷ䇡q;dE&>D}&nX0Ә]CS _ Q,! `;!2&e7&&Xo@6n PZ&+ۖ${rQ```6`DN~dEr30~=kE^@@$V?Cڲ@$-dyY#0[ Փi o w* ۵( M HyЖ˲ @#e""t >dz LFd>%](? P? e0rX@LV$ 5(H'An16-|/ WOyHx?@g7$b)lJ K3(|^``țaH:^yx"jK4E6M0-[ !e'A%z$m(k@$5] 𓟱|E v FM^yjt Y}e0g/ .e2R!0X r`r= "9@z}N]CMM|א7Nv .&3jZPEW-@LV 7$MK]zgM. )T'>rg DX%Q b@+$[`PI/pV S$Ɋ{L)>U [&CH%H XQ֐0/00000000}"w7H́1W`![```Hh%O cbZ& {%`!! I(ia` a`oW`q x1< 4m0&OB@B{D>­ kR!?0x0@o<^'E)3- X00dQ%s`, DAVH J'4Ev{[[rX@Lv/@$@H F9,fߝ@LfX<$+C\y 2"@( &+pY @+$G7[iɅkG hXKD&0>dD  M(>H{%Lb@MjH| ]z {/&@JdeCY2Eh2_@/ @iH{r!@șE Ry 2"@͓m nl|-5$cp~PIkt<_@aQ$^h@hj<xԐ 9ҖPCY~b@mfB|7L H #'c!v/PN ``2`a { +"F|nJ |}VP0_0`0@K?ڷ䇡q;dE&>D}&nX0Ә]CS _ Q,! `;!2&e7&&Xo@6n PZ&+ۖ${rQ```6`DN~dEr30~=kE^@@$V?Cڲ@$-dyY#0[ Փi o w* ۵( M HyЖ˲ @#e""t >dz LFd>%](? P? e0rX@LV$ 5(H'An16-|/ WOyHx?@g7$b)lJ K3(|^``țaH:^yx"jK4E6M0-[ !e'A%z$m(k@$5] 𓟱|E v FM^yjt Y}e0g/ .e2R!0X rLz ?W2 wxH!_࿗؝x鷂1`````#/Ƞ|>>>-``ໝ=``@~";@p7$mt /& $2pSatN`) Oz f Z&39Vcf?2&)HBc!y+L>@"ɊW%5$ tu &T} errh!@2$y(誼K`yO@K@#'e%|DaV$ iVHY۽@&Z63FvlµL$(,NNa[@%?a[`Z]۰yɅrl q>z @$- 4 @$f p/g83Z&$z 5P0-v9ZHMNdGr B{x Ds@!%(1@ɎM| Ê5\ { tRk;00;0000H6;MBn LH@V (8x- eC+@F@t%˶,>0HZ>Vp? ``YC%QHΏG[ {/b4&|6>D8`axHN@ cwrX VgHS&נH5$jC7X @%kZ aL|Ɋ[ڤpH#( 4yЇ%k$VH[Z {C;@e 6+_``X3? *ca`| ~c$-Z&8'5$(hN@C *1D!'<_d"+ہ-``(0@06[% g fp % FVt | CDiOS+ `B000( Mm?v0000%sC Mdo a.y"Zc`  GN`)(;7!```ٌ``"5ZBU00u0000ޛ00 ,It00W0000f0>f_ 2YG0u70 pH TId&>D9@ C.M׾`1 v/`(|L4, / c`hәiɈM$`@ K`` $֫@LFc`(? xr# x`p>% w4'bo VwEAsk4'%H XQ֐0/00000000}"w7H́1W`![```Hh%O cbZ& {%`!! I(ia` a`oW`q x1< 4m0&OB@B{D>­ kR!?0x0@o<^'E)3- X00dQ%s`, DAVH J'4Ev{[[rX@Lv/@$@H F9,fߝ@LfX<$+C\y 2"@( &+pY @+$G7[iɅkG hXKD&0>dD  M(>H{%Lb@MjH| ]z {/&@JdeCY2Eh2_@/ @iH{r!@șE Ry 2"@͓m nl|-5$cp~PIkt<_@aQ$^h@hj<xԐ 9ҖPCY~b@mfB|7L H #'c!v/PN ``2`a { +"F|nJ |}VP0_0`0@K?ڷ䇡q;dE&>D}&nX0Ә]CS _ Q,! `;!2&e7&&Xo@6n PZ&+ۖ${rQ```6`DN~dEr30~=kE^@@$V?Cڲ@$-dyY#0[ Փi o w* ۵( M HyЖ˲ @#e""t >dz LFd>%](? P? e0rX@LV$ 5(H'An16-|/ WOyHx?@g7$b)lJ K3(|^``țaH:^yx"jK4E6M0-[ !e'A%z$m(k@$5] 𓟱|E v FM^yjt Y}e0g/ .e2R!0X rLz ?W2 wxH!_࿗؝x鷂1`````#/Ƞ|>>>-``ໝ=``@~";@p7$mt /& $2pSatN`) Oz f Z&39Vcf?2&)HBc!y+L>@"ɊW%5$ tu &T} errh!@2$y(誼K`yO@K@#'e%|DaV$ iVHY۽@&Z63FvlµL$(,NNa[@%?a[`Z]۰yɅrl q>z @$- 4 @$f p/g83Z&$z 5P0-v9ZHMNdGr B{x Ds@!%(1@ɎM| Ê5\ { tRk;00;0000H6;MBn LH@V (8x- eC+@F@t%˶,>0HZ>Vp? ``YC%QHΏG[ {/b4&|6>D8`axHN@ cwrX VgHS&נH5$jC7X @%kZ aL|Ɋ[ڤpH#( 4yЇ%k$VH[Z {C;@e 6+_``X3? *ca`| ~c$-Z&8'5$(hN@C *1D!'<_d"+ہ-``(0@06[% g fp % FVt | CDiOS+ `B000( Mm?v0000%sC Mdo a.y"Zc`  GN`)(;7!```ٌ``"5ZBU00u0000ޛ00 ,It00W0000f0>f_ 2YG0u70 pH TId&>D9@ C.M׾`1 v/`(|L4, / c`hәiɈM$`@ K`` $֫@LFc`(? xr# x`p>% w4'bo VwEAsk4' T!2e!([4a`K01 Z#1PZ&M``0 1000%`&P3ҖCx.@/```H`H~Ƣ൛6`S$&haЍXz\a B7(h LF$W@@g +\@`$&e!!" >
#1: Security. We're talking about entering some very private information into a database here; not only are we talking about requests for charity, but personal data like social security numbers will be a likely requirement. Right now, the list of people to whom this information is available consists of: (a) the pastor, and (b) the deacons, and the file is kept locked in the pastor's office. So, while the ideal design would be a distributed one, keeping an online database behind a firewall and accessing it through a web service, I don't feel like I can guarantee the necessary security; even if I could talk all the users into keeping a nice strong password. So, for the initial pass, the data will be kept in local files on the computer. Presumably, when it is actually deployed, it will run on a single password-protected computer. I have some thoughts about using Windows Users and Groups to handle Role issues.

#2: Integrity. An important requirement for a church, huh? But specifically, I mean that the data shouldn't be corrupted; or at a minimum, regular backups should be arranged. The target audience for this project is a small church, and it's a pretty good bet that they won't be doing nightly tape backups of their systems. So at a minimum, regular backups should be done like Microsoft Word does, every minute or so; but ideally there would be a way to automatically back up to a different machine.

#3. Updatability. This is an agile requirement, really. I want to make the software very easy to update so that users will be encouraged to use the latest software at all times. This is a huge benefit for software developers. There's nothing worse than trying to figure out an issue based on a user who's running code from two releases, three service packs, and a hotfix ago. If people come to me for support, my first question will be, "Are you running the latest code? No? Update, and call me back if it's still happening."

Another agile requirement is that you avoid overdesigning the aplication. So, it's past time to write some code. One concept that really appeals to me is "Release 0". That's where you get an application out there that doesn't do anything at all except know how to update itself. Let's see if we can do that next.

|