Essential complexity
ಅತ್ಯವಶ್ಯಕ ಸಂಕೀರ್ಣತೆಯು ಸಂಖ್ಯಾಶಾಸ್ತ್ರೀಯ ಅಳತೆಯಾಗಿದೆ, ಇದನ್ನು ಥಾಮಸ್ ಜೆ. ಮೆಕ್ಕೇಬ್, ಸೀನಿಯರ್ ಅವರು ತಮ್ಮ ಹೆಚ್ಚು ಉಲ್ಲೇಖಿಸಿದ, ಸೈಕ್ಲೋಮ್ಯಾಟಿಕ್ ಸಂಕೀರ್ಣತೆಯನ್ನು ಪರಿಚಯಿಸಲು ಹೆಸರುವಾಸಿಯಾದ 1976 ರ ಪ್ರಬಂಧದಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಿದ್ದಾರೆ. ಎಲ್ಲಾ ರಚನಾತ್ಮಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ನಿಯಂತ್ರಣ ರಚನೆಗಳನ್ನು ಪುನರಾವರ್ತಿತವಾಗಿ ಬದಲಾಯಿಸಿದ (ಕಡಿಮೆಗೊಳಿಸಿದ) ನಂತರ ಕಡಿಮೆಯಾದ ಸಿ. ಎಫ್. ಜಿ. ಯ (ನಿಯಂತ್ರಣ-ಹರಿವಿನ ಗ್ರಾಫ್) ಆವರ್ತಕ ಸಂಕೀರ್ಣತೆ ಎಂದು ಮ್ಯಾಕ್ಕೇಬ್ ಅಗತ್ಯ ಸಂಕೀರ್ಣತೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿದ್ದಾರೆ, ಅಂದರೆ. ಪ್ಲೇಸ್ಹೋಲ್ಡರ್ ಸಿಂಗಲ್ ಸ್ಟೇಟ್ಮೆಂಟ್ಗಳೊಂದಿಗೆ ಒಂದೇ ಪ್ರವೇಶ ಬಿಂದು ಮತ್ತು ಒಂದೇ ನಿರ್ಗಮನ ಬಿಂದುವನ್ನು ಹೊಂದಿರುವ (ಉದಾಹರಣೆಗೆ ಇಫ್-ಥೆನ್-ಎಲ್ಸ್ ಮತ್ತು ವೈಲ್ ಲೂಪ್ಸ್). ಮೆಕ್ಕೇಬ್ನ ಕಡಿತ ಪ್ರಕ್ರಿಯೆಯು ನಿಯಂತ್ರಣ ರಚನೆಗಳ ಪರಿಕಲ್ಪನೆಯ ಬದಲಿಯನ್ನು (ಮತ್ತು ಅವು ಒಳಗೊಂಡಿರುವ ನಿಜವಾದ ಹೇಳಿಕೆಗಳು) ಸಬ್ರುಟೈನ್ ಕರೆಗಳೊಂದಿಗೆ ಅನುಕರಿಸುವ ಉದ್ದೇಶವನ್ನು ಹೊಂದಿದೆ, ಆದ್ದರಿಂದ ನಿಯಂತ್ರಣ ರಚನೆಗಳು ಒಂದೇ ಪ್ರವೇಶ ಮತ್ತು ಒಂದೇ ನಿರ್ಗಮನ ಬಿಂದುವನ್ನು ಹೊಂದಿರಬೇಕು. (ಇತ್ತೀಚಿನ ದಿನಗಳಲ್ಲಿ ಈ ರೀತಿಯ ಪ್ರಕ್ರಿಯೆಯು ರೀಫ್ಯಾಕ್ಟರಿಂಗ್ ಎಂಬ ಛತ್ರಿ ಪದದ ಅಡಿಯಲ್ಲಿ ಬರುತ್ತದೆ.) ಎಲ್ಲಾ ರಚನಾತ್ಮಕ ಕಾರ್ಯಕ್ರಮಗಳು ಸ್ಪಷ್ಟವಾಗಿ ಮೆಕ್ಕೇಬ್ ವ್ಯಾಖ್ಯಾನಿಸಿದಂತೆ 1 ರ ಅಗತ್ಯ ಸಂಕೀರ್ಣತೆಯನ್ನು ಹೊಂದಿವೆ ಏಕೆಂದರೆ ಅವೆಲ್ಲವನ್ನೂ ಉನ್ನತ ಮಟ್ಟದ ಸಬ್ರುಟೈನ್ಗೆ ಒಂದೇ ಕರೆಗೆ ಪುನರಾವರ್ತಿತವಾಗಿ ಕಡಿಮೆ ಮಾಡಬಹುದು. ಮ್ಯಾಕ್ಕೇಬ್ ತನ್ನ ಪ್ರಬಂಧದಲ್ಲಿ ವಿವರಿಸಿದಂತೆ, ಈ ಆದರ್ಶವು (ಸಂಪೂರ್ಣವಾಗಿ ರಚನೆಯಾಗಿರುವುದು) ಕೊಟ್ಟಿರುವ ಪ್ರೋಗ್ರಾಂನಿಂದ ಎಷ್ಟು ದೂರದಲ್ಲಿದೆ ಎಂಬುದರ ಅಳತೆಯನ್ನು ಒದಗಿಸಲು ಅವರ ಅಗತ್ಯ ಸಂಕೀರ್ಣತೆಯ ಮೆಟ್ರಿಕ್ ಅನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಹೀಗಾಗಿ 1 ಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ಅಗತ್ಯ ಸಂಕೀರ್ಣತೆ ಸಂಖ್ಯೆಗಳು, ರಚನೆಯಲ್ಲದ ಪ್ರೋಗ್ರಾಂಗಳಿಗೆ ಮಾತ್ರ ಪಡೆಯಬಹುದು, ಅವು ರಚನಾತ್ಮಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಆದರ್ಶದಿಂದ ಮತ್ತಷ್ಟು ದೂರದಲ್ಲಿವೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ. ರಚನಾತ್ಮಕ ಕಾರ್ಯಕ್ರಮಗಳಿಗೆ ರಿಡ್ಯೂಸಿಬಲಿಟಿಯ ವಿವಿಧ ಕಲ್ಪನೆಗಳ ನಡುವಿನ ಗೊಂದಲವನ್ನು ತಪ್ಪಿಸಲು, ಮೆಕ್ಕೇಬ್ ಅವರ ಪ್ರಬಂಧವು ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಚರ್ಚಿಸುತ್ತದೆ ಮತ್ತು ನಂತರ ಎಸ್. ರಾವ್ ಕೊಸರಾಜು ಅವರ 1973 ರ ಪ್ರಬಂಧದ ಸಂದರ್ಭದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಗಮನಿಸುವುದು ಮುಖ್ಯವಾಗಿದೆ, ಇದು ರಚನಾತ್ಮಕ ಕಾರ್ಯಕ್ರಮ ಪ್ರಮೇಯದ ಪರಿಷ್ಕರಣೆಯನ್ನು (ಅಥವಾ ಪರ್ಯಾಯ ದೃಷ್ಟಿಕೋನವನ್ನು) ನೀಡಿತು. ಆದಾಗ್ಯೂ, ಯಾದೃಚ್ಛಿಕ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ರಚನಾತ್ಮಕ ಪ್ರೋಗ್ರಾಂ ಆಗಿ ಪರಿವರ್ತಿಸುವಲ್ಲಿ ಹೆಚ್ಚುವರಿ ಅಸ್ಥಿರಗಳನ್ನು ಪರಿಚಯಿಸಬೇಕಾಗಬಹುದು (ಮತ್ತು ಪರೀಕ್ಷೆಗಳಲ್ಲಿ ಬಳಸಬಹುದು) ಮತ್ತು ಕೆಲವು ಕೋಡ್ ಅನ್ನು ನಕಲು ಮಾಡಬಹುದಾಗಿರುತ್ತದೆ ಎಂದು 1966ರ ಬೋಮ್ ಮತ್ತು ಜಾಕೋಪಿನಿಯ ಮೂಲ ಪ್ರಬಂಧವು ತೋರಿಸಿದೆ, ಎಲ್ಲಾ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ರಚನಾತ್ಮಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ರಚನೆಗಳನ್ನು ಬಳಸಿ ಮಾತ್ರ ಬರೆಯಬಹುದು (ಡಿ ರಚನೆಗಳುಃ ಅನುಕ್ರಮ, ನಂತರ-ಇಲ್ಲದಿದ್ದರೆ, ಮತ್ತು ವೈಲ್-ಲೂಪ್). ತಮ್ಮ ಪ್ರಬಂಧದಲ್ಲಿ, ಬೋಮ್ ಮತ್ತು ಜಾಕೋಪಿನಿ ಊಹಿಸಿದರು, ಆದರೆ ಅವುಗಳನ್ನು ರಚನಾತ್ಮಕ ಕಾರ್ಯಕ್ರಮಗಳಾಗಿ ಪರಿವರ್ತಿಸುವ ಸಲುವಾಗಿ ಕೆಲವು ರೀತಿಯ ರಚನೆಯಲ್ಲದ ಕಾರ್ಯಕ್ರಮಗಳಿಗೆ ಅಂತಹ ಹೆಚ್ಚುವರಿ ಅಸ್ಥಿರಗಳನ್ನು ಪರಿಚಯಿಸುವುದು ಅಗತ್ಯವೆಂದು ಸಾಬೀತುಪಡಿಸಲಿಲ್ಲ. ಪ್ರೋಗ್ರಾಂನ ಒಂದು ಉದಾಹರಣೆ (ನಮಗೆ ಈಗ ತಿಳಿದಿದೆ) ಅಂತಹ ಹೆಚ್ಚುವರಿ ಅಸ್ಥಿರಗಳ ಅಗತ್ಯವಿರುತ್ತದೆ, ಅದರೊಳಗೆ ಎರಡು ಷರತ್ತುಬದ್ಧ ನಿರ್ಗಮನಗಳನ್ನು ಹೊಂದಿರುವ ಲೂಪ್ ಆಗಿದೆ. ಬೋಮ್ ಮತ್ತು ಜಾಕೋಪಿನಿ ಅವರ ಊಹೆಯನ್ನು ಪರಿಹರಿಸುವ ಸಲುವಾಗಿ, ಕೋಸರಾಜು ಅವರು ಬೋಮ್ ಮತ್ತು ಜಾಕೋಪಿನಿ ಬಳಸಿದ ಟ್ಯೂರಿಂಗ್ ಸಮಾನತೆಗಿಂತ ಪ್ರೋಗ್ರಾಂ ಕಡಿತದ ಹೆಚ್ಚು ನಿರ್ಬಂಧಿತ ಕಲ್ಪನೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿದ್ದಾರೆ. ಮೂಲಭೂತವಾಗಿ, ಕೊಸರಾಜು ಅವರ ಕಡಿತದ ಕಲ್ಪನೆಯು, ಎರಡು ಪ್ರೋಗ್ರಾಂಗಳು ಒಂದೇ ಇನ್ಪುಟ್ಗಳನ್ನು ನೀಡಿದರೆ ಒಂದೇ ಮೌಲ್ಯವನ್ನು (ಅಥವಾ ಮುಗಿಸಬಾರದು) ಲೆಕ್ಕ ಹಾಕಬೇಕು ಎಂಬ ಸ್ಪಷ್ಟ ಅವಶ್ಯಕತೆಯ ಜೊತೆಗೆ, ಎರಡು ಪ್ರೋಗ್ರಾಂಗಳು ಒಂದೇ ಪ್ರಾಚೀನ ಕ್ರಿಯೆಗಳು ಮತ್ತು ಮುನ್ಸೂಚನೆಗಳನ್ನು ಬಳಸಬೇಕು, ಎರಡನೆಯದನ್ನು ಷರತ್ತುಗಳಲ್ಲಿ ಬಳಸುವ ಅಭಿವ್ಯಕ್ತಿಗಳು ಎಂದು ಅರ್ಥೈಸಲಾಗುತ್ತದೆ. ಈ ನಿರ್ಬಂಧಗಳ ಕಾರಣದಿಂದಾಗಿ, ಕೊಸರಾಜುವಿನ ಕಡಿತವು ಹೆಚ್ಚುವರಿ ಅಸ್ಥಿರಗಳ ಪರಿಚಯವನ್ನು ಅನುಮತಿಸುವುದಿಲ್ಲ; ಈ ಅಸ್ಥಿರಗಳಿಗೆ ನಿಯೋಜಿಸುವುದರಿಂದ ಹೊಸ ಪ್ರಾಚೀನ ಕ್ರಿಯೆಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ ಮತ್ತು ಅವುಗಳ ಮೌಲ್ಯಗಳನ್ನು ಪರೀಕ್ಷಿಸುವುದರಿಂದ ಷರತ್ತುಗಳಲ್ಲಿ ಬಳಸುವ ಭವಿಷ್ಯವಾಣಿಯನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ. ಕಡಿತದ ಈ ಹೆಚ್ಚು ನಿರ್ಬಂಧಿತ ಕಲ್ಪನೆಯನ್ನು ಬಳಸಿಕೊಂಡು, ಕೊಸರಾಜು ಬೋಮ್ ಮತ್ತು ಜಾಕೋಪಿನಿ ಅವರ ಊಹೆಯನ್ನು ಸಾಬೀತುಪಡಿಸಿದರು, ಅಂದರೆ ಎರಡು ನಿರ್ಗಮನಗಳನ್ನು ಹೊಂದಿರುವ ಲೂಪ್ ಅನ್ನು ಹೆಚ್ಚುವರಿ ಅಸ್ಥಿರಗಳನ್ನು ಪರಿಚಯಿಸದೆ ರಚನಾತ್ಮಕ ಪ್ರೋಗ್ರಾಂ ಆಗಿ ಪರಿವರ್ತಿಸಲಾಗುವುದಿಲ್ಲ, ಆದರೆ ಮುಂದೆ ಹೋಗಿ ಬಹು-ಮಟ್ಟದ ವಿರಾಮಗಳನ್ನು (ಲೂಪ್ಗಳಿಂದ) ಹೊಂದಿರುವ ಪ್ರೋಗ್ರಾಂಗಳು ಕ್ರಮಾನುಗತವನ್ನು ರೂಪಿಸುತ್ತವೆ ಎಂದು ಸಾಬೀತುಪಡಿಸಿದರು, ಅಂದರೆ ಒಬ್ಬರು ಯಾವಾಗಲೂ ಬಹು-ಮಟ್ಟದ ಆಳದ ವಿರಾಮಗಳನ್ನು ಹೊಂದಿರುವ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಕಂಡುಕೊಳ್ಳಬಹುದು, ಅದನ್ನು ಮತ್ತೆ ಹೆಚ್ಚುವರಿ ಅಸ್ಥಿರಗಳನ್ನು ಪರಿಚಯಿಸದೆ, n ಗಿಂತ ಕಡಿಮೆ ಆಳದೊಂದಿಗೆ ಬಹು-ಮಟ್ಟದ ವಿರಾಮಗಳ ಪ್ರೋಗ್ರಾಂಗೆ ಕಡಿಮೆ ಮಾಡಲಾಗುವುದಿಲ್ಲ. ಕೊಸರಾಜು ಅವರ ಫಲಿತಾಂಶಗಳನ್ನು ಗಮನದಲ್ಲಿಟ್ಟುಕೊಂಡು, ರಚನೆಯಲ್ಲದ ಕಾರ್ಯಕ್ರಮಗಳ ನಿಯಂತ್ರಣ-ಹರಿವಿನ ಗ್ರಾಫ್ಗಳ ವಿಷಯದಲ್ಲಿ ಅವುಗಳ ಅಗತ್ಯ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಸೆರೆಹಿಡಿಯುವ ಮಾರ್ಗವನ್ನು ಕಂಡುಕೊಳ್ಳಲು ಅವರು ಉದ್ದೇಶಿಸಿದ್ದರು ಎಂದು ಮೆಕ್ಕೇಬ್ ತಮ್ಮ ಪ್ರಬಂಧದಲ್ಲಿ ಬರೆದಿದ್ದಾರೆ. ಅವರು ಕುರಟೋವ್ಸ್ಕಿಯ ಪ್ರಮೇಯಕ್ಕೆ ಹೋಲುವ ಪ್ರಮೇಯವನ್ನು ರೂಪಿಸಲು ಬಳಸುವ ಚಿಕ್ಕ ರಚನೆಯಲ್ಲದ ಪ್ರೋಗ್ರಾಂಗಳಿಗೆ ಅನುಗುಣವಾದ ನಿಯಂತ್ರಣ-ಹರಿವಿನ ಗ್ರಾಫ್ಗಳನ್ನು (ಇವುಗಳಲ್ಲಿ ಲೂಪ್ಗೆ ಕವಲೊಡೆಯುವುದು, ಲೂಪ್ನಿಂದ ಕವಲೊಡೆಯುವುದು ಮತ್ತು ಅವುಗಳ ಇತರ ಪ್ರತಿರೂಪಗಳು ಸೇರಿವೆ) ಮೊದಲು ಗುರುತಿಸುವ ಮೂಲಕ ಮುಂದುವರಿಯುತ್ತಾರೆ, ಮತ್ತು ನಂತರ ಅವರು ಪ್ರೋಗ್ರಾಂನ ನಿಯಂತ್ರಣ-ಹರಿವಿನ ಗ್ರಾಫ್ ರಚನೆಯಾಗಿದೆಯೇ ಅಥವಾ ಇಲ್ಲವೇ ಎಂಬ ಪ್ರಶ್ನೆಗೆ ಹೌದು/ಇಲ್ಲ ಎಂಬ ಉತ್ತರಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ ಸ್ಕೇಲ್ ಉತ್ತರವನ್ನು (ಅವರ ಪದಗಳಲ್ಲಿ "ಪ್ರೋಗ್ರಾಂನ ರಚನೆಯ ಅಳತೆ") ನೀಡುವ ಸಲುವಾಗಿ ಅಗತ್ಯ ಸಂಕೀರ್ಣತೆಯ ಕಲ್ಪನೆಯನ್ನು ಪರಿಚಯಿಸುತ್ತಾರೆ. ಅಂತಿಮವಾಗಿ, ಸಿಎಫ್ಜಿಯನ್ನು ಕುಗ್ಗಿಸಲು ಮೆಕ್ಕೇಬ್ ಬಳಸಿದ ಕಡಿತದ ಕಲ್ಪನೆಯು ಫ್ಲೋಚಾರ್ಟ್ಗಳನ್ನು ಕಡಿಮೆ ಮಾಡುವ ಕೊಸಾರಾಜುವಿನ ಕಲ್ಪನೆಯಂತೆಯೇ ಅಲ್ಲ. ಸಿ. ಎಫ್. ಜಿ. ಯಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಕಡಿತವು ಕಾರ್ಯಕ್ರಮದ ಒಳಹರಿವಿನ ಬಗ್ಗೆ ತಿಳಿದಿಲ್ಲ ಅಥವಾ ಕಾಳಜಿ ವಹಿಸುವುದಿಲ್ಲ, ಇದು ಕೇವಲ ಗ್ರಾಫ್ ರೂಪಾಂತರವಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಈ ಕೆಳಗಿನ ಸಿ ಪ್ರೋಗ್ರಾಂ ತುಣುಕು 1 ರ ಅಗತ್ಯ ಸಂಕೀರ್ಣತೆಯನ್ನು ಹೊಂದಿದೆ, ಏಕೆಂದರೆ ಇನ್ನರ್ ಇಫ್ ಸ್ಟೇಟ್ಮೆಂಟ್ ಮತ್ತು ಫಾರ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಬಹುದು, ಅಂದರೆ. ಇದು ಒಂದು ರಚನಾತ್ಮಕ ಕಾರ್ಯಕ್ರಮವಾಗಿದೆ. (i = 0; i <3; i + +) {(a [i] = = 0) b [i] + = 2;} ಈ ಕೆಳಗಿನ C ಪ್ರೋಗ್ರಾಂ ತುಣುಕು ನಾಲ್ಕು ಮೂಲಭೂತ ಸಂಕೀರ್ಣತೆಯನ್ನು ಹೊಂದಿದೆ; ಅದರ CFG ಅನ್ನು ಇರ್ರೆಡ್ಯೂಸಿಬಲ್ ಆಗಿದೆ. ಪ್ರೋಗ್ರಾಂ ಎಲ್ಲಾ ಶೂನ್ಯವಾಗಿರುವ z ನ ಮೊದಲ ಸಾಲನ್ನು ಕಂಡುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಆ ಸೂಚ್ಯಂಕವನ್ನು i ನಲ್ಲಿ ಇರಿಸುತ್ತದೆ; ಯಾವುದೂ ಇಲ್ಲದಿದ್ದರೆ, ಅದು-1 ಅನ್ನು i ನಲ್ಲಿ ಇರಿಸುತ್ತದೆ. (i = 0; i <m; i + +) {ಫಾರ್ (j = 0; j <n; j + +) {(z [i] [j]! ಆದಾಗ್ಯೂ, ಏಕ-ಪ್ರವೇಶ ಮತ್ತು ಏಕ-ನಿರ್ಗಮನ ನಿಯಂತ್ರಣ ರಚನೆಯ ರಚನಾತ್ಮಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ನಿಂದ ಕಲ್ಪನೆಯನ್ನು ನೈಸರ್ಗಿಕ ಲೂಪ್ನೊಂದಿಗೆ ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ, ಇದನ್ನು "ಏಕ-ಪ್ರವೇಶ, ಬಹು-ನಿರ್ಗಮನ ಲೂಪ್, ಅದರೊಳಗಿಂದ ಪ್ರವೇಶಕ್ಕೆ ಕೇವಲ ಒಂದು ಶಾಖೆಯೊಂದಿಗೆ" ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. ಸಿ. ಎಫ್. ಜಿ. ಯ ಪ್ರದೇಶಗಳನ್ನು ನೈಸರ್ಗಿಕ ಲೂಪ್ಗಳಾಗಿ ಕಡಿಮೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲದ ಪ್ರದೇಶಗಳನ್ನು ಅಸಮರ್ಪಕ ಪ್ರದೇಶಗಳು ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ; ಈ ಪ್ರದೇಶಗಳು ಸಾಕಷ್ಟು ಸರಳವಾದ ವ್ಯಾಖ್ಯಾನವನ್ನು ಹೊಂದಿವೆಃ ಬಹು-ಪ್ರವೇಶ, ಸಿ. ಎಫ್. ಜಿ. ಯ ಬಲವಾಗಿ ಸಂಪರ್ಕ ಹೊಂದಿದ ಘಟಕಗಳು. ಆದ್ದರಿಂದ ಎರಡು ಪ್ರವೇಶ ಬಿಂದುಗಳನ್ನು ಹೊಂದಿರುವ ಲೂಪ್ ಅತ್ಯಂತ ಸರಳವಾದ ಅನುಚಿತ ಪ್ರದೇಶವಾಗಿದೆ. ಅನೇಕ ನಿರ್ಗಮನಗಳು ಆಧುನಿಕ ಕಂಪೈಲರ್ಗಳಲ್ಲಿ ವಿಶ್ಲೇಷಣೆಯ ಸಮಸ್ಯೆಗಳನ್ನು ಉಂಟುಮಾಡುವುದಿಲ್ಲ. ಅಸಮರ್ಪಕ ಪ್ರದೇಶಗಳು (ಲೂಪ್ಗಳಲ್ಲಿ ಬಹು-ನಮೂದುಗಳು) ಕೋಡ್ ಅನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸುವಲ್ಲಿ ಹೆಚ್ಚುವರಿ ತೊಂದರೆಗಳನ್ನು ಉಂಟುಮಾಡುತ್ತವೆ. ಸಾಫ್ಟ್ವೇರ್ ಎಂಜಿನಿಯರಿಂಗ್ನ ಇತಿಹಾಸ ನಿರ್ಧಾರದಿಂದ ನಿರ್ಧಾರದ ಮಾರ್ಗ ಸೈಕ್ಲೋಮ್ಯಾಟಿಕ್ ಸಂಕೀರ್ಣತೆ ಉಲ್ಲೇಖಗಳು ಸಾಫ್ಟ್ವೇರ್ ಪ್ರಾಜೆಕ್ಟ್ ಮ್ಯಾನೇಜ್ಮೆಂಟ್ ಸಾಫ್ಟ್ವೇರ್ ಮೆಟ್ರಿಕ್ಸ್ ಅನ್ನು ಸಹ ನೋಡಿ.