Big design up front
ಬಿಗ್ ಡಿಸೈನ್ ಅಪ್ ಫ್ರಂಟ್ (ಬಿ. ಡಿ. ಯು. ಎಫ್) ಎಂಬುದು ಸಾಫ್ಟ್ವೇರ್ ಅಭಿವೃದ್ಧಿ ವಿಧಾನವಾಗಿದ್ದು, ಇದರಲ್ಲಿ ಆ ಪ್ರೋಗ್ರಾಂನ ಅನುಷ್ಠಾನವನ್ನು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ಪ್ರೋಗ್ರಾಂನ ವಿನ್ಯಾಸವನ್ನು ಪೂರ್ಣಗೊಳಿಸಬೇಕು ಮತ್ತು ಪರಿಪೂರ್ಣಗೊಳಿಸಬೇಕು. ಇದು ಸಾಮಾನ್ಯವಾಗಿ ಸಾಫ್ಟ್ವೇರ್ ಅಭಿವೃದ್ಧಿಯ ಜಲಪಾತ ಮಾದರಿಯೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದೆ. ಬಿಗ್ ಡಿಸೈನ್ ಅಪ್ ಫ್ರಂಟ್ (ಬಿಡಿಯುಎಫ್) ಗೆ ಸಮಾನಾರ್ಥಕ ಪದಗಳು ಬಿಗ್ ಮಾಡೆಲಿಂಗ್ ಅಪ್ ಫ್ರಂಟ್ (ಬಿಎಂಯುಎಫ್) ಮತ್ತು ಬಿಗ್ ರಿಕ್ವೈರ್ಮೆಂಟ್ಸ್ ಅಪ್ ಫ್ರಂಟ್ (ಬಿಆರ್ಯುಎಫ್). ಚುರುಕಾದ ತಂತ್ರಾಂಶ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿ ಇವುಗಳನ್ನು ಮಾದರಿ-ವಿರೋಧಿಗಳೆಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ಜಲಪಾತ ಮಾದರಿಯ ಪ್ರತಿಪಾದಕರಿಗೆ ಸಂಬಂಧಿಸಿದ ವಾದಗಳು, ತಂತ್ರಾಂಶ ಉತ್ಪನ್ನದ ಜೀವನಚಕ್ರದ ಆರಂಭಿಕ ಹಂತಗಳಲ್ಲಿ ದೋಷವನ್ನು ಸರಿಪಡಿಸಲು ಅದೇ ದೋಷವು ಕಂಡುಬಂದಾಗ ಮತ್ತು ನಂತರ ಸರಿಪಡಿಸಬೇಕಾದ ಸಮಯಕ್ಕಿಂತ ಕಡಿಮೆ ಸಮಯ ಮತ್ತು ಶ್ರಮವನ್ನು ವ್ಯಯಿಸಲಾಗುತ್ತದೆ ಎಂಬ ಭರವಸೆಯೊಂದಿಗೆ, ವಿನ್ಯಾಸದಲ್ಲಿ ಖರ್ಚು ಮಾಡಿದ ಸಮಯವು ಒಂದು ಉಪಯುಕ್ತ ಹೂಡಿಕೆಯಾಗಿದೆ ಎಂದು ವಾದಿಸುತ್ತವೆ. ಅಂದರೆ, ಅನುಷ್ಠಾನ ಹಂತದಲ್ಲಿ ಅದೇ ದೋಷವನ್ನು ಸರಿಪಡಿಸುವುದಕ್ಕಿಂತ ಅವಶ್ಯಕತೆಗಳ ಹಂತದಲ್ಲಿ ದೋಷವನ್ನು ಸರಿಪಡಿಸುವುದು ತುಂಬಾ ಸುಲಭ, ಏಕೆಂದರೆ ಅನುಷ್ಠಾನ ಹಂತದಲ್ಲಿ ಅವಶ್ಯಕತೆಗಳ ದೋಷವನ್ನು ಸರಿಪಡಿಸಲು ಕನಿಷ್ಠ ಕೆಲವು ಅನುಷ್ಠಾನ ಮತ್ತು ವಿನ್ಯಾಸ ಕಾರ್ಯಗಳನ್ನು ಈಗಾಗಲೇ ಪೂರ್ಣಗೊಳಿಸಲಾಗಿದೆ. ಸಾಫ್ಟ್ವೇರ್ ಅಭಿವೃದ್ಧಿಯ ಜನಪ್ರಿಯ ಆನ್ಲೈನ್ ವ್ಯಾಖ್ಯಾನಕಾರರಾದ ಜೋಯಲ್ ಸ್ಪೋಲ್ಸ್ಕಿ, ದೊಡ್ಡ ವಿನ್ಯಾಸದ ಪರವಾಗಿ ಬಲವಾಗಿ ವಾದಿಸಿದ್ದಾರೆಃ "ಅನೇಕ ಬಾರಿ, ವಿಷಯಗಳನ್ನು ಮುಂಚಿತವಾಗಿ ಯೋಚಿಸುವುದು ನಂತರದ ಗಂಭೀರ ಬೆಳವಣಿಗೆಯ ತಲೆನೋವನ್ನು ಉಳಿಸುತ್ತದೆ. . [ನಿರ್ದಿಷ್ಟ ವಿವರಣೆಯಲ್ಲಿ ಬದಲಾವಣೆ ಮಾಡಲು]. ವಿವರಣೆಯಲ್ಲಿ ಈ ಬದಲಾವಣೆಯನ್ನು ಮಾಡಲು ಒಂದು ಅಥವಾ ಎರಡು ಗಂಟೆಗಳು ಬೇಕಾಯಿತು. ನಾವು ಕೋಡ್ನಲ್ಲಿ ಈ ಬದಲಾವಣೆಯನ್ನು ಮಾಡಿದ್ದರೆ, ಅದು ವೇಳಾಪಟ್ಟಿಗೆ ವಾರಗಳನ್ನು ಸೇರಿಸುತ್ತಿತ್ತು. ಎಕ್ಸ್ಟ್ರೀಮ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಪ್ರತಿಪಾದಕರು ಶಾಪವೆಂದು ಪರಿಗಣಿಸುವ ಬಿಗ್ ಡಿಸೈನ್ ಅಪ್ ಫ್ರಂಟ್ನಲ್ಲಿ ನಾನು ಎಷ್ಟು ಬಲವಾಗಿ ನಂಬುತ್ತೇನೆ ಎಂದು ನಾನು ನಿಮಗೆ ಹೇಳಲಾರೆ. ನಾನು ನಿರಂತರವಾಗಿ ಸಮಯವನ್ನು ಉಳಿಸಿದ್ದೇನೆ ಮತ್ತು ಬಿಡಿಯುಎಫ್ ಅನ್ನು ಬಳಸುವ ಮೂಲಕ ಉತ್ತಮ ಉತ್ಪನ್ನಗಳನ್ನು ತಯಾರಿಸಿದ್ದೇನೆ ಮತ್ತು ಎಕ್ಸ್ಪಿ ಮತಾಂಧರು ಏನೇ ಹೇಳಿಕೊಂಡರೂ ಅದನ್ನು ಬಳಸಲು ನಾನು ಹೆಮ್ಮೆಪಡುತ್ತೇನೆ. ಈ ವಿಷಯದಲ್ಲಿ ಅವರು ಕೇವಲ ತಪ್ಪಾಗಿದ್ದಾರೆ ಮತ್ತು ನಾನು ಅದಕ್ಕಿಂತ ಹೆಚ್ಚು ಸ್ಪಷ್ಟವಾಗಿ ಹೇಳಲು ಸಾಧ್ಯವಿಲ್ಲ ". ಆದಾಗ್ಯೂ, ಹಲವಾರು ವ್ಯಾಖ್ಯಾನಕಾರರು, ಜೋಯಲ್ ದೊಡ್ಡ ವಿನ್ಯಾಸ ಎಂದು ಕರೆದಿದ್ದನ್ನು ಎಕ್ಸ್ಪಿ ಮತ್ತು ಇತರ ಚುರುಕಾದ ಸಾಫ್ಟ್ವೇರ್ ಅಭಿವೃದ್ಧಿ ವಿಧಾನಗಳ ವಕೀಲರು ಟೀಕಿಸಿದ ಬಿಡಿಯುಎಫ್ ಅನ್ನು ಹೋಲುವುದಿಲ್ಲ ಎಂದು ವಾದಿಸಿದ್ದಾರೆ, ಏಕೆಂದರೆ ಅವರು ಸ್ವತಃ ತಮ್ಮ ಉದಾಹರಣೆಯು ಪೂರ್ಣ ಪ್ರೋಗ್ರಾಂ ವಿನ್ಯಾಸವನ್ನು ಗುರುತಿಸಲಾರದು ಅಥವಾ ಸಂಪೂರ್ಣವಾಗಿ ಮುಂಚಿತವಾಗಿ ಪೂರ್ಣಗೊಳಿಸಲಿಲ್ಲ ಎಂದು ಹೇಳುತ್ತಾರೆಃ "ಈ ವಿವರಣೆಯು ಆರ್ಡ್ವರ್ಕ್ 1ರ ವಿನ್ಯಾಸಕ್ಕೆ ಕೇವಲ ಒಂದು ಆರಂಭಿಕ ಹಂತವಾಗಿದೆ, ಅಂತಿಮ ನೀಲನಕ್ಷೆಯಲ್ಲ. ನಾವು ಉತ್ಪನ್ನವನ್ನು ನಿರ್ಮಿಸಲು ಪ್ರಾರಂಭಿಸಿದಾಗ, ಯೋಜಿಸಿದಂತೆ ನಿಖರವಾಗಿ ಕೆಲಸ ಮಾಡದ ಬಹಳಷ್ಟು ವಿಷಯಗಳನ್ನು ನಾವು ಕಂಡುಕೊಳ್ಳುತ್ತೇವೆ. ನಾವು ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಕಂಡುಹಿಡಿಯುತ್ತೇವೆ, ನಾವು ವಿಷಯಗಳನ್ನು ಬದಲಾಯಿಸುತ್ತೇವೆ, ನಾವು ಪದಗಳನ್ನು ಪರಿಷ್ಕರಿಸುತ್ತೇವೆ, ಇತ್ಯಾದಿ. ವಿಷಯಗಳು ಬದಲಾದಂತೆ ನಾವು ಸ್ಪೆಕ್ ಅನ್ನು ನವೀಕೃತವಾಗಿಡಲು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ. ಈ ವಿಧಿಯನ್ನು ನೀವು ಯಾವುದೇ ರೀತಿಯಲ್ಲಿ ಪವಿತ್ರವಾದ, ಕಲ್ಲಿನಲ್ಲಿರಿಸಿದ ಕಾನೂನು ಎಂದು ಪರಿಗಣಿಸಬಾರದು ". ವಿಮರ್ಶಕರ ವಿರುದ್ಧದ ವಾದಗಳು (ವಿಶೇಷವಾಗಿ ಚುರುಕಾದ ತಂತ್ರಾಂಶ ಅಭಿವೃದ್ಧಿಯನ್ನು ಅಭ್ಯಾಸ ಮಾಡುವವರು) ಬಿಡಿಯುಎಫ್ ಬದಲಾಗುತ್ತಿರುವ ಅವಶ್ಯಕತೆಗಳಿಗೆ ಸರಿಯಾಗಿ ಹೊಂದಿಕೊಳ್ಳುವುದಿಲ್ಲ ಮತ್ತು ವಿನ್ಯಾಸಕರು ವ್ಯಾಪಕವಾದ ಮೂಲಮಾದರಿ ಮತ್ತು ಕನಿಷ್ಠ ಅನುಷ್ಠಾನಕ್ಕೆ ಸ್ವಲ್ಪ ಹೂಡಿಕೆಯಿಲ್ಲದೆ ಸಮಸ್ಯೆಯ ಪ್ರದೇಶಗಳನ್ನು ಮುಂಗಾಣಲು ಸಮರ್ಥರಾಗಿದ್ದಾರೆ ಎಂದು ಬಿಡಿಯುಎಫ್ ಊಹಿಸುತ್ತದೆ ಎಂದು ವಾದಿಸುತ್ತಾರೆ. ಗಣನೀಯ ಯೋಜನೆಗಳಿಗೆ, ಆರಂಭಿಕ ವಿತರಣೆಗಳ ಬೆಳಕಿನಲ್ಲಿ ಬಳಕೆದಾರರ ಅವಶ್ಯಕತೆಗಳಿಗೆ ಪರಿಷ್ಕರಣೆಯ ಅಗತ್ಯವಿದೆ, ಮತ್ತು ದೊಡ್ಡ ಯೋಜನೆಗಳು ಪೂರ್ಣಗೊಳ್ಳುವುದಕ್ಕಿಂತ ವೇಗವಾಗಿ ವ್ಯವಹಾರದ ಅಗತ್ಯಗಳು ವಿಕಸನಗೊಳ್ಳುತ್ತವೆ-ಇದು ವ್ಯವಸ್ಥೆಯು ಪೂರ್ಣಗೊಳ್ಳುವ ಹೊತ್ತಿಗೆ ದೊಡ್ಡ ವಿನ್ಯಾಸವನ್ನು ಹಳತಾಗಿಸುತ್ತದೆ. ಯೋಜನೆಯಲ್ಲಿ ಕಳೆದ ಸಮಯ ಮತ್ತು ದೋಷವನ್ನು ಸರಿಪಡಿಸಲು ನಿಜವಾಗಿಯೂ ವೆಚ್ಚವಾಗುವ ಸಮಯದ ನಡುವೆ ಸಮತೋಲನವನ್ನು ಹೊಂದಿರಬೇಕಾದ ಓವರ್ಹೆಡ್ ಇದೆ ಎಂದು ಅವರು ಪ್ರತಿಪಾದಿಸುತ್ತಾರೆ. ಇದನ್ನು ಕೆಲವೊಮ್ಮೆ ವಿಶ್ಲೇಷಣೆ ಪಾರ್ಶ್ವವಾಯು ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಯೋಜನೆಯ ವೆಚ್ಚವು ಸ್ಥಿರೀಕರಣದ ವೆಚ್ಚಕ್ಕಿಂತ ಹೆಚ್ಚಿದ್ದರೆ, ಯೋಜನೆಯಲ್ಲಿ ವ್ಯಯಿಸಿದ ಸಮಯ ವ್ಯರ್ಥವಾಗುತ್ತದೆ. ನಿರಂತರ ನಿಯೋಜನೆ, ಸ್ವಯಂಚಾಲಿತ ನವೀಕರಣಗಳು ಮತ್ತು ಸಂಬಂಧಿತ ಆಲೋಚನೆಗಳು ಉತ್ಪಾದನೆಯಲ್ಲಿನ ದೋಷಗಳ ವೆಚ್ಚವನ್ನು ಗಣನೀಯವಾಗಿ ಕಡಿಮೆ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತವೆ, ಇದರಿಂದಾಗಿ ಅವು ಆರಂಭದಲ್ಲಿ ಯೋಜಿಸುವುದಕ್ಕಿಂತ ರನ್-ಟೈಮ್ನಲ್ಲಿ ಸರಿಪಡಿಸಲು ಅಗ್ಗವಾಗುತ್ತವೆ. ವಾಸ್ತವದಲ್ಲಿ, ರನ್-ಟೈಮ್ ಪರಿಹಾರಗಳು ವಿನ್ಯಾಸದ ಪರಿಹಾರಗಳಿಗಿಂತ ಹೆಚ್ಚು ದುಬಾರಿಯಾಗಿರುತ್ತವೆ, ಆದ್ದರಿಂದ ಅಭಿವೃದ್ಧಿ ಚಕ್ರದಲ್ಲಿ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಅಭಿವೃದ್ಧಿಯ ಸಮಯದಲ್ಲಿ ಆಗಾಗ್ಗೆ ಪ್ರದರ್ಶನಗಳು ಮತ್ತು ಬಳಕೆದಾರರ ಪ್ರತಿಕ್ರಿಯೆಯಂತಹ ಚುರುಕಾದ ವಿಧಾನಗಳನ್ನು ಬಳಸುವುದು ಬಹಳ ಮುಖ್ಯ. ಬಳಕೆದಾರರ ಪ್ರತಿಕ್ರಿಯೆಯ ಪ್ರಯೋಜನದೊಂದಿಗೆ ತಂತ್ರಾಂಶವನ್ನು ಸುಧಾರಿಸುವುದು ಸಾಮಾನ್ಯವಾಗಿ ಬಿಡಿಯುಎಫ್ನೊಂದಿಗೆ ವ್ಯವಸ್ಥೆಯ ಪ್ರತಿಯೊಂದು ಅಂಶವನ್ನು ನಿರೀಕ್ಷಿಸಲು ಮತ್ತು ದಾಖಲಿಸಲು ಪ್ರಯತ್ನಿಸುವುದಕ್ಕಿಂತ ಕಡಿಮೆ ವೆಚ್ಚದಾಯಕವಾಗಿರುತ್ತದೆ. ಅಲ್ಲದೆ, ಹೆಚ್ಚಿನ ಯೋಜನೆಗಳಲ್ಲಿ ಸಮಗ್ರ ಲಿಖಿತ (ಅಥವಾ ಸುಪರಿಚಿತ) ಅವಶ್ಯಕತೆಗಳ ಗಮನಾರ್ಹ ಕೊರತೆಯಿದೆ. ಆದ್ದರಿಂದ ಬಿಡಿಯುಎಫ್ನಲ್ಲಿ ಬಹಳಷ್ಟು ಊಹೆಗಳನ್ನು ಮಾಡಲಾಗುತ್ತದೆ, ಅದು ನಂತರ ಸುಳ್ಳು ಎಂದು ಸಾಬೀತಾಗುತ್ತದೆ ಆದರೆ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಬಹುಶಃ ಈಗಾಗಲೇ ಕೋಡೆಡ್ ಆಗಿದೆ. ಪರ್ಯಾಯ ವಿಧಾನವೆಂದರೆ ರಫ್ ಡಿಸೈನ್ ಅಪ್ ಫ್ರಂಟ್ (ಆರ್. ಡಿ. ಯು. ಎಫ್), ಇದರಲ್ಲಿ ಯೋಜನೆಯು ಮುಂದುವರಿದಂತೆ ವಿನ್ಯಾಸದ ವಿವರಗಳಲ್ಲಿ ನಿರ್ಮಿಸಬೇಕಾದ ಚೌಕಟ್ಟನ್ನು ಒದಗಿಸಲು 'ಸಾಕಷ್ಟು' ವಿನ್ಯಾಸವನ್ನು ಮುಂಭಾಗದಲ್ಲಿ ಪೂರ್ಣಗೊಳಿಸಲಾಗುತ್ತದೆ. ಇದೇ ರೀತಿಯ ವಿಧಾನವನ್ನು ಜೋಶುವಾ ಕೆರಿವ್ಸ್ಕಿ ಅವರು ಸಾಕಷ್ಟಿರುವ ವಿನ್ಯಾಸ ಎಂದು ಕರೆದಿದ್ದಾರೆಃ "ನಮ್ಮ ಉತ್ಪನ್ನಗಳಿಗೆ ನಿರ್ಣಾಯಕವಾದ ವಸ್ತುಗಳಿಗೆ ಹೆಚ್ಚಿನ ವಿನ್ಯಾಸದ ಗುಣಮಟ್ಟ ಮತ್ತು ನಿರ್ಣಾಯಕವಲ್ಲದ ವಸ್ತುಗಳಿಗೆ ಕಡಿಮೆ ವಿನ್ಯಾಸದ ಗುಣಮಟ್ಟ ಬೇಕು ಎಂದು ನಾನು ಹೇಳುತ್ತಿದ್ದೇನೆ". ಸ್ಕ್ರಮ್ನ ವಕೀಲರು ಉದಯೋನ್ಮುಖ ವಿನ್ಯಾಸದ ಪರಿಕಲ್ಪನೆಯನ್ನು ಉಲ್ಲೇಖಿಸುತ್ತಾರೆಃ "ಸ್ಕ್ರಮ್ ಯೋಜನೆಯಲ್ಲಿನ ವ್ಯತ್ಯಾಸವೆಂದರೆ ಉದ್ದೇಶಪೂರ್ವಕ ವಿನ್ಯಾಸವನ್ನು ಹೊರಹಾಕುವುದಲ್ಲ, ಆದರೆ ಅದನ್ನು (ಸ್ಕ್ರಮ್ ಯೋಜನೆಯಲ್ಲಿರುವ ಎಲ್ಲದರಂತೆ) ಹೆಚ್ಚೆಚ್ಚು ಮಾಡಲಾಗುತ್ತದೆ". ಸಾಫ್ಟ್ವೇರ್ ಅಭಿವೃದ್ಧಿ ತತ್ವಗಳ ಪಟ್ಟಿಯನ್ನು ಸಹ ನೋಡಿ ಉಲ್ಲೇಖಗಳು ಸಾಫ್ಟ್ವೇರ್ ಅಭಿವೃದ್ಧಿ ಪ್ರಕ್ರಿಯೆ