فایل ورد کامل تحقیق مشکلات برنامهنویسی؛ تحلیل علمی چالشهای طراحی نرمافزار و راهکارهای بهبود فرآیند توسعه
توجه : به همراه فایل word این محصول فایل پاورپوینت (PowerPoint) و اسلاید های آن به صورت هدیه ارائه خواهد شد
فایل ورد کامل تحقیق مشکلات برنامهنویسی؛ تحلیل علمی چالشهای طراحی نرمافزار و راهکارهای بهبود فرآیند توسعه دارای ۹۴ صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است
فایل ورد فایل ورد کامل تحقیق مشکلات برنامهنویسی؛ تحلیل علمی چالشهای طراحی نرمافزار و راهکارهای بهبود فرآیند توسعه کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه و مراکز دولتی می باشد.
توجه : در صورت مشاهده بهم ریختگی احتمالی در متون زیر ،دلیل ان کپی کردن این مطالب از داخل فایل ورد می باشد و در فایل اصلی فایل ورد کامل تحقیق مشکلات برنامهنویسی؛ تحلیل علمی چالشهای طراحی نرمافزار و راهکارهای بهبود فرآیند توسعه،به هیچ وجه بهم ریختگی وجود ندارد
بخشی از متن فایل ورد کامل تحقیق مشکلات برنامهنویسی؛ تحلیل علمی چالشهای طراحی نرمافزار و راهکارهای بهبود فرآیند توسعه :
بررسی مشکلات برنامه نویسی
بنام انکه جان را فکرت آموخت
با بررسی های و تجربیاتی که بنده در زمینه برنامه نویسی های پایگاههای اطلاعاتی انجام دادم مشکلات بزرگ برنامه نویسان را در عوامل متععددی پیدا کردم که درطی سال گذشته ( از دی ماه ۸۱ تا خرداد ۸۲ ) سعی کردم برای این مشکلات راه حل های جامع پیدا کنم
.برای حل برخی از این مشکلات به راهنمایی و کمکهای ارزنده دوستانی( که هرگز ندیدمشان ولی خود را وامدار آنها می دانم ) مدیون هستم و برخی دیگر را لطف الهی می دانم ; به هر حال از انجایی که این نتایج را نمی خواهم تنها در اختیار خود داشته باشم و آنرا متعلق به همه می دانم ، سعی خواهم کرد طی مقالاتی گزارشی از راهی که پیموده ام را خدمت دوستان عزیز تقدیم کنم.
۱) انچه در شروع باید بدانیم
الف ) بنابر یک اصل کلی در حل مسائل “ابتدا باید مقصد را مشخص سپس ابزار رسیدن را انتخاب نمود ”
اگر به این مسئله معتقد باشیم باشیم انگاه دیگر درگیر معضلاتی همچون “تعصب بروی یک نرم افزار خاص” و یا “چون من فقط همین نرم افزار را می دانم پس بهترین راه همین است ” نخواهیم شد. وصد البته اینکار نیازمند مطالعه و تحقیق مداوم برای رسیدن به بهترین راه حل خواهد بود.
ب) “همه کس همه چیز را نمی داند”
; اعتقاد به این اصل باعث خواهد شد تا شما اولا سعی در تیمی کردن پروژه های بزرگ کنید و ثانیا انجام نرم افزارهایی که از حیطه توانایی شما خارج است (ومدت کوتاهی برای اتمام آن دارید ) را قبول نکنید چراکه با شکست در انجام آن اعتبار خود را زیر سوال خواهید برد
ج ) “چند کار کوچک بهتر از ۱ کار بزرگ است ”
این به معنای اینست که
• اگر تازه کار هستید با پروژه های کوچک شروع کنید و پس از کسب تجربه به سراغ اهداف بزرگتر بروید
• اگر پروژه بزرگی دارید (بزرگی پروژه بنابر منطق فازی به خودتان بستگی دارد) آنرا به قسمتهای کوچکتری تقسیم کنید تارسیدن به انها ساده تر باشد
د) “مشکلترین راه حل همیشه بهترین نیست”
همیشه اینگونه نیست که بتوانید همه چیز را بنابر مصالحی (همچون “استقلال برنامه از ابزار” ) با کد نویسی حل کنید چرا که اینکار نه تنها باعث افزایش زمان پروژه خواهد شد که احتمال خطا را نیز افزایش می دهد .
بنده از سال ۷۴ تا ۷۵ در حدود ۱۲۰۰۰ خط برنامه بزبان پاسکال نوشتم که Utilityمحسوب می شد و باعث گردید که مشکلاتی همچون فارسی نویسی، ارتباط با شبکه مرتب سازی بانکهای اطلاعاتی و غیره را حل کنم و باکمک آنها چند برنامه مفید نوشتم اما اکنون از عیب یابی این برنامه ها وحشت دارم چه رسد به کسترش این برنامه ها
ه) “خیال پرداز باشید ”
در سینما به این اصطلاح “حس گرفتن ” گفته می شود. در واقع تخیل شما در باره محصول نهایی همیشه مشوق شما برای پیدا کردن راه حلها و فهم ندانسته های شما خواهد بود . این حس ذاتی است و انهایی که از این حس کمتر بهره مند هستند تا زمان تحویل پروژه متوجه نواقص ان نخواهند شد
و) “دست پیش را بگیرید تا پس نیفتید”
در مورد ۲ عامل مهم تاکید می کنم این ضرب المثل را فراموش نکنید
• زمان انجام پروژه
• مبلغ قرارداد
همواره پس از شنیدن صورت مسئله ،اعداد و ارقام ذهنتان را ۲ تا ۳ برابر اعلام کنید چراکه در این صورت نه تنها با ارامش خیال بدون واهمه زمان کافی برای انجام پروژ خواهید داشت که در اخر کار پس از کسر صورت هزینه هایی که حتی تصورشان را هم نمی کردید مقداری استفاده برایتان خواهد ماند.
ز) “شما ۲ گوش دارید و ۱ زبان “
مشتری همیشه می داند که چه کار می خواهد انجام شود ولی قرار نیست شما با حرفهای بزرگ زدن مسئله را برای او وخودتان پیچیده تر از آنچه که هست کنید . همیشه گوش کنید و نکات ظریف مسئله را با دقت تمام دنبال کنید . شاید در لحظه ای که شما فکر می کنید “مسئله ساده ای است ” یک “فاجعه” در انتظار شما باشد در ان لحظه به این مسئله فکر کنید “زبان سرخ سرسبز می دهد برباد”
ح) “من نمی دانم “
همیشه با همه برای فهم انچه نمی دانید در ارتباط باشید .
• همواره با مشتری خود مشورت کنید . شاید او از مسائل برنامه نویسی چیزی نداند ولی مطمئننا از انچه که می خواهد با اطلاع است . نگذارید این دانش او با ایراد گرفتن به شما منتقل شود.
• همیشه در حال جستجوی اطلاعات جدید در اینترنت و یا کتب ویا حتی دوستانی که دارید باشید .
ط) “اول کوچکترها بعد بزرگترها”
یکی از عوامل موفقیت شما در شبیه سازی پروژه های بزرگ به صورت کوچک و تعمیم آن به برنامه های بزرگتر است . بیاد داشته باشید که در پروژه های بزرگ شما باید مسائل حاشیه ای را ( که حتی ممکن است به اصل صورت مسئله ارتباط مستقیم ندارد ) در نظر بگیرید . اما شبیه سازی در مقیاس کوچک به شما فرصت حل اصل مسئله را خواهد داد.
ی)”سریع و کثیف “
زیبا سازی برنامه را برای بعد بگذارید .. مهم نیست اول چه فونتی با چه رنگی انتخاب می شود . مهم اینست که ایا برنامه درست عمل می کند یا خیر . مشتری در هنگام استفاده دیدن یک برنامه زیبا را مهم می داند نه در هنگام تولید .
ک) “عقل تابع چشم است “
• (در مورد مشتری )یک برنامه زیبا بیشتر به دل می نشیند
• (در مورد برنامه نویس ) هرچه بیشتر نمونه برنامه ببینید ، ذهن شما قدرت خیالپردازی بیشتری پیدا میکند و بالطبع دید وسیع تری را در عمل کردن خواهید داشت
برای شروع لازم است در مورد مسائلی که به ترتیب عنوانهای آنها قید می شود ; علاوه بر توضیحات این مقاله مطالعه وسیع و مداومی نیز داشته باشید
البته لازم به ذکر است که فرض این مقاله بر این است که مشتری یا خود شما امکان و یا به صرفه بودن تولید نرم افزار را براورد و درمورد ان مطمئن هستید.
حل هر مسئله و خصوصا برنامه های کامپیوتری مستلزم گذراندن ۵ مرحله است که در شکل نشان داده شده است
همانگونه که از شکل مشخص است هرچه ۴ مرحله اول دقیق تر انجام شود احتمال تکرار مراحل قبلی کمتر و بالطبع زمان و در پی ان هزینه تولید نرم افزار کاهش می یابد . در میان ۵ مرحله تحلیل مهمترین بخش است چراکه تعریف صورت مساله در تحلیل انجام میشود. نمی خواهم بحث را طولانی کنم .فقط این قضیه را خاطر نشان می کنم که اهمیت “تحلیل ” بقدری زیاد است که در خارج از کشور شرکتها ی تولیدکننده نرم افزار حتما داراری چندین تحلیلگر ماهر هستند که از ابتدا تا انتهای پروژه هدف پروژه را کنترل و مسیر انرا اصلاح میکنند.
بعنوان یک حاشیه می توان زمانبندی ۵ مرحله را نیز بصورت زیر ترسیم نمود که با مراجعه به کتابها و نرم افرارهای مختلف می توانید این نمودار را دقیق تر کنید .
الف ) تحلیل
“فهم مساله نیمی از حل مساله می باشد”
شما تاوقتی که خودتان ندانید چه می خواهید انجام دهید نخواهید توانست مساله را حل و بالطبع دیگر اعضای گروه را رهبری کنید .
پس قدم اول شناخت صورت مساله است .هدف از انجام این قدم را می توان پرداختن به ۴ موضوع زیر دانست
۱ تعیین اطلاعاتی که قابل مکانیزه کردن می باشد
۲ افرادی که لازم است با این ابزار(نرم افزارها) کار کنند.در پروژه های بزرگ این مسئله شامل سلسله مراتب اولویت افراد نیز می گردد
۳ انتخاب نمونه های اصلی برای کار روی انها(فرمها پرونده ها اسناد و غیره;;.)
۴ میزان گستردگی نمونه های انتخاب شده و همچنین کاهش میزان پیچیدگی نرم افزار در موارد کم اهمیت
برای انجام این کار راههای متععدی وجود دارد مانند :
• مصاحبه : با یک یا چند کارشناس مسلط به کار (هر چند درکی از کامپیوتر نداشته باشند) صحبت کنید . این کار را گاه لازم است بطور مداوم تکرار کنید تا مطمئن شوید که می دانید چه می خواهید .
• فرمهای نظر سنجی : ممکن است برنامه ای قبلا نوشته شده باشد و یا ذهن یک جامعه (منظور مجموعه ای از افراد است ) نسبت به یک مسئله روشن باشد ، بهتر است نظر انها را در مورد نواقص سیستم قبلی(حتی ممکن است سیستم قبلی یک سیستم دستی باشد) و یا پیشنهاد سیستم جدید بدانید .
• مرور انچه که هست : برخی موارد (بجز مواردی که یک نرم افزار خاصی وجود دارد ) می توانید با مراجعه به انچه انجام شده(نرم افزارهای قبلی) به بررسی نقاط ضعف و قوت نرم افزارها بپردازید و از این راه تحلیل خود را محکم تر کنید
• مشاهده عینی : بایستی بطور مداوم با حضور در محل روند کار وانچه گفته می شود را با انچه می دانید ترکیب و مقایسه کنید تا بتوانید به نکات ریز و ظریفی که وجود دارد پی ببرید . گاه نکته ای که از دید کارفرما بدیهی است از دید شما ناشناخته است
• عکسبرداری و فیلمبرداری و یا ضبط صوت : انسان هیچگاه نمی تواند به حافظه خود جهت یادآوری اتکا کند . بهتر است از این سه ابزار ساده و ارزان قیمت ( در مقایسه با نتایجی که بدست می آورید ) استفاده کنید تا در هنگام تحلیل بتوانید با مراجعه مکرر امکان خطا را کاهش دهید
• ثبت انچه بدست می اورید : مطالبی که شما جمع اوری میکنید دارای ارزش زیادی هستند . انها را بطور مداوم دسته بندی و یادداشت کنید . اینکار باعث می گردد تا اولا براحتی در مراجعه بعدی مطلب را پیدا کنید و ثانیا با حذف یک شخص خاص از پروژه (اخراج ، عدم تمایل به کار، بیماری و یا ;.) کل پروژه از کار نیفتاد
همانگونه که می بینید در این مورد این مساله نکات ظریف بسار زیاد است .
از جمله تجربیاتی که من در حین کار متوجه شدم اینست که وقتی من میتوانم بگویم یک تحلیل جامع و کامل ارائه کردم ویا در واقع صورت مساله را فهمیدم که بتوانم تک تک کارهای مشتری را در سیستم دستی بدون اشکال خودم انجام دهم .
البته در حین مراحل تحقیق چند نکته را از یاد نبرید
• پررو باشید : از سه عامل پول ، پارتی و پررویی اگر دوتای اول را ندارید حداقل سومی را داشته باشید . البته این به معنای بی ادب بودن نیست بلکه به معنای سمج بودن یا در اصطلاح ادبی “پشتکار داشتن ” برای دست یافتن به مطلب مورد نظر است
• ایجاد وحشت نکنید : با فیلمبرداری و ضبط صدا و یا حتی یادداشتها کاری نکنید که کارمندان احساس کنند شما درحال جمع اوری مدرک علیه او هستید
یک تحلیل گر علاوه بر ارائه انچه که وجوددارد باید بتواند راهکارهای اصلاح سیستم فعلی را نیز ارائه کند که به این مقوله در بخش بعدی خواهیم پرداخت
چگونه تحلیل اطلاعات و طراحی کنیم
در ادامه بحث قبل اکنون میرسیم به اینکه با نتایج مرحله قبل چه کنیم
مواردی که اکنون در اختیار ما هست عبارنتد از
• کلیه فرمهای ورودی و خروجی سیستم
• توضیحات مربوط به هریک از فرمها بصورت کامل
• نوارهای صوتی و تصویری احتمالی از مصاحبه ها
طراحی شامل قسمت های مختلفی است که می توان اولین قسمت انرا ترسیم وضعیت موجود و دسته بندی عنوان کرد
حال بترتیب عملیات زیر را انجام دهید
۱ <<<انچه در اختیار دارید را دسته بندی کنید
مثلا در مورد یک سیستم پرسنلی دسته ها می توانند بصورت : اطلاعات پرسنل، مدارک ، مرخصی ، مزایا و; باشند
۲<<<بر اساس دسته بندی اولیه خود نمودار کلی نظام را ترسیم کنید(System Narrative)
این نمودارها در واقع عملکرد سیستم فعلی را برای انجام کار نشان می دهند
۳<<< نمودار گردش داده(Data Flow Diagram یا DFD) را ترسیم کنید این نمودار می تواند به ما نشان دهد که دادهای خروجی و ورودی هریک از اجزاء چیست و وضعیت گردش انها به چه ترتیب است . در مورد ترسیم این نمودار می بایستی تمامی گردش کار بدقت ترسیم شود چرا که به عنوان یک نمودار عملیاتی بعدا مورد استفاده مکرر شما و مشتری خواهد بود
۴<<< نمودارهای DFD خود را از سطح صفر به سطح یک و ; ببرید. هر سطح نشانه داخلی تر بودن پردازش خواهد بود : مثال سطح ۱
ما اکنون کار مدل سازی سیستم را به صورت شماتیک انجام داده ایم و می دانیم اطلاعات خام بدست امده از بخش قبل چگونه با یکدیگر ارتباط دارند . اما هنوز در مورد اصلاح این سیستم و شروع طراحی کاری نکرده ایم . اکنون برای بررسی اطلاعات آماده می شویم .
پایگاهها
اصلی ترین منبع برای اطلاعات فرمهایی است که در یک سیستم رد و بدل می شوند.برای پردازش این فرمها می بایستی تمامی اطلاعات قید شده در انها را بصورت یک جدول لیست کنیم . بالای جدول نیز می توانیم نام را قید کنیم
مثال:
نکته
در هنگام بررسی Data ها متوجه خواهید شد که برخی مطالب دارای درجه اولویت بالاتری نسبت به برخی دیگر هستند . به عنوان مثال در همان مثال شماره تلفن دارای اهمیت بالایی نیست.
حال در قدم بعدی می توانید اطلاعات موجود در جدول را بصورت زیر در یک Data Catalog ثبت نمود . این کاتالوگ پیشنهادی است که اطلاح شده فرمهای مفصل و دست و پاگیر (ولی قدرتمند) اصلی (Data Dictionary)می باشد. در Data Dictionaryهای اصلی نه تنها همین مطالب که مطالب بیشتری مانند محلهای استفاده ، محدودیتهای محل و غیره را میتوان قید نمود با مراجعه به کتب طراحی می توانید به مطالب بیشتری دست پیدا کنید .
همچنین یک نام نیز برای پایگاه انتخاب کنید
Factor(پایگاه فاکتور فروش)
این طرح خام و اولیه پایگاه شماست
چگونه تحلیل اطلاعات و طراحی کنیم ۲
در قسمتهای قبلی گفتیم که چگونه می توان به طرح خام از پایگاه رسید
حال به این مسئله می پردازیم که چگونه می باید ارتباط بین این طرههای خام را برقرار کرد
در کل سه نوع ارتباط بین پایگاهها وجود دارد
۱ یک به یک : (One To One) ارتباطی است که به ازای یک رکورد در یک پایگاه فقط و فقط یک رکورد در پایگاه مرتبط موجود یاشد
مثال : یک مشتری یک سفارش دارد
۲ یک به چند : (One To Many) ارتباطی است که به ازای یک رکورد در یک پایگاه حداقل یک یا بیشتر رکورد در پایگاه مرتبط موجود یاشد
مثال : یک سفارش چند قلم کالا دارد
۳ چند به چند : (Many To Many) ارتباطی است که به ازای یک رکورد در یک پایگاه حداقل یک یا بیشتر رکورد در پایگاه مرتبط موجود یاشد و بالعکس
مثال : چند مشتری چند سفارش دارند
شکل زیر نحو ترسیم اینگونه ارتباط ها را نشان می دهد
اما تشخیص و ترسیم رابطهای کلی نظام مستلزم طی کردن قدم به قرم مراحل زیر است :
• ابتدا تمامی رابطه های واقعی موجود در سیستم را تک به تک بنویسید
• شکل هریک از رابطه ها را بکشید
• اشکال را برهم منطبق کنید تا موجودیتهای تکراری حذف شوند(شکل کلی ارتباط)
• از طریق تحلیل شکل کلی ارتباط های اضافی را حذف کنید
یک مثال : نظام دانشجو ، استاد ، درس ، برنامه درسی
رابطه ها : (دو قدم اول)
تکمیل (دو قدم دوم)
چگونه تحلیل اطلاعات و طراحی کنیم ۳
تا این مرحله ما یاد گرفتیم که چگونه روند کار سیستم را نشان دهیم و چگونه پایگاههای موجود را از فرمها بصورت خام تهیه کنیم
قبلا گفته شد که می بایستی از پیچیدگی سیستم بکاهیم . این وظیفه را نرمالایز(Data Normalaization) انجام می دهد.
بترتیب قدمهای زیر را انجام دهید
۱) داده های تکراری را از داده های ثابت جدا کنید و در پایگاههای جداگانه بگذارید
مثال از فاکتور خرید زیر می توان ۲ پایگاه را ایجاد کرد
۲) کلید شناسایی تهیه کنید . تهیه کلید شناسایی رکورد دارای روشهای بسیار متنوعی است که اگر توانستم بعدا در این زمینه توضیحات بیشتری خواهم داد
اما روش کلی برای ساخت کلید را می توان بصورت زیر عنوان نمود : پیدا کردن فیلدیا ترکیبی از فیلدها که در هیچ حالتی نتواند تکرار داشته باشد . بعنوان مثال فیلد نام خریدار نمی تواند کلید باشد اما شماره فاکتور یک پیشنهاد برای کلید پایگاه اول است.و در پایگاه دوم میتوان ردیف را پیشنهاد نمود . اشکالی که در مثال وجود دارداینست که در پایگاه دوم ردیف تکراری خواهد بود برای حذف این تکرار می بایستی ترکیب این فیلد را با شماره فاکتور پایگاه اول در نظر گرفت . بنابر این یک مجموعه Master / Detail خواهیم داشت . شکل زیر این مسئله را روشن می کند
۳) داده های قابل استنتاج و غیر کلیدی را حذف کنید ( Calculated Fields)
این گونه داده ها داده هایی هستند که مثلا از جمع مقادیر یک فیلد ، تفاضا ۲ فیلد و یا محاسبه فرمولی یک فیلد دیگر(تاریخ تولد و سن یا تاریخ استخدام و سابقه کاری) بدست می آید .
در مثال فوق مبلغ کل فاکتور در پایگاه اول از این دسته فیلدها است . بنابر این پایگاه را بصوت زیر تکمیل می کنیم
۴) دادههایی که در چند پایگاه تکرار میشوند را حذف کنید (LookUp Fields)
ممکن است شما برای مشخصات مشتریان خود بخواهید یک پایگاه جداگانه تعریف کنید و یا حتی بخواهید فروشندگان خود را به تفکیک مشخص کنید در این صورت لازم نیست در هر رکورد پایگاه اول تمامی مشخصات انهارا قید کنید ، بلکه کافی است کد مربوطه را به این پایگاه منتقل کنید . شکل زیر تمامی پایگاههای تشکیل شده را نشان میدهد
حال پایگاه شما در حالت کامل نرمالایز قرار دارد
گفتن چند نکته شاید بد نباشد :
۱) بهنگام طی کردن مرحله ۳ می بایستی در مورد فیلدهایی که قابل استنتاج هستند ولی استنتاج انها زمان زیادی می طلبد قدری با احتیاط رفتار کرد . این مساله به نحوه استنتاج شما ارتباط مستقیمی دارد .شاید توضیحات زیر تا حدودی قضیه را روشنتر کند :
• استنتاج زیر ۱۰۰ رکورد با حلقه While را شاید بتوان تحمل کرد، هر چند پیشنهاد نمی شود
• ولی این روش را نمی توان در مورد بالاتر از ان روش درستی نامید . بهتر است با یک دستور SQL این زمان را در مورد تعداد بالاتر کاهش داد .
• اما در برخی موارد دستورات SQL نه تنها در مورد تعداد بالا بلکه در مورد پیچیدگی دستور نیز دچار مشکل و بالطبع زمانبر می شوند در این حالت بهتر است از روشهای بهینه سازی دستورات SQL (تعریف Index ها، تودرتو کردن دستورات و; )استفاده کنید
• اگر با روشها ی فوق به نتیجه نرسیدید و یا علاقه مند به وارد شدن به این مقولات نیستید بهتر است اصلا این فیلد را حذف نکنید
۲) در مورد مرحله ۲ می بایستی تجربه و نگاه خوبی به مساله داشته باشید .
• ممکن است در برخی موارد کلیدی بظاهر یکتا باشدولی بعدا متوجه شوید که یکتا بودن فقط در یک دوره خاص است . این مساله تمامی طراحی های شما را بهم خواهد ریخت .
• ممکن است برخی موارد کلید ها را بیش از پیچیده کنید . مثلا ترکیب چند فیلد برای کلید بودن .این مساله علاوه بر احتمال کاهش سرعت در فیلدهای کلیدی بزرگ باعث خواهد شد که اگر برخی از موارد مورد نیاز شما در حالات خاص وارد نشود شما در تولید کلید دچار مشکل شوید
چگونه تحلیل اطلاعات و طراحی کنیم ۴
انچه که تا اینجا قید شد تنها طراحی بخش داده ها بود . ما هنوز چند قسمت دیگر را در پیش رو داریم . به شکل زیر دقت کنید
اگر شمای کلی یک سیستم را شامل ۳ بخش فوق بدانیم ما هم اکنون بخش اول انرا تهیه کردیم .
برنامه ها در بخش دوم قرار دارند که با UIمتفاوت هستند . برنامه ها در هنگام طراحی صرفا یکسری کدهای بدون وابستگی به زبان خاص(Pseudo Codes )می باشند . شاید اطلاق شرایط محیطی به این برنامه ها برای جلوگیری از اشتباه مفید باشد .
برای نوشتن این شرایط طراحان معمولا از کلمات اشنایی نزدیک به معانی اصلی استفاده می کنند .نمونه این کلمات عبارتند از
مثال :
Read No
Read K
If No > 100
For 1 to No
{ k = k Mod 10
Print K
}
Else
S = Add (No,5)
اما چگونه از این کد ها می توان استفاده نمود
فرض کنید در برنامه فاکتور می خواهید حتما یکسری تصمیم گیری ها قید و یا محاسباتی انجام شود . به مثالهای زیر توجه کنید
۱) تاریخ فاکتور به ماقبل بر نمی گردد
If Input Date < Current Date
Print “Error in Date”
۲) جمع حاصل ضرب فی در تعداد در مبلغ کل ریخته شود
S = 0
For All rows
S=S+Fi * Numner
Monye = S
۳) تعداد درخواستی باید کمتر از میزان موجود باشد
If ReqNumber< Remind in stock
………….
Else
Message “Not Enough In Stock “
اما چرا نیاز است که این مطالب را به این صورت بنویسیم . زیرا که اولا امکان خواندن برنامه ها بدون تلاش در فهم متغیر ها امکان پذیر می گرددو ثانیا اهداف برنامه ها را می توان بسادگی پیدا کرد
اما در برخی موارد در نوشتن این برنامه ها در شرطهای تودر تو دچار مشکل می شویم در اینجا بسادگی می توانیم از درختهای تصمیم گیری استفاده کنیم .
بعنوان مثال بجای نوشتن این گونه کد ها
If ………..
……
Else
If ………..
……
.
.
.
می توان از درخت زیر استفاده کرد
تا اینجا توانستیم ۲ قسمت از ADT را تکمیل کنیم
۱) پایگاههای اطلاعاتی
۲) شرایط محیطی کار روی اطلاعات (برنامه ها بدون وابستگی به زبان)
حال بایستی به سراغ قسمت سوم یعنی رابط کاربر(User Inter Face) برویم . پیش شرط ان بررسی و شناخت محیط پیاده سازی است . این به معنای بررسی سخت افزار قبل از پیاده سازی نرم افزار می باشد.
برای این کار بایستی به چند سوال پاسخ دهید
۱ ورود اطلاعات به کامپوتر و احتمالا تبادل اطلاعات با دیگر کامپیوتر ها چگونه است
۲ نحوه گرفتن پشتیبان از اطلاعات به چه ترتیب است
۳ نحوه دریافت خروجی های برنامه ما توسط کاربر چگونه است
۴ چه کامپیوتر (هایی ) مورد نیاز است که برای پاسخ به ان بایستی به سوالات زیر توجه کنید
a. حجم عملیات به چه میزان می باشد
b. حجم اطلاعاتی فوق در بهترین و بدترین شرایط چه زمانی به می دهد
c. فعالیت های ما (Process های برنامه )به چه میزان زمان نیاز دارند
d. زمان بازیابی اطلاعات ما چقدر است
همانگونه که مشاهده می کنید
• این سوالات را در مورد یک سیستم ساده می توان براحتی جواب داد اما در مورد سیستمهای وسیع قدری باید دقت کرد . هرچند توصیه می کنم هرگز در جایی که یک شبکه وجود دارد هیچ سیستمی را به صورت تک کاربره در نظر نگیرید ، چون بعد از مدتی یادشان می اید که به شما درمورد شبکه بودن ان قبلا تذکر داده بوده اند!
• در مورد سیستمهای وسیع (مجموعه نرم افزارها تحت شبکه و یا ۱ نرم افزار که روی چند سیستم کار میکند) شاید دانستن چند تعریف باعث شود مسائل را بهتر متوجه شوید
۱ شبکه ها محلی (LAN = Local Area Network) شبکه هایی هستند که معمولا در یک ساختمان و یا محوطه کوچک پیاده سازی می شوند.
۲ شبکه های وسیع (WAN = Wide Area Network) شبکه هایی هستند که وابستگی جغرافیایی در انها معنی ندارد
۳ میزبان (Host/Server) : به کامپیوتری می گویند که وظیفه نگهداری اطلاعات را برعهده دارند . این کامپیوتر ها معمولا از قدرت پردازش بالاتری برخوردارند
۴ میهمان (Guest / Client ) کامپیوتر هایی که از داده های موجود در سرور استفاده / حذف / تغییر ویا اضافه می کنند
همچنین در مورد نحوه اتصال کامپیوتر ها به یک دیگر نیز با توجه به اشکال زیر می توان برخی از مفاهیم را شناسایی کرد
کامپیوتر آبی همان میزبان و مشکی میهمان است
البته ممکن است که چند شبکه به هم متصل باشند
تمامی مطالبی که گفته شد برای این بود که بگوییم
“وظیفه شما به عنوان یک تحلیل گر و طراح ایجاب می کند که شما بتوانید ابتدا طرح شبکه را به عنوان کسی که شناخت جامع و کاملی از نرم افزار دارید به مسئولان پیاده سازی شبکه پیشنهاد دهید “
اما چگونه ؟
۱ ابتدا به مساله پایگاهها با دقت توجه کنید . برخی از پایگاهها را لازم است در کامپیوتر میهمان و برخی را در کامپیوتر میزبان قرار دهید . نحوه این تقسیم بندی را بایستی با توجه به
a. میزان زمان مورد نیاز برای پردازشها
b. اهمیت دادهها
c. اشتراک داده ها
d. رده بندی داده ها
مشخص نمود .
فرض کنید در یک سیستم برخی از پایگههای شما موقتی هستند و نتیجه انها در یک سیستم دیگر ثبت می شوند و یا لازم است نتیجه یکسری از مقادیر در اختیار دیگران قرار گیرد . هردو این مثالها پایگاههایی را نشان می دهند که می توانند روی کامپیوتر های میهمان قرار گیرند
۲ به مساله پردازشها توجه کنید . این مساله ارتباط مستقیمی با محل نگهداری اطلاعات پایگاهها دارد . برخی از پردازشها را باید روی کامپیوتر میهمان انجام داد . مثلا نتیجه گیری از دادههای وارد شده در کامپیوتر اپراتور برای ارسال به کامپیوتر میزبان . اما برخی دیگر را می بایستی در کامپیوتر میزبان انجام داد.
یک مثال ساده می تواند به شما کمک کند . فرض کنید می خواهید جمع کل یکسری داده را محاسبه کنید . این پردازش بایستی در نزدیکترین محل به کامپیوتر نگهداری ان داده ها باشد . اگر داده ها در کامپیوتر میزبان هستند ، در انجا و باالعکس . اینکار باعث کاهش ترافیک شبکه و سرعت پاسخگویی می شود .اما اگر این کار امکان پذیر نیست بایستی مشتری هزینه بیشتر برای شبکه متحمل شود
۳ کنترل ، نه تنها به مفهوم امنیت که به معنای تقسیم کار هم می باشد . فرض کنید در یک سیستم ، دادههای ورود و خروج اجناس را قرار است ثبت کنند . ایا بهتر است یک کامپیوتر (برای ثبت اطلاعات) در محل قرار دهند و یا می توان اطلاعات را به یک قسمت دیگر برای ثبت فرستاد ؟ و ایا بهتر است بانک اطلاعاتی در محل باشد و سپس با دیسکت (یا هر انتقال Off Line دیگر ) به کامپیوتر مادر منتقل شود و یا انتقال باید همزمان ثبت باشد؟ ایا امنیت (چه در مورد دستکاری اطلاعات Off line و چه در مورد ثبت اشتباه Online ) تامین می شود ؟ و سوالات دیگری که با تجربه و مطالعه می توان جواب انها را پیدا کرد
برای پیاده سازی راههای متعددی وجود دارد .من در ادامه این نوشته ها راهی را که بنظرم دارای کمترین اشکال وکد وهمچنین بیشتری بازه است را خواهم گفت .
اما قبل از آنکه بخواهید شروع به نوشتن برنامه ها کنید چند نکته کوچک و پر اهمیت را برای دوستانی که نمی دانند عنوان می کنم .
تقسیم بندی پایگاهها :
پایگاهها همیشه یک نوع نیستند. بلکه دارای تقسیم بندی برحسب نوع عملکرد دارند. این تقسیم بندی (که تقریبا همجا یکسان است) بصورت زیر می باشد
۱ پایگاههای اصلی (Master): پایگاههایی هستند که اطلاعات مادر رانگهداری می کنند . مثلا پایگاه اطلاعات پرسنل و یا اطلاعات دانش آموزان
تشخیص : این نوع پایگاه داراری تغییرات کمی هستند مثلا تصحیح نام یا تاریخ استخدام و برخی از فیلد ها هرگز تغییر نمی کنند . مثلا شماره شناسایی
۲ پایگاههای ثبت تغییرات (Detail) : پایگاههایی که تغییرات مرتبط با پایگاههای مادر را ثبت می کنند. مثلا ورود و خروج کارمندان و یا نمرات دانش آموزان
تشخیص : این نوع پایگاه دارای تغییرات وسیعی می باشد و بیشترین کار کاربر روی فعالیت این نوع پایگاه استوار است
۳ پایگاههای مرجع (Reference) : اطلاعاتی که در این نوع پایگاهها ثبت می شوند تقریبا ثابت هستند. مثلا پایگاه واحدهای اندازه گیری یا نحوه محاسبه بیمه و مالیات
نکته : این نوع پایگاهها را نباید با پایگاههای اصلی اشتباه گرفت و همچنین در برخی از موارد این پایگاهها فاقد کلید اصلی هستند
۴ پایگاههای راکد (Archive) : پایگاههایی برای نگهداری اطلاعات دوره های قبلی کار سیستم هستند. مثلا بایگانی سالهای مالی و یا سوابق افراد
نکته : در بیشتر موارد اطلاعات موجود در این پایگاهها می بایستی غیر قابل تغییر باشند. همجنین در مورد نحوه تشکیل این پایگاهها می توان به ۲ صورت زیر عمل نمود
• یک فایل ثابث که اطلاعات هردوره به این فایل اضافه می شود
• از طریق تقسیم بندی محل نگهداری (دیسکها ، شاخه ها و ; ) این اطلاعات را برحسب دوره از یکدیگر منفک نمود
۵ پایگاه های پشتیبان (Back Up) : پایگاههایی برای پشتیبانی از پایگاههای اصلی یا تغییرات هستند و در صورت خرابی فایل ها اصلی مورد استفاده قرار می گیرند .
نکته : انواع روشهای زمانبندی برای پشتیبان گیری وجوددارد . به عنوان مثال روش پدربزرگ که شکل زیر میتواند تاحدودی به نحوه کار ان اشاره کند.
توجه داشته باشید که شدت رنگ میزان خطر از دست رفتن اطلاعات را مشخص می کند
۶ فایل یا پایگاه ثبت تغییرات (Transaction Log) : پایگاه و یا فایلهایی که هرگونه تغییرات در دیگر انواع پایگاهها را ثبت می کنند و بهنگام بروز اشکال ، کاربر می تواند پایگاهها را به زمان پشتیبان گیری برگردانده و از طریق این فایلها تمامی عملیات را مجدد اعمال نماید
نکته : چنانچه شما سیستمی را مورد استفاده قرار می دهید که تعدادی اپراتور در ان ورود و یا اصلاح اطلاعات انجام می دهند ، اینگونه فایلها جزء مهمترین دسته فایلهایی هستند که به شما می توانند کمک کنند.
روشهای بازیابی اطلاعات :
۱ روش متوالی (Physical Sequential File Access)
در این روش اطلاعات به ترتیب و رکورد به رکورد خوانده و یا نوشته می شوند
۲ روش متوالی منطقی (Logical Sequential Access)
در این روش کلیه رکورد ها بر اساس یکی از فیلد مرتب شده است و پردازش رکورد به رکورد انجام می شود
۳ روش دسترسی مستقیم (Direct Access/Random Access)
در این روش دستیابی به یک رکورد فقط از طریق کلید انجام می شود
انواع بانکهای اطلاعاتی :
۱ طبقاتی (Hierarchical)
در این روش هر پایگاهی یا بصورت Parent و یا Child است . دستیابی به اطلاعات حتما می بایستی از ریشه شروع شود . مزیت این نوع مشابهت ان با طبیعت سازمانهای اطلاعات است
شکل زیر این نوع را نمایش می دهد
۲ شبکه ای (Network)
در این روش هر پایگاه عضوی (Member) از یک پایگاه دیگر(Owner) است . این روابط را مجموعه ها (Set) تعریف می کنند . از انجا که هر پایگاهی می تواند داراری این رابطه باشد شکل ناشی از این نوع پایگاهها دارار انعطاف بسیار زیادی است . برای پیدا کردن یک رکورد در این مجموعه ابتدا باید به سراغ مالک مجموعه و از طریق ان بسراغ عضو رفت . به شکل زیر دقت کنید
۳ نوع رابطه ای (Relational)
در این روش برخلاف دو روش قبل رابطها قطعیت ندارند ، بلکه با روابط ریاضی تعریف می شوند . نمونه این پایگاهها SQL است .در این روش میتوان از پایگاههای اصلی هر نوع جداولی که اطلاعات را به تفکیک یکسری صفات (فیلد ها) نگهداری می کنند ایجاد و روابط بین این جداول را از طریق دستوراتی مانند Select وJoin و; برقرار نمود .توانایی بالای این نوع پایگاهها در ایجاد جداول ، ارتباط بین جداول و یا با پایگاهها و مرتب سازی قدرت انعطاف بسیار بالایی را به این نوع بانکهای اطلاعاتی می دهد. شکل زیر را ببینید
در پرانتز
آنچه که تا اینجا عنوان شد حاصل دروس دوران دانشگاه ، کتب مختلف طراحی و تجربه های شخصی بنده بود . کتب مختلفی بعنوان مرجع استفاده شدند که کتاب “تحلیل و طراحی نظامهای کامپیوتری ” تالیف دکترمحمود جهانی برای دسته بندی وترتیب مطالب و برخی مثالها بیشترمورد استفاده قرار گرفت. خواندن این کتاب را به همه توصیه می کنم و از همینجا از ایشان تشکروقدردانی می نمایم . در ادامه مطلب از مراجع دیگر استفاده ومعرفی خواهند شد.
شروع
با یک جمع بندی از قبل که انجام دهیم ، می توانیم به این نکته برسیم که ما برنامه را از نظر تحلیل و طراحی آماده کردیم اما در زمان پیاده سازی نیاز است که به چند سوال مهم جواب دهیم
۱ برنامه را چگونه پیاده کنیم
۲ در چه محیطی
۳ با چه ابزاری
۴ در چه مدت زمان
۵ چه نوع تکنیکهای برنامه نویسی استفاده کنیم
بنظرمن جواب این سوالها به ۲ سوال مهم از خود شما برمی گردد :
۱ با چه محیطهایی آشنا هستید
۲ تا چه حد به محیطهای مذکور مسلط هستید
اما بطور کلی از دید من جواب سوالهای فوق بدین صورت می باشد
۱ سه نوع پیاده سازی وجود دارد
a. پیاده سازی از طریق مدل سازها مانند Rational Rose/Modal Maker که در این حالت بایستی از سالها تجربه در زمینه تحلیل ، طراحی و برنامه نویسی برخوردار باشید تا بتوانید هم به سادگی برنامه ای را تولید هم سریعا خطاهای احتمالی سیستم را بررسی و رفع کنید . انشاا; وقتی این بحث خاتمه پیدا کرد مقالاتی راجب به این مطلب خواهم نوشت .
b. پیاده سازی از طریق الگوهای آماده مانند Microsoft Access که در این حالت نیازی آنچنانی به دانستن علوم کامپیوتر احساس نمی شود . شما می توانید با یک دوره آموزش ۱۰ ساعته به تهیه و تولید هرنوع برنامه بانک اطلاعاتی بپردازید . این روش بنابر قدرتهای خوبی که در اختیار کاربر (و یا تولید کننده نرم افزار) قرار میدهد، داراری محبوبیت فراوانی است . اما این نوع برنامه ها نیز دارای مشکلات مخصوص به خود هستند. درمورد این روشها نیز می توانید مطالب زیادی (و یا افراد زیادی ) پیدا کنید
c. پیاده سازی از طریق کد نویسی (برنامه نویسی) این روش که زمان زیادتری (به نسبت ۲ روش قبل )نیز طلب می کند مورد بحث ما است که باالطبع توضیح کامل در ادامه بحث داده خواهد شد
- لینک دانلود فایل بلافاصله بعد از پرداخت وجه به نمایش در خواهد آمد.
- همچنین لینک دانلود به ایمیل شما ارسال خواهد شد به همین دلیل ایمیل خود را به دقت وارد نمایید.
- ممکن است ایمیل ارسالی به پوشه اسپم یا Bulk ایمیل شما ارسال شده باشد.
- در صورتی که به هر دلیلی موفق به دانلود فایل مورد نظر نشدید با ما تماس بگیرید.
یزد دانلود |
دانلود فایل علمی 