اضافه کردن تکنیک‌های ماژول (Modular)

در این قسمت از سری آموزش متدولوژی های برنامه نویسی، در رابطه با این موضوع صحبت می‌کنیم که اغلب در دنیای واقعی نرم افزارهای بزرگ و پیچیده، به صورت یک جا و یا اصطلاحاً monolithic پیاده سازی نمی شوند. نرم افزارهایی که به صورت monolithic پیاده سازی می شوند اغلب شامل ایراداتی از قبیل موارد زیر هستند. اما موارد زیر برخی از مشکلات و چالش های پیاده سازی یک نرم افزار به صورت monolithic را نشان می‌دهد:نوشتن چنین نرم افزارهایی دشوار و تست کردن و پیاده سازی آنها پیچیده است.ایجاد تغییرات پس از انتشار محصول نهایی کمی غیر ممکن است.نگهداری و یا maintenance اینگونه از نرم‌افزارها دشوار است.یک خطا می تواند کل سیستم را دچار اختلال کند.برای حل و فصل کردن این مشکلات اغلب یک نرم افزار به قسمت های کوچک تر به نام ماژول و یا module شکسته می شوند. این تکنیک شکستن یک نرم افزار بزرگ به قسمت های کوچکتر می‌تواند فرآیند توسعه، پیاده‌سازی، ایجاد تغییرات و نگهداری را راحت تر کند. ضمناً تکنیک ماژولار کردن یک زبان برنامه نویسی به راحتی می تواند روند ایجاد یک محصول نرم افزاری انعطاف پذیر را امکان پذیر کند.مزیت های زبان های برنامه نویسی ماژولاربرخی از زبان های برنامه نویسی به طور ذاتی از تکنیک ماژولار کردن یک نرم افزار پشتیبانی می کند. برخی از مزیت های این نوع از زبان های برنامه نویسی شامل موارد زیر می باشند:روند توسعه نرم افزار سریعتر انجام می‌شود و ماژول های مختلف می توانند به صورت موازی توسعه پیدا کنند.امکان استفاده کردن مجدد از ماژول ها وجود دارد.از آنجا که هر ماژول به طور مستقل مورد test قرار می گیرد، عملیات test سریعتر و قوی تر انجام می شود.روند خطایابی و یا همان debugging و نگهداری نرم افزار راحت انجام می‌شود. از آنجایی که ماژول ها واحدهای بسیار کوچکی هستند و سطح پیچیدگی کمتری را نیز دارند به راحتی قابل فهم هستند و مورد تست قرار می‌گیرند. تعریف کردن ماژول هایکی از موضوعات مهم در استفاده کردن از تکنیک ماژول کردن یک نرم افزار، همین تشخیص دادن صحیح ماژول ها می باشد. در ادامه برخی از نکاتی که می‌تواند در این قضیه شما را یاری کند را بررسی خواهیم کرد.:اگر در یک نرم افزار نقش اصلی را داده های سیستم ایفا می کنند، می بایست ماژول ها را طوری طراحی کنید که بتواند با داده هایی که با یکدیگر relationship و یا ارتباط دارند کار کند.اگر سرویس و یا خدماتی که سیستم ارائه می‌دهد کاملاً متفاوت و گوناگون است، سیستم باید به functional module ها و ماژول های عملکردی شکسته شود.اگر موارد بالا در مورد سیستم صدق نمی کند سعی کنید سیستم را به logical module ها و یا ماژول های منطقی بشکنید، تا بتوانید درک بهتری از نیازمندی‌های سیستم پیدا کنید.در روند کدنویسی یک نرم‌افزار، هر ماژول ممکن است نیاز باشد یک بار دیگر به زیر ماژول های کوچکتر شکسته شده تا روند کد نویسی ساده تر شود. این موضوع می‌تواند با نکاتی که در قسمت بالا بررسی کردیم و همچنین قوانین و قابلیت های زبان برنامه نویسی مورد استفاده، انجام بپذیرند. برای مثال؛ برای یک زبان برنامه نویسی شی گرا از قبیل c# و یا جاوا، هر کلاس به همراه داده ها و متدهای خود می‌تواند نقش یک ماژول را ایفا کند. پیاده‌سازی قدم به قدم solutionبه منظور پیاده سازی ماژول ها، روند جریان هر کدام از آنها می بایست به صورت قدم به قدم تعریف شود. پیاده سازی یک solution به صورت قدم به قدم، می تواند توسط الگوریتم ها و یا حتی شبه کد ها انجام بپذیرد. در قسمت های قبل در رابطه با شبه کدها صحبت کردیم. پیاده سازی یک solution به صورت قدم به قدم می تواند مزیت های زیر را داشته باشد:برنامه نویسان مختلف می‌توانند به راحتی یک solution را بررسی کرده و ارتباط بین آن، با مسئله مورد نظر را درک کنند.علاوه بر اینکه این solution برای برنامه نویسان قابل فهم است، افرادی که تجربه برنامه نویسی ندارند نیز می توانند به راحتی با آن ارتباط برقرار کنند.در زمان کد نویسی کردن، شبه کدها و یا الگوریتم ها ساده تر توسط برنامه نویس به کد نهایی تبدیل می شوند.می توان از الگوریتم ها و شبه کدهای تولید شده به عنوان بخشی از مستندات برنامه استفاده کرد تا روند نگهداری آن ساده تر گردد.جزئیات سطح پایین، ازجمله؛ نام متغیرها، نام متدها و عملیاتی که می‌بایست پیاده‌سازی شوند، می‌توانند به صورت خودکار انجام بپذیرد.در قسمت زیر مثالی از یک solution که به صورت قدم به قدم پیاده سازی شده است را می بینید. در رابطه با این solution صحبت های بیشتری را در قسمت بعد خدمتتان ارائه خواهیم داد.منبع: وبسایت پرووید