جزوه تایپ شده میدان ها و امواج
استاد سهیل آزادی نیا خلاصه کتاب دانشگاه علمی کاربردی استاد ملکپور دانشگاه صنعتی شریف کاردانی کارشناسی ارشد غلامدانشگاه سراسری آزاد دانلود
«)) ؟» : «؟»
-؛ ؟ ؟ ً ؟ ؛ ؟ ؟ ()، ؟ :« () ً » : «؟» : «ً » : « ؟».: « » : « ؟» : « » : « ؟»
– « »
«؟»
: «؛ »
: «؟»
«؛ »
«»
: «- »
« ؟»
: « ً »
؛ ؛()، ()، () ؛ ً ؛ ؛؛ () ً () ( ) ؛ (). ً ؛ -که مهندسی نرم افزار نامیده میشود. برای ساخت یکنرم افزار که پاسخگوی چالش های قرن بیست و یکم باشد، باید به چند نکته دقت کنید:
• نرم افزار، عملاً در هر جنبه از زندگی ما تعبیه شده است.تعداد افراد علاقهمند به ویژگی ها و عملکردهای ارائه شده توسط یک برنامهی خاص رشد چشمگیری داشته است.برای درک مشکلات موجود، باید قبل از ایجاد یک راهحل نرم افزاری، به صورت یکپارچه تلاش شود.
• هر ساله، مقررات موردنیاز در فناوری اطلاعات توسط افراد، مشاغل و دولتها پیچیدهتر می شود. امروزه افراد زیادی، مشغول به طراحی برنامههای کامپیوتری هستند. نرم افزار پیچیده ای که زمانی در یک محیط کامپیوتری مستقل و قابل پیش بینی پیاده سازی شد، امروزه در همه زمینهها، از لوازم الکترونیکی مصرفی گرفته تا ابزارهای پزشکی و خودروهای اتوماتیک به اجرا در آمده است.طراحی، به یک فغالیت اساسی تبدیل شده است.
• افراد، مشاغل و دولتها روز به جزوه میدان ها و امواج بیشتر در تصمیمگیریهای هدفمندانه، فعالیتهای روزانه و نظارتهای خود، به نرم افزارها تکیه میکنند.در صورت بروز اختلال در این نرم افزارها، مردم و شرکت های بزرگ می توانند متحمل مشکلاتی از آسیبهای جزئی گرفته تا عواقب فاجعه بار شوند.بنابراین نرم افزارها باید از کیفیت بالایی برخوردار باشند.
• چنانچه ارزش درک شدهی یک برنامه خاص افزایش یابد، احتمالاً تعداد کاربران و دوام آن نیز بیشتر میشود و متعاقباً تقاضا برای سازگاری و ارتقای آن نیز بیشتر خواهد شد.نرم افزار باید قابل نگهداری و تعمیر باشد.
با توجه تمام نکات فوق، نرم افزار در هر شکل و میدان ها و امواج کاربرد، باید مهندسی شود؛ این مسئله ما را به مبحث مهندسی نرم افزار در این کتاب سوق میدهد.
ماهیت نرم افزار
امروزه، نرم افزار به دو منظور؛ یعنی هم به عنوان یک محصول و هم ابزاری جهت ارائهی یک محصول، به کار میرود.به عنوان یک محصول، ظرفیت کامپیوتری موجود در سخت افزار کامپیوتر، یا به طور گستردهتر، شبکهای از کامپیوترهای قابل دسترسی با سخت افزار داخلی را محقق میسازد.نرم افزار در تلفن همراه، صفحهی نمایش کامپیوتر، کامپیوتر مرکزی یا خودروهای اتوماتیک، به عنوان انتقال دهندهی اطلاعات، به تولید، مدیریت، به دست آوردن، اصلاح، نمایش یا انتقال اطلاعات میپردازد؛ این اطلاعات میتوانند به سادگی یک واحد بیت و یا به پیچیدگی ارائهی مفاهیم تکمیلی مربوط به دادههای به دست آمده از دهها منبع مستقل باشند؛ و سپس این اطلاعات در دنیای واقعی پوشش داده میشوند.نرم افزار، به عنوان ابزار ارائه دهندهی یک محصول، مبنای کنترل کامپیوتر(سیستم عاملها)،تبادل اطلاعات(شبکهها) و طراحی و کنترل سایر برنامهها(ابزارها و محیطهای نرم افزاری)قرار میگیرد. نرم افزار، مهمترین محصول زمان ما یعنی اطلاعات را ارائه می دهد؛ دادههای شخصی( مثل معاملات مالی افراد) را تغییر میدهد تا در محیط محلی قابل استفاده باشند؛ اطلاعات مربوط به مشاغل را جهت ارتقای رقابتها، مدیریت میکند؛ دری به شبکههای اطلاعاتی در سراسر جهان(مثل اینترنت) باز میکند و تمام ابزارهای کسب اطلاعات را فراهم میکند.همچنین میتواند ابزاری ارائه کند که حریم شخصی افراد را تهدید کند و جهت سوءاستفاده و انجام اعمال مجرمانه به کار رود.
در 60 سال اخیر، نقش نرم افزارهای کامپیوتری تغییر چشمگیری داشته است. پیشرفت های چشمگیر در عملکرد سخت افزار، تغییرات بسیار در معماری های کامپیوتری، افزایش چشمگیر حافظه و ظرفیت ذخیرهسازی، و طیف گسترده ای از گزینه های ورودی و خروجی غیرمتداول، همگی منجر به پیشرفت و پیچیدهتر شدن سیستمهای کامپیوتر محور، شدهاند.پیشرفت و پیچیدگی میتواند منجر به نتایج خیره کننده و موفقیت آمیز یک سیستم شود، اما از طرفی میتواند مشکلاتی برای طراحان و پشتیبانان سیستمهای پیچیده ایجاد کند.امروز، یک صنعت نرم افزاری عظیم، به عاملی مهم در اقتصاد جهان صنعتی تبدیل شده است.تیمهایی از متخصصان نرم افزار، که هر یک میدان ها و امواج یک بخش از فناوریهای موردنیاز جهت ارائهی یک برنامهی پیچیده متمرکز هستند، جایگزین تنها برنامه نویس دورهی قبلی شده جزوه میدان ها و امواج.با این حال، سؤالاتی که راجع به سیستمهای کامپیوتر محور پرسیده میشود، مشابه با سؤالاتی است که در مورد برنامه نویس قبلی پرسیده میشد
دانلود جزوه میدان ها و امواج رایگان خلاصه کتاب پی دی اف pdf
• چرا اتمام کار نرم افزار اینقدر طولانی است؟
• چرا هزینهی طراحی اینقدر بالا است؟
• چرا قبل از ارائهی نرم افزار به مشتری، نمیتوان به تمام خطاهای احتمالی پی برد؟
• چرا ما این همه وقت و تلاش صرف حفظ برنامههای موجود میکنیم؟
• چرا همچنان در سنجش میزان پیشرفت، حین توسعه و حفظ نرم افزار، مشکل داریم؟
موارد فوق و بسیاری دیگر از سؤالات در زمینهی نرم افزار و طراحی آن، سبب به کار گیری مهندسی نرم افزار میشود.
1-1-1 تعریف نرم افزار
امروزه بسیاری از متخصصین و به طور کلی بیشتر افراد تصور میکنند که درک درستی از نرم افزار دارند.اما آیا واقعاً اینطور است؟شرح درسنامهای نرم افزار، به این صورت است:
نرم افزار عبارت است از: 1) دستورالعمل هایی(برنامههای کامپیوتری)، که قابلیتها و عملکرد موردنیاز را ارائه میدهند؛ 2) ساختمان دادهها که برنامهها را قادر میسازد تا اطلاعات را بر حسب نیاز دستکاری کنند؛ 3) اطلاعات توصیفی به دو صورت نسخهی چاپی و انواع مجازی که طریقهی عملکرد و استفاده از برنامه ها را توضیح میدهد.بدون شک تعاریف کاملتری نیز میتوان ارائه داد.اما یک تعریف رسمیتر، کمکی به درک بهتر شما از نرم افزار نمیکند؛ بلکه باید به ویژگیهایی پرداخت که نرم افزار را از دیگر ساختههای بشر متمایز میکند.نرم افزار، بیش از آنکه یک سیستم فیزیکی باشد، یک سیستم منطقی است؛ بنایراین نرم افزار یک ویزگی اساسی دارد که آن را به طور قابل توجهی از سخت افزار متمایز میکند: نرم افزار “فرسوده” نمی شود.شکل 1-1، میزان خرابی سخت افزار را به عنوان تابعی از زمان نشان میدهد. این رابطه، که اغلب “منحنی وانی شکل” نامیده می شود، نشان می دهد که سخت افزار در اوایل عمر خود از خرابی نسبتاً بالایی برخوردار است(این خرابی ها اغلب به نقص طراحی یا ساخت مربوط می شود)؛ نقص ها اصلاح می شوند و میزان خراب برای مدتی به سطح پایداری کاهش می یابد(امیدواریم که این مقدار، کم باشد).با گذشت زمان، خرابی
مجدداً افزایش می یابد، زیرا اجزای سخت افزار تحت تأثیر تجمعی از گرد و غبار، لرزش، استفادهی نابجا، درجه حرارت شدید و بسیاری دیگر از اختلالات محیطی قرار میگیرد.به زبان ساده، سخت افزار شروع به فرسودگی می کند.
نرم افزار، تحت تأثیر عوامل جزوه میدان ها و امواج که سبب فرسودگی سخت افزار می شوند، قرار نمیگیرد. بنابراین، اصولاً منحنی میزان خرابی نرم افزار، به شکل یک منحنی “ایدهآل” میباشد که در شکل 2-1 نشان داده شده است. نقصهای کشف نشده منجر به افزایش خرابی در اوایل عمر یک برنامه میشوند.با این حال، با اصلاح این نواقص، منحنی، مطابق شکل به حالت صاف در میآید.منحنی ایدهآل، یک ساده سازی بیش از حد و واقعی از مدلهای خرابی موجود برای نرم افزار است.بنابراین کاملاً واضح است که نرم افزار فرسوده و کهنه نمیشود.اما میتواند خراب شود.میدان ها و امواج تناقض را میتوان با در نظر گرفتن منحنی موجود در تصویر 2-1، توضیح داد.در این شکل، تغییرات 3 نرم افزار بر حسب زمان نشان داده شده است.همزمان با ایجاد تغییرات، احتمالاً خطاهایی رخ میدهد که سبب افزایش ناگهانی خرابی میشود که این موضوع در “منحنی موجود” (در شکل 2-1)، قابل مشاهده است.
قبل از بازگشت منحنی خرابی به حالت پایدار، تغییر دیگری ایجاد میشود که مجدداً منحر به افزایش ناگهانی خرابی خواهد شد.به تدریج، حداقل میزان خرابی شروع به افزایش می کند؛ در این حالت، نرم افزار به دلیل تغییرات ایجاد شده، در حال خراب شدن است.نرم افزار و سخت افزار، در بحث فرسودگی تفاوت دیگری نیز دارند؛ وقتی یک بخش از سخت افزاری فرسوده می شود، با یک قطعهی یدکی جایگزین می شود، اما در نرم افزار قطعهی یدکی وجود ندارد.هر خرابی نرم افزار، بیانگر یک خطا در طراحی، یا فرآیند ترجمهی طرح، به کد اجرایی ماشین، میباشد. بنابراین ، تعمیر و نگهداری نرم افزار که تغییرات لازم را جزوه میدان ها و امواج می کند، به مراتب پیچیدگی بیشتری نسبت به تعمیر و نگهداری سخت افزار دارد.
1-1-2 دامنهی کاربرد نرم افزار
امروزه، هفت دستهی گسترده از نرم افزارهای کامپیوتری، دائماً مهندسین نرم افزار را با چالشهایی روبرو میکنند:
نرم افزار سیستم: مجموعه ای از برنامهها که جهت سرویس دهی به برنامه های دیگر طراحی شدهاند. برخی از نرم افزارهای سیستم(به عنوان مثال مؤلفان، ویرایشگران و برنامه های کاربردی مدیریت فایل)، علیرغم پردازش پیچیده، ساختارهای اطلاعاتی مشخصی دارند.سایر برنامه های سیستمی(به عنوان مثال، اجزای سیستم عامل، درایورها، نرم افزار شبکه سازی و پردازنده های ارتباط از راه دور)، عمدتاً داده های نامشخص را پردازش می کنند.
نرم افزار کاربردی: برنامه های مستقل، که یک نیاز خاص تجاری را برطرف می کنند.برنامههای کاربردی در این زمینه، با پردازش دادههای تجاری یا فنی، امور تجاری یا تصمیم گیریهای مدیریتی/فنی را تسهیل میکنند.
نرم افزار مهندسی / علمی: مجموعهی وسیعی از برنامههای “میدان ها و امواج عدد(برنامههایی با توان محاسباتی بالا)”، یا برنامههای تحلیل دادهها، از نجوم گرفته تا آتشفشان شناسی، از تجزیه و تحلیل کشش مستقل گرفته تا دینامیک دایرهای، از طراحی کامپیوتری تا روند سرمایهگذاری کاربران، و از تجزیه و تحلیل ژنتیکی تا علم هواشناسی را شامل میشود.
نرم افزار جاسازی شده: در داخل یک محصول یا سیستم قرار دارد و جهت پیاده سازی و کنترل دادهها و کارکرد برای کاربر نهایی و خود سیستم، به کار میرود. نرم افزار جاسازی شده می تواند عملکردهای محدود و پیچیدهای(به عنوان مثال، کنترل صفحه کلید اجاق مایکروویو) را انجام دهد، یا قابلیت عملکرد و کنترل قابل توجهی فراهم کند(به عنوان مثال، امور دیجیتالی در اتومبیل، مانند کنترل سوخت، صفحه نمایش داشبورد و سیستم ترمز).
نرم افزار خط تولید: این نرم افزارها متشکل از اجزای چند بار مصرفی هستند که طراحی شدهاند تا قابلیت های خاصی را جهت استفاده توسط بسیاری از مشتریان مختلف فراهم کنند. این گروه از برنامهها، ممکن است در یک بازار محدود و پیچیده(به عنوان مثال، ابزارهای کنترل موجودی) تمرکز کنند، و یا در زمینهی تولید انبوه، تلاش کنند.
نرم افزار وب/تلفن همراه: این گروه از نرم افزارهای شبکه محور، شامل برنامههای مختلفی مثل نرم افزارهای مبتنی بر مرورگر، رایانش ابری، رایانش مبتنی بر خدمات و نرم افزارهای تعبیه شده در تلفن همراه، میشوند.
نرم افزار هوش مصنوعی: این نرم افزارها، در مواقعی که قادر به محاسبهی منظم یا تجزیه و تحلیل مستقیم نباشیم، از روشهای ابتکاری استفاده میکنند.این برنامه ها شامل روباتها، سیستمهای تصمیم یار، تشخیص الگو(تصویر و صدا)، یادگیری ماشین، اثبات قضیه و بازی میشوند.
میلیون ها مهندس نرم افزار در سراسر جهان، سخت مشغول کار روی پروژههای نرم افزاری در زمینهی یک یا چند مورد از دستههای ذکر شده هستند.برخی پروژهها به ساخت یک سیستم جدید، و بسیاری به اصلاح، انطباق و بهبود برنامههای موجود میپردازند.عجیب نیست که یک مهندس نرم افزار جوان، روی برنامهای کار کند که قدمت بیشتری از خودش داشته باشد!نسلهای گذشته، نسخههای جزوه میدان ها و امواج از هر گروه از مجموعه نرم افزارها که بیان کردیم، به جا گذاشتهاند؛ امیدواریم نسخههای امروزی، کار مهندسان نرم افزار نسل آینده را آسان کند.
3-1-1 نرم افزار منسوخ شده
صدها هزار برنامهی کامپیوتری، هرکدام در یکی از هفت گروهی که در بخش قبلی بحث شد، قرار می گیرند.برخی از آنها، نرم افزارهای پیشرفته هستند؛ اما برخی قدیمی و گاهی حتی بسیار قدیمی هستند.میدان ها و امواج بسیار قدیمی که اغلب به عنوان نرم افزار منسوخ شده شناخته میشوند، از دههی 1960، دائماً مورد توجه قرار گرفتهاند.دایانی فرد و همکارانش، نرم افزار منسوخ شده را به صورت زیر تعریف میکنند:
سیستمهای نرم افزاری منسوخ شده…دههها قبل به وجود آمدهاند و دائماً جهت پاسخگویی به تغییرات نیازهای شغلی و سیستم عاملهای کامپیوتری، اصلاح شدهاند.به دلیل زیاد بودن این سیستمها، پیدا کردن آنها برای سازمانهای بزرگ دشوار است؛ همچنین حفاظت از آنها پرهزینه و توسعهی آنها خطرساز است.این تغییرات میتواند در نرم افزارهای منسوخ شده با کیفیت پایین، اثرات جانبی ایجاد کند.سیستم های منسوخ شده، گاهی دارای طراحیهای غیر قابل گسترش، کدهای پیچیده، اسناد نامعتبر یا ناموجود، موارد آزمایشی و نتایج بایگانی نشده، و یک تاریخچهی تغییرات هستند که به درستی مدیریت نشده است.اما علیرغم مشکلات زیاد، این سیستمها، اغلب از “عملکردهای اصلی” پشتیبانی میکنند و برای کسب و کار و تجارت، ضروری هستند.
اکنون چه باید کرد؟ معقولترین پاسخ میتواند این باشد: حداقل تا زمانی که نرم افزار منسوخ شده، نیاز به تغییرات اساسی پیدا نکرد، اقدامی نکنید؛ این نرم افزار، تا زمانی که پاسخگوی کاربران خود باشد و درست اجرا شود، خراب نیست و نیازی به تعمیر نخواهد داشت.با این حال، با گذشت زمان، سیستمهای قدیمی اغلب به یکی یا چند دلیل از دلایل زیر، تغییر میکنند:
• نرم افزار، باید پاسخگوی نیازهای محیطها و تکنولوژیهای کامپیوتری جدید، و متناسب با آنها باشد.
• نرم افزار، باید جهت پیادهسازی الزامات تجاری جدید، ارتقا یابد.
• نرم افزار باید توسعه یابد، تا در سایر سیستمها یا پایگاههای داده، قابل اجرا باشد.
• نرم افزار باید مجدداً بایگانی شود، تا بتواند در یک محیط کامپیوتری در حال توسعه، به اجرا در بیاید.
بنابراین به دلیل این تحولات، یک نرم افزار منسوخ شده باید مجدداً مهندسی شود تا در آینده دوام داشته باشد.هدف مهندسی نرم افزار مدرن، “ابداع روشهایی مبتنی بر مفهوم تکامل است؛ یعنی سیستمهای نرم افزاری دائماً تغییر میکنند، میتوان از سیستمهای قدیمیتر، نرم افزارهای جدیدتر ساخت، و…همه باید با یکدیگر تعامل و همکاری کنند”.
2-1 تعریف قوانین
مؤسسهی مهندسان برق و الکترونیک، مهندسی نرم افزار را اینگونه تعریف میکند:
مهندسی نرم افزار: استفاده از یک رویکرد منظم، قانونمند و قابل اندازه گیری، میدان ها و امواج توسعه، راهاندازی و جزوه میدان ها و امواج از نرم افزار، تعریفی از کاربرد مهندسی نرم افزار است.
تصویر 3-1
با این وجود، یک رویکرد “منظم، قانونمند و قابل اندازه گیری”، که توسط یک گروه از نرم افزارها اتخاذ میشود، ممکن است برای نرم افزار دیگر سنگین باشد.ما به نظم و انسجام و در عین حال به سازگاری و مهارت احتیاج داریم. مهندسی نرم افزار، یک فناوری چندلایه است.با توجه به نمودار موجود در تصویر 3-1، هر رویکرد مهندسی(از جمله مهندسی نرم افزار) باید براساس یک تعهد سازمانی به کیفیت باشد. احتمالاً راجع به مدیریت کیفیت جامع(TQM) یا شش سیگما و سایر فلسفههای مشابه، که فرهنگ اصلاح مداوم فرآیندها را پرورش می دهند، شنیدهاید.این فرهنگ است، که در نهایت به رویکردهای مؤثرتری در مهندسی نرم افزار میانجامد.پشتیبانی مهندسی نرم افزار، متمرکز بر کیفیت است.اساس مهندسی نرم افزار، لایه فرآیند است.فرایند مهندسی نرم افزار، مانند چسبی است که لایه های فناوری را به هم متصل کرده و آنها را قادر به اصلاح منطقی و به موقع نرم افزار کامپیوتر می سازد.فرایند، یک چارچوب برای ارائهی موثر فناوری مهندسی نرم افزار تعریف میکند.فرآیند نرم افزار، اساس کنترل مدیریت پروژه های نرم افزاری است و زمینهی اعمال روشهای فنی، ارائهی نتایج کار(مدل ها، اسناد، دادهها، گزارشها، فرمها و …)، ایجاد پیشرفتهای چشمگیر، تضمین کیفیت و احتمالاً مدیریت تغییرات را فراهم میکند.روش های مهندسی نرم افزار، راهکارهایی فنی جهت ساخت نرم افزار ارائه می میدان ها و امواج .این راهکارها شامل مجموعهی وسیعی از اقدامات، مانند ارتباطات، مقررات، تجزیه و تحلیل، مدل سازی، طراحی، ساخت برنامه، آزمایش و پشتیبانی است. روش های مهندسی نرم افزار، مبتنی بر مجموعه ای از اصول اساسی است که تمام حوزههای فناوری را تحت تأثیر قرار میدهد و شامل فعالیت های مدل سازی و سایر تکنیک های توصیفی است. ابزارهای مهندسی نرم افزار، به طور خودکار یا نیمه خودکار از فرآیند و روش ها پشتیبانی میکند.هنگام ادغام ابزارها، اطلاعات ایجاد شده توسط یک ابزار، میتواند توسط ابزار دیگر مورد استفاده قرار گیرد، در این حالت، سیستمی به نام مهندسی نرم افزار کامپیوتری، جهت پشتیبانی از توسعهی نرم افزار تشکیل خواهد -() ()، ( ) –اساس فرآیند مهندسی نرم افزار محسوب میشود. به علاوه، چارچوب فرآیند، شامل مجموعه ای از فعالیتهای حفاطتی است که در سرتاسر فرآیند نرم افزار، قابل اجرا هستند.در مهندسی نرم افزار، یک چارچوب فرآیند عمومی شامل پنج مرحله است:
ارتباطات. قبل از شروع هر کار فنی، برقراری ارتباط و همکاری با مشتری(و سایر سهامداران)، بسیار مهم است.هدف ما، درک اهداف سهامداران برای پروژه، و کمک به تعریف ویژگیها و عملکرد نرم افزار است.
برنامه ریزی. با وجود یک نقشه، هر پیچیدگی آسان خواهد شد.برای مثال، پروژهی نرم افزاری که امری پیچیده میباشد، به کمک برنامه ریزی و طراحی “نقشه”، آسان خواهد شد.نقشهی پروژهی نرم افزاری، کار مهندسی نرم افزار را با توصیف امور فنی انجام شده، خطرات احتمالی، منابع موردنیاز، محصول نهایی کار و یک برنامهی کاری، تعریف میکند.

دانلود رایگان خلاصه کتاب میدان ها و امواج pdf
مدل سازی. شما چه یک باغبان باشید و چه یک سازندهی پل، چه یک مهندس هوانوردی، یک نجار و یا یک معمار باشید، روزانه با مدلهای مختلفی سر و کار خواهید داشت.در واقع، شما برای درک تصزیر در مقیاس بزرگ، یک “طرح” ایجاد میکنید، چنانچه در معماری، نحوهی قرارگیری اجزا در کنار هم و ویژگیهای دیگر، مورد بررسی قرار میگیرند.در صورت نیاز، میتوانید جزئیات بیشتری را در طرح خود اعمال کنید تا درک مشکل و راه حل آن، راحتتر شود؛ این همان کاری میدان ها و امواج که یک مهندس نرم افزار انجام میدهد و برای درک بهتر نیازهای نرم افزار و طرح مناسب جهت پاسخگویی به این نیازها، به ساخت مدل میپردازد.
ساخت و ساز. شما باید آنچه طراحی میکنید را بسازید.این کار، ترکیبی از کدنویسی (دستی یا خودکار) و آزمایش، جهت کشف ( ً )، ً ؛ ؛ ؛ –:
: : ً : : : ؛ : : () : –ً ( ). :
• • • • • • • • فصل اول این کتاب، به بررسی دقیق فرآیند نرم افزار، میپردازیم.
4-1 عمل مهندسی نرم افزار
در بخش 3-1، یک مدل فرآیند نرم افزار عمومی متشکل از جزوه انتقال جرم و حرارت از فعالیتها را به عنوان چارچوب مهندسی نرم افزار معرفی کردیم.فعالیتها کلی این چارچوب، شامل ارتباطات، برنامه ریزی، مدل سازی، ساخت و سازها و ارائه و ارزیابی، به همراه اقدامات محافظتی، یک طرح کلی برای نرم افزار ایجاد میکند.اما نحوهی مطابقت مهندسی نرم افزار، به چه شکل است؟در ادامه، به درک اساسی از مفاهیم و قوانین کلی فعالیتهای انجام شده در چارچوب، خواهید رسید.
1-4-1 اساس مهندسی نرم افزار
جورج پولیا، در کتاب قدیمی و موثق “چطور به حل مسئله بپردازیم”، که قبل از وجود کامپیوترهای مدرن نوشته شده بود، اساس حل مسئله و متعاقباً اساس مهندسی نرم افزار را بیان کرد:
1. مسئله را درک کنید (ارتباط و تحلیل).
2. یک راه حل (مدل سازی و طراحی نرم افزار) طراحی کنید.
3. طرح موردنظر را اجرا کنید(کدنویسی).
4. صحت نتیجهی به دست آمده را بررسی کنید(جزوه میدان ها و امواج و تضمین کیفیت).
در زمینهی مهندسی نرم افزار، این مراحل، منجر به شکل گیری سؤالات اساسی میشوند(به نقل از جورج پولیا):
درک مسئله. حقیقتاً گاهی درک مسئله مشکل است و ما از روی غرور با آن برخورد میکنیم؛ پس از چند ثانیه تأمل، فکر میکنیم که موضوع را فهمیدهایم و سراغ حل آن میرویم.متأسفانه درک مسئله، همیشه چندان آسان نیست.در ادامه به پاسخ به تعدادی سؤال ساده، اما مهم میپردازیم:
• چه کسانی در حل مشکل مشارکت میکنند؟به عبارت میدان ها و امواج، سهامداران چه کسانی هستند؟
• چه مواردی مجهول ماندهاند؟دادهها، اقدامات و ابزارهای موردنیاز جهت حل مشکل، چه هستند؟
• آیا میتوان مشکل راب ه چند بخش تقسیم کرد؟آیا میتوان مشکلات جزئیتر که درک آنها آسانتر است را مطرح کرد؟
• آیا میتوان مشکل موردنظر را به تصویر کشید؟آیا میتوان یک مدل تحلیلی طراحی کرد؟
طراحی یک راه حل. اکنون که مشکل را درک کردهاید(یا تصور میکنید که درک کردهاید)، بی صبرانه منتظر شروع کدنویسی هستید. اما پیش از آن، کمی صبر کنید و به ذهن خود را مرتب کنید:
• آیا سابقاً به مشکل مشابهی برخوردهاید؟آیا الگویی مشخص برای ارائهی یک راه حل کارآمد وجود دارد؟آیا نرم افزاری برای پیاده سازی دادهها، اقدامات و ابزارهای موردنیاز وجود دارد؟
• آیا قبلاً مشکل مشابهی را حل کردهاید؟در این صورت، آیا راه حل آن، مجدداً قابل استفاده است؟
• آیا میتوان چیزی به نام مشکلات فرعی میتوان تعریف کرد؟در این صورت، آیا راه حلی کارآمد برای این مشکلات وجود دارد؟
• آیا میتوانید راه حلی ارائه دهید که به نحوی مؤثر به اجرا دربیاید؟آیا میتوان یک مدل طراحی تهیه کرد؟
اجرای طرح موردنظر. طرحی که تهیه کردهاید، به عنوان یک نقشه برای سیستمی که میخواهید بسازید، عمل می کند.ممکن است مسائل غیرمنتظرهای پیش بیاید، یا حتی در حین کار، متوجه روش بهتری برای حل مشکل خود شوید، اما “طرح” موردنظر، منجر میشود تا بدون سردرگمشدن، به مسیر خود ادامه دهید.
• آیا راه حل با برنامه مطابقت دارد؟آیا کد منبع در مدل طراحی قابل ردیابی است؟
• آیا صحت تمام بخشهای راه حل موردنظر، قابل اثبات است؟آیا طرح و کدها، یا صحت الگوریتم موردنظر بررسی شده است؟
ارزیابی نتیجه. شما نمی توانید از بی نقص بودن راه حل خود مطمئن باشید، اما میتوانید با اجرای آزمایشات کافی، تا حد • ؟؟
• ؟؟
ً –”” “”، ()، ؛ ( ) ( )، ؛ :
: ؛ : “؟”سایر اصول نیز از این مسئله پشتیبانی میکنند.
اصل دوم: سخت نگیرید و راه آسانتر را انتخاب کنید.
در طراحی، عوامل زیادی باید در نظر گرفته شوند.طراحی باید تا حد امکان ساده باشند؛ اما نه بیشتر از آن.در این صورت، درک و حفظ سیستم آسانتر خواهد شد.این ساده سازی، به معنی نادیده گرفتن ابزارها و ویژگیها نیست.در واقع، طراحیهای ظریفتر، معمولاً سادهتر هستند.منظور از لفظ ساده، “سریع و در هم و برهم” نیست.بلکه برعکس، ساده سازی طراحیها، اغلب نیازمند تفکر و کار مضاعف است.نتیجهی نهایی، تولید نرم افزاری با قابلیت نگهداری بیشتر و مستعد خطای کمتر، میباشد.
اصل سوم: یک نقشهی ذهنی داشته باشید.
یک نقشهی ذهنی، برای موفقیت یک پروژه نرم افزاری ضروری است.بدون یکپارچگی مفهومی، سیستم به مجموعهای از طرحهای ناقص و نیمه کاره، که به نحوی نادرست، در کنار یکدیگر قرار گرفتهاند، تبدیل خواهد شد.به خطر افتادن نقشهی ساختاری سیستم، سبب تضعیف و حتی از کار افتادن سیستمهایی میشود، که به خوبی طراحی شدهاند.یک طراح ماهر، میتواند با حفظ نقشهی ذهنی و انطباق آن، موفقیت یک پروژهی نرم افزاری را تضمین کند.
اصل چهارم: آنچه تولید میکنید، توسط کاربران مورداستفاده قرار خواهد گرفت.
هنگام تعیین طرح و اسناد، و اجرای آنها، این موضوع را در نظر بگیرید که آنچه انجام میدهید، باید برای دیگران قابل درک باشد.محصولات توسعهی نرم افزار، مخاطبان گستردهای دارند؛ بنابراین، همواره کاربران را نیز در نظر داشته باشید.هنگام طراحی، به نحوهی اجرا نیز توجه کنید؛ هنگام کدنویسی، ملاحظهی افرادی را که حفظ و توسعهی سیستم را به عهده دارند، بکنید.ممکن است نیاز باشد تا افرادی، کدهایی که نوشتهاید را : ً “” :
فهرست مطالب