యూనిట్లు
1. కంప్యూటర్ ఇంజినీరింగ్‌లో ఆర్టిఫిషియల్ ఇంటెలిజెన్స్ మరియు వెరిఫికేషన్ డిసిప్లిన్ పరిచయం 2. అవసరాలు విశ్లేషణ మరియు సాఫ్ట్‌వేర్ డిజైన్ 3. AIతో కోడింగ్ మరియు పెయిర్ ప్రోగ్రామింగ్ 4. కోడ్ రివ్యూ, రీఫ్యాక్టరింగ్ మరియు టెక్నికల్ డెట్ 5. డీబగ్గింగ్ మరియు ట్రబుల్షూటింగ్ 6. టెస్ట్ ఆటోమేషన్ మరియు నాణ్యత హామీ 7. డేటా నిర్మాణాలు, అల్గోరిథంలు మరియు పనితీరు 8. డేటాబేస్, SQL మరియు డేటా మోడలింగ్ 9. API, సిస్టమ్ ఆర్కిటెక్చర్ మరియు క్లౌడ్ 10. సురక్షిత కోడ్, థ్రెట్ మోడలింగ్ మరియు దుర్బలత్వ విశ్లేషణ 11. డాక్యుమెంటేషన్, DevOps మరియు CI/CD ఆటోమేషన్ 12. సరిహద్దులు: భద్రత, గోప్యత, లైసెన్స్ మరియు నీతి
యూనిట్ 2 / 12

అవసరాలు విశ్లేషణ మరియు సాఫ్ట్‌వేర్ డిజైన్

లాభాలు:

  • AI మద్దతుతో అస్పష్టమైన వ్యాపార అభ్యర్థనలను స్పష్టమైన, పరీక్షించదగిన సాఫ్ట్‌వేర్ అవసరాలు మరియు వినియోగదారు కథనాలుగా మార్చగల సామర్థ్యం
  • AIతో నిర్మాణాత్మక పద్ధతిలో సిస్టమ్ డిజైన్, డేటా మోడల్ మరియు ఆర్కిటెక్చరల్ నిర్ణయాల యొక్క లాభాలు మరియు నష్టాలను పోల్చగల సామర్థ్యం
  • అవసరాలు, స్కేలబిలిటీ మరియు పరిమితులకు వ్యతిరేకంగా AI యొక్క ప్రతిపాదిత డిజైన్‌ను విమర్శనాత్మకంగా ధృవీకరించగల సామర్థ్యం

మెజారిటీ సాఫ్ట్‌వేర్ ప్రాజెక్ట్‌లు చెడు కోడ్ వల్ల కాదు, తప్పుగా అర్థం చేసుకున్న అవసరాల వల్ల విఫలమవుతాయి. "వినియోగదారులను డౌన్‌లోడ్ చేయనివ్వండి" వంటి ఒక వాక్య అభ్యర్థన డజన్ల కొద్దీ సమాధానం లేని ప్రశ్నలను వదిలివేస్తుంది: ఏ ఫార్మాట్‌లో? ఎవరు బాధ్యత వహిస్తారు? ఎన్ని రికార్డులు? ఇది నెమ్మదిగా ఉంటే? అవసరాల విశ్లేషణ (వ్యాపార అభ్యర్థనను స్పష్టమైన, పరీక్షించదగిన సాంకేతిక అవసరాలకు అనువదించడం) మరియు సాఫ్ట్‌వేర్ రూపకల్పన (ఈ అవసరాలకు అనుగుణంగా కాగితంపై నిర్మాణాన్ని నిర్మించడం) అనేది కోడ్ రాయడానికి ముందు అత్యంత ఖరీదైన తప్పులను నిరోధించే దశ. ఈ యూనిట్‌లో, మేము ఈ దశలో AIని “ఆలోచన భాగస్వామి”గా ఉపయోగించడం నేర్చుకుంటాము: అనిశ్చితిని నిర్వీర్యం చేసే భాగస్వామి, ఎంపికలను క్రమబద్ధీకరిస్తారు, కానీ తుది నిర్ణయాన్ని మీకే వదిలేస్తారు.

AI ఇక్కడ రెండు పెద్ద విలువలను ఉత్పత్తి చేస్తుంది. మొదట, ఇది మీరు దాటవేసే ప్రశ్నలను అడుగుతుంది; ఇది అభ్యర్థనలో ఉపరితలం దాచిన ఊహలు మరియు అంచు కేసులను తెస్తుంది. రెండవది, ఇది డిజైన్ నిర్ణయం యొక్క లాభాలు మరియు నష్టాలను త్వరగా పట్టిక చేస్తుంది. కానీ అది ప్రమాదం: AI మీ సందర్భం (బడ్జెట్, బృందం, ఇప్పటికే ఉన్న సిస్టమ్, చట్టపరమైన ప్రతిబంధకం) పూర్తిగా తెలియకుండానే "ఉత్తమ అభ్యాసం"గా సాధారణ సిఫార్సులను ఇస్తుంది. మీ స్వంత సత్యానికి వ్యతిరేకంగా ఈ సలహాను ఫిల్టర్ చేయడం మీ పని.

కాన్సెప్ట్‌లు: వినియోగదారు కథనం: "... వంటి, నేను చేయగలను... ఎందుకంటే..." రూపంలో అవసరాన్ని వ్యక్తపరిచే చిన్న వాక్యం. అంగీకార ప్రమాణాలు: ఉద్యోగం "పూర్తయింది"గా పరిగణించబడటానికి తప్పనిసరిగా పరీక్షించదగిన పరిస్థితులు. పని చేయని అవసరం: వేగం, భద్రత, స్కేలబిలిటీ వంటి "అది ఏమి చేస్తుంది" అనేదాని కంటే "ఇది ఎలా ప్రవర్తిస్తుంది" అనే దానికి సంబంధించిన అవసరాలు.

అస్పష్టమైన అభ్యర్థన నుండి పరీక్షించదగిన అవసరం వరకు

మంచి అవసరం కొలవదగినది మరియు ధృవీకరించదగినది. "సిస్టమ్ వేగంగా ఉండనివ్వండి" కాదు, కానీ "శోధన ఫలితాలు 500 msలోపు తిరిగి రావాలి". అనిశ్చితిని తగ్గించడానికి AIని ఉపయోగించడానికి ఇక్కడ దశల వారీ మార్గం ఉంది:

  1. అభ్యర్థనను అలాగే ఇవ్వండి మరియు ప్రశ్నను రూపొందించండి. పరిష్కారం కోసం AIని అడగండి, కానీ ముందుగా "ఈ అభ్యర్థనలో అస్పష్టంగా ఉన్నదాన్ని ప్రశ్నగా జాబితా చేయండి."
  2. మీరు సమాధానాలు చెప్పండి. సందర్భం మీకు మాత్రమే తెలుసు; మీ నిజమైన వ్యాపార పరిమితులతో AI యొక్క ప్రశ్నలకు సమాధానం ఇవ్వండి.
  3. దీన్ని వినియోగదారు కథనాలు మరియు అంగీకార ప్రమాణాలలోకి అనువదించండి. స్పష్టం చేయబడిన అవసరాన్ని పరీక్షించదగిన అంశాలుగా అనువదించండి.
  4. అంచు కేసులు మరియు ప్రతికూల దృశ్యాలను జోడించండి. "ఖాళీ ఫలితం", "అనధికార వినియోగదారు", "చాలా పెద్ద ఫైల్" మొదలైనవి.

అస్పష్టత వెలికితీత ప్రాంప్ట్: "మేము ఈ క్రింది వ్యాపార అభ్యర్థనను సాఫ్ట్‌వేర్ అవసరంగా అనువదిస్తాము. ఇంకా పరిష్కారాన్ని ప్రతిపాదించవద్దు. ముందుగా, ఈ అభ్యర్థనలో సమాధానం లేని అన్ని అస్పష్టతలు మరియు దాచిన ఊహలను ప్రశ్నల జాబితాగా సంగ్రహించండి. క్రింది శీర్షికల క్రింద ప్రశ్నలను సమూహపరచండి: స్కోప్, వినియోగదారు/అధికారం, డేటా వాల్యూమ్, పనితీరు, ఎర్రర్ కండిషన్స్, రిపోర్ట్ కండిషన్స్ డౌన్‌లోడ్ చరిత్ర

వినియోగదారు కథనం + అంగీకార ప్రమాణాల ప్రాంప్ట్: "ఇన్వెస్ట్ సూత్రాలకు అనుగుణంగా ఉన్న వినియోగదారు కథనాలుగా క్రింది స్పష్టం చేయబడిన అవసరాన్ని విభజించండి. ప్రతి కథనానికి 3-5 పరీక్షించదగిన అంగీకార ప్రమాణాలను వ్రాయండి (ఇచ్చిన-ఎప్పుడు-అప్పుడు ఫార్మాట్‌లో). కనీసం 2 ప్రతికూల దృశ్యాలను జోడించండి (అనధికార ప్రాప్యత, ఖాళీ డేటా). అవసరం: [ఇక్కడ వ్రాయండి]"

డిజైన్ నిర్ణయాలను AIతో పోల్చడం

డిజైన్ అనేది స్థిరమైన ట్రేడ్-ఆఫ్: స్పీడ్ వర్సెస్ ఫ్లెక్సిబిలిటీ, సింప్లిసిటీ వర్సెస్ స్కేలబిలిటీ? AI ఈ ట్రేడ్-ఆఫ్‌లను త్వరిత స్ప్రెడ్‌షీట్‌లో ఉంచుతుంది. ఉదాహరణకు, "నోటిఫికేషన్ పంపు" ఫీచర్ కోసం, మీరు సింక్రోనస్ (అభ్యర్థన వద్ద పంపండి) లేదా అసమకాలిక (క్యూ, నేపథ్యంలో పంపండి) విధానాన్ని ఉపయోగించాలా వద్దా అనేదానిపై చర్చించవచ్చు.

డిజైన్ పోలిక ప్రాంప్ట్: "నేను 'వినియోగదారుకి ఇమెయిల్ నోటిఫికేషన్ పంపు' ఫీచర్‌ను రూపొందిస్తున్నాను. రెండు విధానాలను సరిపోల్చండి: (A) HTTP అభ్యర్థన సమయంలో సమకాలిక డెలివరీ, (B) సందేశ క్యూలో ఉంచడం ద్వారా నేపథ్యంలో అసమకాలిక బట్వాడా. కింది అక్షాలపై పట్టికను రూపొందించండి: వినియోగదారు నిరీక్షణ సమయం, తప్పు సహనం, సంక్లిష్టత, సంక్లిష్టత. 2 వాక్యాలలో క్లుప్తంగా చెప్పండి.

అక్షం

సింక్రోనస్ ట్రాన్స్మిషన్

అసమకాలిక (క్యూ)

వినియోగదారు నిరీక్షణ సమయం

చాలా కాలం (షిప్‌మెంట్ కోసం వేచి ఉంది)

చిన్నది (వెంటనే తిరిగి వస్తుంది)

తప్పు సహనం

తక్కువ (పంపించు పేలితే అభ్యర్థన పేలుతుంది)

అధికం (మళ్లీ ప్రయత్నించడం సాధ్యం)

సంక్లిష్టత

తక్కువ

మీడియం-హై (క్యూ ఇన్‌ఫ్రాస్ట్రక్చర్)

మౌలిక సదుపాయాల ఖర్చు

తక్కువ

అదనపు భాగాలు అవసరం

అది ఎక్కడ సరిపోతుంది

తక్కువ వాల్యూమ్, సాధారణ అప్లికేషన్

అధిక వాల్యూమ్, క్లిష్టమైన డెలివరీ

చిట్కా: “నా కోసం నిర్ణయం తీసుకోవద్దు, ఎంపికలు మరియు షరతులను నాకు చూపండి” అని AIకి చెప్పడం మిమ్మల్ని ఆలోచించేలా చేస్తుంది మరియు సూచనను గుడ్డిగా అంగీకరించే ప్రమాదాన్ని తగ్గిస్తుంది. మీ సందర్భం (మీరు) తెలిసిన వ్యక్తి తీసుకున్న ఉత్తమ రూపకల్పన నిర్ణయం.

బలహీనమైన ప్రాంప్ట్ / బలమైన ప్రాంప్ట్

బలహీనం: "ఆర్డర్ సిస్టమ్ కోసం డేటాబేస్‌ను రూపొందించండి." (ఫలితం: ఏ స్కేల్, ఏ సంబంధాలు, ఏ అడ్డంకులు స్పష్టంగా లేవు; సాధారణ, అవాస్తవిక పథకం.) STRONG: "చిన్న ఇ-కామర్స్ కోసం డ్రాఫ్ట్ డేటా మోడల్‌ను సూచించండి. ఎంటిటీలు: కస్టమర్, ఆర్డర్, ఉత్పత్తి, ఆర్డర్ అంశం. పరిమితులు: ఆర్డర్‌లో చాలా ఉత్పత్తులు ఉండవచ్చు; ప్రస్తుత ధర 0 కంటే ఎక్కువ కాలం మారవచ్చు; ఆర్డర్ ధర కాలక్రమేణా మారవచ్చు ~ రోజుకు ఆర్డర్‌లు ఆశించబడతాయి మరియు ఎందుకు "మీరు నిర్ణయం తీసుకున్నారని వివరించండి. మీరు ధర చరిత్ర సమస్యను ఎలా పరిష్కరించారో పేర్కొనండి. కోడ్ కాకుండా ఎంటిటీలు మరియు ఫీల్డ్‌ల జాబితాగా ఇవ్వండి."

శక్తివంతమైన ప్రాంప్ట్ యొక్క వ్యత్యాసం; స్కేల్ (రోజుకు 500 ఆర్డర్‌లు), వ్యాపార నియమం (గత ధర తప్పనిసరిగా నిర్వహించబడాలి) మరియు కావలసిన అవుట్‌పుట్ ఫార్మాట్. "గత ధరను కొనసాగించాలి" వంటి ఒకే వాక్యం పూర్తిగా డిజైన్‌ను మారుస్తుంది; మీరు దీన్ని పేర్కొనకుంటే, AI ఒక సరికాని కానీ ఆమోదయోగ్యమైనదిగా కనిపించే రేఖాచిత్రాన్ని ఉత్పత్తి చేస్తుంది.

మినీ కేసులు

కేసు 1 - దాచిన ఊహ. "యూజర్ ప్రొఫైల్ ఫోటోను అప్‌లోడ్ చేయవచ్చు" అభ్యర్థనను ఒక బృందం నేరుగా కోడ్ చేస్తుంది. మరొక బృందం అనిశ్చితి గురించి AIని అడిగారు: "గరిష్ట పరిమాణం? అనుమతించబడిన ఫార్మాట్‌లు? సరికాని కంటెంట్ నియంత్రణ? పాత ఫోటోను తొలగించాలా?" వంటి 8 ప్రశ్నలను ఇది ఉత్పత్తి చేస్తుంది. 20 MB ఫైల్‌లు సర్వర్‌ను నింపినప్పుడు మొదటి బృందం ఉత్పత్తిలో సమస్య గురించి తెలుసుకుంటుంది; రెండవ బృందం దానిని డిజైన్‌లో పరిష్కరిస్తుంది.

కేసు 2 - సరికాని స్కేల్ ఊహ. AI రిపోర్టింగ్ ఫీచర్ కోసం సంక్లిష్టమైన కాషింగ్ లేయర్‌ను ప్రతిపాదిస్తుంది. నిజమైన డేటా రోజుకు 30 నివేదికలు మాత్రమే అని ఇంజనీర్ సూచించినప్పుడు, AI సూచనను సులభతరం చేస్తుంది. స్కేల్‌ను పేర్కొనకపోవడం అనవసరమైన సంక్లిష్టత యొక్క ధరను కలిగిస్తుంది; పేర్కొనడం 2 వారాల అనవసరమైన పనిని ఆదా చేస్తుంది.

కేస్ 3 - అంగీకార ప్రమాణాల గ్యాప్. "చెల్లింపు విఫలమైతే ఏమి జరుగుతుంది?" ప్రశ్న ఎప్పుడూ అడగబడనందున, చెల్లింపు విజయవంతం కాని సందర్భంలో ఆర్డర్ సిస్టమ్ ఇప్పటికీ ఆర్డర్‌ను "ధృవీకరించబడింది" అని గుర్తు చేస్తుంది. AI ద్వారా రూపొందించబడిన ప్రతికూల దృశ్యాల జాబితా ఈ అంతరాన్ని సంగ్రహిస్తుంది; 1 లైన్ అంగీకార ప్రమాణం నిజమైన డబ్బు నష్టాన్ని నిరోధిస్తుంది.

సాధారణ తప్పులు

  • అభ్యర్థనను నేరుగా కోడ్‌కు పంపడం. అస్పష్టత పరిష్కరించబడటానికి ముందు వ్రాసిన కోడ్ తప్పు సమస్యను త్వరగా పరిష్కరిస్తుంది.
  • AI యొక్క సాధారణ "ఉత్తమ అభ్యాసం"ని గుడ్డిగా తీసుకోవడం. మీరు మీ సందర్భాన్ని (స్కేల్, బడ్జెట్, టీమ్) పేర్కొనకపోతే, సిఫార్సు మీ కోసం పని చేయదు.
  • నాన్-ఫంక్షనల్ అవసరాలను దాటవేయడం. వేగం, భద్రత మరియు స్కేల్ పేర్కొనబడకపోతే, డిజైన్ అసంపూర్ణంగా ఉంటుంది.
  • సంతోషకరమైన దృశ్యం గురించి మాత్రమే ఆలోచిస్తున్నాను. ఖాళీ డేటా, అనధికార వినియోగదారు, ఎర్రర్ స్థితి వంటి ప్రతికూల దృశ్యాలను డిజైన్‌లో చేర్చాలి.
  • నిర్ణయాన్ని AIకి అప్పగిస్తోంది. AI ఎంపికలను ఉత్పత్తి చేస్తుంది; మీ వ్యాపారానికి ఏ ట్రేడ్-ఆఫ్ సరిపోతుందో మీరు నిర్ణయించుకోండి.

సారాంశంలో

అవసరాల విశ్లేషణ మరియు రూపకల్పన అనేది చౌకైన లోపాలు పట్టుకున్న దశ. ఇక్కడ, AI అనిశ్చితిని బహిర్గతం చేసే ప్రశ్నలను ఉత్పత్తి చేస్తుంది, వినియోగదారు కథనాలను మరియు అంగీకార ప్రమాణాలను రూపొందించడం మరియు ట్రేడ్-ఆఫ్‌ల రూపకల్పన చార్ట్‌లు. కానీ మీకు మాత్రమే సందర్భం తెలుసు; మీ స్థాయి, బడ్జెట్, బృందం మరియు చట్టపరమైన పరిమితుల ఆధారంగా AI సిఫార్సులను ఫిల్టర్ చేయడం మరియు తుది నిర్ణయం తీసుకోవడం మీ పని. “నా కోసం నిర్ణయం తీసుకోవద్దు, నాకు ఎంపికలను చూపించు” అనే క్రమశిక్షణ మెరుగైన రూపకల్పన మరియు లోతైన అభ్యాసానికి దారితీస్తుంది.

అప్లికేషన్ టాస్క్

మీ సందర్భం నుండి ఒక వాక్యం ఉద్యోగ అభ్యర్థనను ఎంచుకోండి. ముందుగా, AIకి అస్పష్టత ప్రాంప్ట్‌ని వర్తింపజేయండి మరియు మీ నిజమైన పరిమితులతో ప్రశ్నలకు సమాధానం ఇవ్వండి. ఆపై స్పష్టం చేయబడిన అవసరాన్ని కనీసం 2 వినియోగదారు కథనాలు మరియు ప్రతిదానికి 3 అంగీకార ప్రమాణాలుగా అనువదించండి; కనీసం 1 ప్రతికూల దృష్టాంతాన్ని చేర్చండి. చివరగా, డిజైన్ నిర్ణయం (సమకాలిక/అసమకాలిక, పట్టిక నిర్మాణం మొదలైనవి) కోసం పోలిక పట్టికను సృష్టించండి మరియు మీ స్వంత నిర్ణయాన్ని 2 వాక్యాలలో వ్రాయండి.

చెక్లిస్ట్

  • [ ] నేను అభ్యర్థనను కోడ్‌లోకి పంపే ముందు అస్పష్టతలను ప్రశ్నలుగా తొలగించాను.
  • [ ] నేను AIకి సందర్భాన్ని (స్థాయి, అధికారం, పనితీరు, చట్టపరమైన ప్రతిబంధకం) ఇచ్చాను.
  • [ ] నేను వినియోగదారు కథనాలను పరీక్షించదగిన అంగీకార ప్రమాణాలుగా విభజించాను.
  • [ ] నేను కనీసం ఒక ప్రతికూలత/అంచు దృశ్యాన్ని జోడించాను.
  • [ ] నేను ట్రేడ్-ఆఫ్ టేబుల్‌తో డిజైన్ నిర్ణయాన్ని మూల్యాంకనం చేసాను.
  • [ ] నేను నా సందర్భం ఆధారంగా తుది నిర్ణయం తీసుకున్నాను, నేను దానిని AIకి వదిలిపెట్టలేదు.