એકમ 2 / 12

જરૂરીયાતો વિશ્લેષણ અને સોફ્ટવેર ડિઝાઇન

નફો:

  • AI સપોર્ટ સાથે અસ્પષ્ટ બિઝનેસ વિનંતીઓને સ્પષ્ટ, ટેસ્ટેબલ સૉફ્ટવેર આવશ્યકતાઓ અને વપરાશકર્તા વાર્તાઓમાં પરિવર્તિત કરવાની ક્ષમતા
  • AI સાથે સંરચિત રીતે સિસ્ટમ ડિઝાઇન, ડેટા મોડેલ અને આર્કિટેક્ચરલ નિર્ણયોના ગુણદોષની તુલના કરવાની ક્ષમતા
  • જરૂરિયાતો, માપનીયતા અને અવરોધો સામે AI ની સૂચિત ડિઝાઇનને વિવેચનાત્મક રીતે માન્ય કરવાની ક્ષમતા

મોટાભાગના સોફ્ટવેર પ્રોજેક્ટ ખરાબ કોડને કારણે નહીં, પરંતુ ગેરસમજની જરૂરિયાતોને કારણે નિષ્ફળ જાય છે. "વપરાશકર્તાઓને રિપોર્ટ ડાઉનલોડ કરવા દો" જેવી એક-વાક્યની વિનંતી ડઝનેક અનુત્તરિત પ્રશ્નો પાછળ છોડી જાય છે: કયા ફોર્મેટમાં? ચાર્જ કોણ છે? કેટલા રેકોર્ડ? જો તે ધીમું હોય તો શું? આવશ્યકતાઓનું વિશ્લેષણ (વ્યવસાયની વિનંતીનું સ્પષ્ટ, પરીક્ષણ યોગ્ય તકનીકી જરૂરિયાતોમાં ભાષાંતર કરવું) અને સૉફ્ટવેર ડિઝાઇન (આ જરૂરિયાતોને પહોંચી વળવા માટે કાગળ પર માળખું બનાવવું) એ એવો તબક્કો છે જ્યાં કોડ લખતા પહેલા સૌથી ખર્ચાળ ભૂલોને અટકાવવામાં આવે છે. આ એકમમાં, અમે આ તબક્કે AI નો ઉપયોગ "થોટ પાર્ટનર" તરીકે કરવાનું શીખીશું: એક ભાગીદાર જે અનિશ્ચિતતાને અસ્પષ્ટ બનાવે છે, વિકલ્પોને અલગ પાડે છે, પરંતુ અંતિમ નિર્ણય તમારા પર છોડી દે છે.

AI અહીં બે મોટા મૂલ્યો ઉત્પન્ન કરે છે. પ્રથમ, તે પ્રશ્નો પૂછે છે જે તમે છોડો છો; તે વિનંતીમાં છુપાયેલા ધારણાઓ અને કિસ્સાઓને સપાટી પર લાવે છે. બીજું, તે ડિઝાઇન નિર્ણયના ગુણદોષને ઝડપથી ટેબ્યુલેટ કરે છે. પરંતુ તે ખતરો છે: AI તમારા સંદર્ભ (બજેટ, ટીમ, વર્તમાન સિસ્ટમ, કાનૂની અવરોધ)ને સંપૂર્ણપણે જાણ્યા વિના "શ્રેષ્ઠ અભ્યાસ" તરીકે સામાન્ય ભલામણો આપશે. તમારા પોતાના સત્ય સામે આ સલાહને ફિલ્ટર કરવાનું તમારું કામ છે.

વિભાવનાઓ: વપરાશકર્તા વાર્તા: "... જેમ, હું સક્ષમ બનવા માંગુ છું... કારણ કે..." ના સ્વરૂપમાં જરૂરિયાત વ્યક્ત કરતું ટૂંકું વાક્ય. સ્વીકૃતિ માપદંડ: ટેસ્ટેબલ શરતો કે જે નોકરી માટે "પૂર્ણ" ગણવામાં આવે તે માટે પૂરી થવી જોઈએ. બિન-કાર્યકારી આવશ્યકતાઓ: "તે શું કરશે" ને બદલે "તે કેવી રીતે વર્તશે" સંબંધિત આવશ્યકતાઓ, જેમ કે ઝડપ, સુરક્ષા, માપનીયતા.

અસ્પષ્ટ વિનંતીથી ટેસ્ટેબલ જરૂરિયાત સુધી

સારી જરૂરિયાત માપી શકાય તેવી અને ચકાસી શકાય તેવી છે. "સિસ્ટમને ઝડપી થવા દો" નહીં, પરંતુ "શોધ પરિણામો 500 ms ની અંદર આવવા દો". અનિશ્ચિતતાને ઘટાડવા માટે AI નો ઉપયોગ કરવાની એક પગલું-દર-પગલાની રીત અહીં છે:

  1. વિનંતી જેમ છે તેમ આપો અને પ્રશ્ન જનરેટ કરો. એઆઈને ઉકેલ માટે નહીં, પરંતુ પહેલા "આ વિનંતીમાં અસ્પષ્ટ કંઈપણ પ્રશ્ન તરીકે સૂચિબદ્ધ કરવા માટે પૂછો."
  2. તમે જવાબો આપો. ફક્ત તમે જ સંદર્ભ જાણો છો; તમારા વાસ્તવિક વ્યવસાય અવરોધો સાથે AI ના પ્રશ્નોના જવાબ આપો.
  3. તેને વપરાશકર્તા વાર્તાઓ અને સ્વીકૃતિ માપદંડોમાં અનુવાદિત કરો. સ્પષ્ટ કરેલ જરૂરિયાતને ટેસ્ટેબલ વસ્તુઓમાં અનુવાદિત કરો.
  4. ધાર કેસો અને નકારાત્મક દૃશ્યો ઉમેરો. "ખાલી પરિણામ", "અનધિકૃત વપરાશકર્તા", "ખૂબ મોટી ફાઇલ" વગેરે.

અસ્પષ્ટતા નિષ્કર્ષણ પ્રોમ્પ્ટ: "અમે નીચેની વ્યવસાય વિનંતીને સૉફ્ટવેર આવશ્યકતામાં અનુવાદિત કરીશું. હજી સુધી કોઈ ઉકેલનો પ્રસ્તાવ મૂકશો નહીં. પ્રથમ, પ્રશ્નોની સૂચિ તરીકે આ વિનંતીમાં જવાબ આપવામાં આવ્યો નથી તે તમામ અસ્પષ્ટતાઓ અને છુપાયેલા ધારણાઓને બહાર કાઢો. નીચેના શીર્ષકો હેઠળ પ્રશ્નોનું જૂથ બનાવો: અવકાશ, વપરાશકર્તા/ઓથોરિટી, ડેટા વોલ્યુમ, પ્રદર્શન, ભૂલ ઓર્ડરની શરતો, સુરક્ષા તરીકે.

વપરાશકર્તા વાર્તા + સ્વીકૃતિ માપદંડ પ્રોમ્પ્ટ: "નીચેની સ્પષ્ટતાની જરૂરિયાતને વપરાશકર્તા વાર્તાઓમાં વિભાજીત કરો જે INVEST સિદ્ધાંતોનું પાલન કરે છે. દરેક વાર્તા માટે 3-5 પરીક્ષણ યોગ્ય સ્વીકૃતિ માપદંડ લખો (જ્યારે આપેલ-પછીના ફોર્મેટમાં). ઓછામાં ઓછા 2 નકારાત્મક દૃશ્યો ઉમેરો (અનધિકૃત ઍક્સેસ, ખાલી ડેટા). જરૂર છે: [અહીં લખવાની જરૂર છે]"

AI સાથે ડિઝાઇન નિર્ણયોની સરખામણી

ડિઝાઇન એ સતત ટ્રેડ-ઓફ છે: ઝડપ વિરુદ્ધ લવચીકતા, સરળતા વિરુદ્ધ માપનીયતા? AI આ ટ્રેડ-ઓફને ઝડપી સ્પ્રેડશીટમાં મૂકે છે. ઉદાહરણ તરીકે, "સૂચના મોકલો" સુવિધા માટે, તમે ચર્ચા કરી શકો છો કે સિંક્રનસ (વિનંતી પર મોકલો) અથવા અસુમેળ (કતાર, પૃષ્ઠભૂમિમાં મોકલો) અભિગમનો ઉપયોગ કરવો કે કેમ.

ડિઝાઇન સરખામણી પ્રોમ્પ્ટ: "હું 'વપરાશકર્તાને ઇમેઇલ સૂચના મોકલો' સુવિધા ડિઝાઇન કરી રહ્યો છું. બે અભિગમોની તુલના કરો: (A) HTTP વિનંતી દરમિયાન સિંક્રનસ ડિલિવરી, (B) સંદેશ કતારમાં મૂકીને પૃષ્ઠભૂમિમાં અસુમેળ ડિલિવરી. નીચેના અક્ષો પર એક ટેબલ બનાવો: વપરાશકર્તા પ્રતીક્ષા સમય, ખામી સહનશીલતા, જટિલતા, જટિલતા, ઇન્ફ્રાસ્ટ્રક્ચર ડિલિવરી. અંતે હું કયો પસંદ કરીશ, તે મારા માટે નિર્ણય લેશો નહીં."

ધરી

સિંક્રનસ ટ્રાન્સમિશન

અસુમેળ (કતાર)

વપરાશકર્તા રાહ સમય

લાંબુ (શિપમેન્ટ માટે રાહ જોઈ રહ્યું છે)

ટૂંકો (તત્કાલ પરત)

દોષ સહનશીલતા

નિમ્ન (જો મોકલો વિસ્ફોટ થાય તો વિનંતી વિસ્ફોટ થાય છે)

ઉચ્ચ (ફરી પ્રયાસ શક્ય છે)

જટિલતા

નીચું

મધ્યમ-ઉચ્ચ (કતાર ઈન્ફ્રાસ્ટ્રક્ચર)

ઈન્ફ્રાસ્ટ્રક્ચર ખર્ચ

નીચું

વધારાના ઘટકો જરૂરી છે

જ્યાં તે બંધબેસે છે

ઓછી વોલ્યુમ, સરળ એપ્લિકેશન

ઉચ્ચ વોલ્યુમ, જટિલ ડિલિવરી

ટીપ: AI ને કહેવું "મારા માટે નિર્ણય ન લો, ફક્ત મને વિકલ્પો અને શરતો બતાવો" તમને વિચારવા દબાણ કરે છે અને સૂચનને આંખ આડા કાન કરવાનું જોખમ ઘટાડે છે. શ્રેષ્ઠ ડિઝાઇન નિર્ણય એ વ્યક્તિ દ્વારા લેવામાં આવે છે જે તમારા સંદર્ભ (તમે) જાણે છે.

નબળા પ્રોમ્પ્ટ / મજબૂત પ્રોમ્પ્ટ

નબળા: "ઓર્ડર સિસ્ટમ માટે ડેટાબેઝ ડિઝાઇન કરો." (પરિણામ: કયો સ્કેલ, કયા સંબંધો, કયા અવરોધો સ્પષ્ટ નથી; એક સામાન્ય, અવાસ્તવિક યોજના.) સ્ટ્રોંગ: "નાના ઈ-કોમર્સ માટે ડ્રાફ્ટ ડેટા મોડલ સૂચવો. એન્ટિટી: ગ્રાહક, ઓર્ડર, ઉત્પાદન, ઓર્ડર આઇટમ. મર્યાદાઓ: ઓર્ડરમાં ઘણા ઉત્પાદનો હોઈ શકે છે; ઉત્પાદનની કિંમત સમય જતાં બદલાઈ શકે છે, પરંતુ વર્તમાન ક્રમમાં વર્તમાન 50 દિવસના ઓર્ડરની કિંમત ~0 ની પૂર્વવર્તી હોવી જોઈએ. અપેક્ષિત સંબંધો અને તે શા માટે "તમે નિર્ણય લીધો છે તે સમજાવો. તમે કિંમત ઇતિહાસની સમસ્યાને કેવી રીતે હલ કરી તે સ્પષ્ટ કરો. તેને એન્ટિટી અને ફીલ્ડની યાદી તરીકે આપો, કોડ નહીં."

શક્તિશાળી પ્રોમ્પ્ટનો તફાવત; સ્કેલ (દિવસ દીઠ 500 ઓર્ડર), વ્યવસાય નિયમ (ભૂતકાળની કિંમત જાળવવી આવશ્યક છે) અને ઇચ્છિત આઉટપુટ ફોર્મેટ. "ભૂતકાળની કિંમત જાળવી રાખવી જોઈએ" જેવું એક વાક્ય સંપૂર્ણપણે ડિઝાઇનને બદલી નાખે છે; જો તમે આનો ઉલ્લેખ કરશો નહીં, તો AI એક અચોક્કસ પરંતુ બુદ્ધિગમ્ય દેખાતો આકૃતિ બનાવશે.

મીની કેસો

કેસ 1 - છુપાયેલ ધારણા. એક ટીમ "વપરાશકર્તા પ્રોફાઇલ ફોટો અપલોડ કરી શકે છે" વિનંતીને સીધો કોડ કરે છે. અન્ય ટીમે એઆઈને અનિશ્ચિતતા વિશે પૂછ્યું: "મહત્તમ કદ? માન્ય ફોર્મેટ્સ? અયોગ્ય સામગ્રી નિયંત્રણ? જૂનો ફોટો કાઢી નાખો?" તે 8 જેવા પ્રશ્નો પેદા કરે છે. જ્યારે 20 MB ફાઇલો સર્વર ભરે છે ત્યારે પ્રથમ ટીમ ઉત્પાદનમાં સમસ્યા વિશે શીખે છે; બીજી ટીમ તેને ડિઝાઇનમાં ઉકેલે છે.

કેસ 2 — ખોટો સ્કેલ ધારણા. AI રિપોર્ટિંગ સુવિધા માટે જટિલ કેશીંગ લેયરની દરખાસ્ત કરે છે. જ્યારે એન્જિનિયર નિર્દેશ કરે છે કે વાસ્તવિક ડેટા દરરોજ માત્ર 30 રિપોર્ટ્સ છે, ત્યારે AI સૂચનને સરળ બનાવે છે. સ્કેલનો ઉલ્લેખ ન કરવાથી બિનજરૂરી જટિલતાનો ખર્ચ થાય છે; સ્પષ્ટ કરવાથી બિનજરૂરી કામના 2 અઠવાડિયા બચે છે.

કેસ 3 - સ્વીકૃતિ માપદંડ ગેપ. "જો ચુકવણી નિષ્ફળ જાય તો શું થશે?" પ્રશ્ન ક્યારેય પૂછવામાં આવ્યો ન હોવાથી, અસફળ ચુકવણીના કિસ્સામાં ઓર્ડર સિસ્ટમ હજી પણ ઓર્ડરને "પુષ્ટિ" તરીકે ચિહ્નિત કરશે. AI દ્વારા જનરેટ કરાયેલ નકારાત્મક દૃશ્યોની યાદી આ ગેપને કેપ્ચર કરે છે; 1 લીટી સ્વીકૃતિ માપદંડ વાસ્તવિક નાણાંની ખોટ અટકાવે છે.

સામાન્ય ભૂલો

  • કોડ પર સીધી વિનંતી પસાર કરવી. અસ્પષ્ટતાનું નિરાકરણ થાય તે પહેલાં લખાયેલ કોડ ખોટી સમસ્યાને ઝડપથી હલ કરે છે.
  • AI ની સામાન્ય "શ્રેષ્ઠ પ્રેક્ટિસ" ને આંધળી રીતે લેવી. જો તમે તમારા સંદર્ભ (સ્કેલ, બજેટ, ટીમ) નો ઉલ્લેખ ન કરો તો ભલામણ તમારા માટે કામ કરશે નહીં.
  • બિન-કાર્યકારી જરૂરિયાતોને અવગણીને. જો ઝડપ, સુરક્ષા અને સ્કેલનો ઉલ્લેખ કરવામાં આવ્યો નથી, તો ડિઝાઇન અધૂરી રહેશે.
  • ફક્ત ખુશ દૃશ્ય વિશે વિચારી રહ્યા છીએ. નકારાત્મક દૃશ્યો જેમ કે ખાલી ડેટા, અનધિકૃત વપરાશકર્તા, ભૂલની સ્થિતિ ડિઝાઇનમાં શામેલ હોવી જોઈએ.
  • AI ને નિર્ણય સોંપી રહ્યા છીએ. AI વિકલ્પો જનરેટ કરે છે; તમે નક્કી કરો કે કયો ટ્રેડ-ઓફ તમારા વ્યવસાયને અનુકૂળ છે.

સારાંશમાં

આવશ્યકતાઓનું વિશ્લેષણ અને ડિઝાઇન એ એવો તબક્કો છે જ્યાં સસ્તી ભૂલો પકડાય છે. અહીં, AI એવા પ્રશ્નો જનરેટ કરે છે જે અનિશ્ચિતતા દર્શાવે છે, વપરાશકર્તાની વાર્તાઓ અને સ્વીકૃતિ માપદંડો અને ચાર્ટ ડિઝાઇન ટ્રેડ-ઓફને ડ્રાફ્ટ કરે છે. પરંતુ માત્ર તમે જ સંદર્ભ જાણો છો; તમારા સ્કેલ, બજેટ, ટીમ અને કાનૂની અવરોધોના આધારે AI ની ભલામણોને ફિલ્ટર કરવાનું અને અંતિમ નિર્ણય લેવાનું તમારું કામ છે. "મારા માટે નિર્ણય ન લો, મને વિકલ્પો બતાવો" ની શિસ્ત સારી ડિઝાઇન અને ઊંડું શિક્ષણ બંને તરફ દોરી જાય છે.

એપ્લિકેશન કાર્ય

તમારા સંદર્ભમાંથી એક-વાક્યની નોકરીની વિનંતી પસંદ કરો. પ્રથમ, AI પર અસ્પષ્ટતા પ્રોમ્પ્ટ લાગુ કરો અને તમારા વાસ્તવિક અવરોધો સાથે પ્રશ્નોના જવાબ આપો. પછી સ્પષ્ટતાની જરૂરિયાતને ઓછામાં ઓછી 2 વપરાશકર્તા વાર્તાઓમાં અને દરેક માટે 3 સ્વીકૃતિ માપદંડોમાં અનુવાદિત કરો; ઓછામાં ઓછું 1 નકારાત્મક દૃશ્ય શામેલ કરો. છેલ્લે, ડિઝાઇન નિર્ણય (સિંક્રનસ/અસિંક્રોનસ, ટેબલ સ્ટ્રક્ચર, વગેરે) માટે સરખામણી કોષ્ટક બનાવો અને 2 વાક્યોમાં તમારો પોતાનો નિર્ણય લખો.

ચેકલિસ્ટ

  • [ ] કોડમાં વિનંતી પસાર કરતા પહેલા મેં પ્રશ્નો તરીકેની અસ્પષ્ટતાને દૂર કરી.
  • [ ] મેં AI ને સંદર્ભ (સ્કેલ, સત્તા, કામગીરી, કાનૂની અવરોધ) આપ્યો.
  • [ ] મેં વપરાશકર્તા વાર્તાઓને ટેસ્ટેબલ સ્વીકૃતિ માપદંડમાં તોડી નાખી છે.
  • [ ] મેં ઓછામાં ઓછું એક ડાઉનસાઇડ/એજ દૃશ્ય ઉમેર્યું છે.
  • [ ] મેં ટ્રેડ-ઓફ ટેબલ સાથે ડિઝાઇન નિર્ણયનું મૂલ્યાંકન કર્યું.
  • [ ] મેં મારા સંદર્ભના આધારે અંતિમ નિર્ણય લીધો હતો, મેં તેને AI પર છોડ્યો નથી.