جزوه تایپ شده میدان ها و امواج
استاد سهیل آزادی نیا خلاصه کتاب دانشگاه علمی کاربردی استاد ملکپور دانشگاه صنعتی شریف کاردانی کارشناسی ارشد غلامدانشگاه سراسری آزاد دانلود
«)) ؟» : «؟»
-؛ ؟ ؟ ً ؟ ؛ ؟ ؟ ()، ؟ :« () ً » : «؟» : «ً » : « ؟».: « » : « ؟» : « » : « ؟»
– « »
«؟»
: «؛ »
: «؟»
«؛ »
«»
: «- »
« ؟»
: « ً »
؛ ؛()، ()، () ؛ ً ؛ ؛؛ () ً () ( ) ؛ (). ً ؛ -:
• ً • • • ً ً ؛ ؛ یعنی هم به عنوان یک محصول و هم ابزاری جهت ارائهی یک محصول، به کار میرود.به عنوان یک محصول، ظرفیت کامپیوتری موجود در سخت افزار کامپیوتر، یا به طور گستردهتر، شبکهای از کامپیوترهای قابل دسترسی با سخت افزار داخلی را محقق میسازد.نرم افزار در تلفن همراه، صفحهی نمایش کامپیوتر، کامپیوتر مرکزی یا خودروهای اتوماتیک، به عنوان انتقال دهندهی اطلاعات، به تولید، مدیریت، به دست آوردن، اصلاح، نمایش یا انتقال اطلاعات میپردازد؛ این اطلاعات میتوانند به سادگی یک واحد بیت و یا به پیچیدگی ارائهی مفاهیم تکمیلی مربوط به دادههای به دست آمده از دهها منبع مستقل باشند؛ و سپس این اطلاعات در دنیای واقعی پوشش داده میشوند.نرم افزار، به عنوان ابزار ارائه دهندهی یک محصول، مبنای کنترل کامپیوتر(سیستم عاملها)،تبادل اطلاعات(شبکهها) و طراحی و کنترل سایر برنامهها(ابزارها و محیطهای نرم افزاری)قرار میگیرد. نرم افزار، مهمترین محصول زمان ما یعنی اطلاعات را ارائه می دهد؛ دادههای شخصی( مثل معاملات مالی افراد) را تغییر میدهد تا در محیط محلی قابل استفاده باشند؛ اطلاعات مربوط به مشاغل را جهت ارتقای رقابتها، مدیریت میکند؛ دری به شبکههای اطلاعاتی در سراسر جهان(مثل اینترنت) باز میکند و تمام ابزارهای کسب اطلاعات را فراهم میکند.همچنین میتواند ابزاری ارائه کند که حریم شخصی افراد را تهدید کند و جهت سوءاستفاده و انجام اعمال مجرمانه به کار رود.
در 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) یا شش سیگما و سایر فلسفههای مشابه، که فرهنگ اصلاح مداوم فرآیندها را پرورش می دهند، شنیدهاید.این فرهنگ است، که در نهایت به رویکردهای مؤثرتری در مهندسی نرم افزار میانجامد.پشتیبانی مهندسی نرم افزار، متمرکز بر کیفیت است.اساس مهندسی نرم افزار، لایه فرآیند است.فرایند مهندسی نرم افزار، مانند چسبی است که لایه های فناوری را به هم متصل کرده و آنها را قادر به اصلاح منطقی و به موقع نرم افزار کامپیوتر می سازد.فرایند، یک چارچوب برای ارائهی موثر فناوری مهندسی نرم افزار تعریف میکند.فرآیند نرم افزار، اساس کنترل مدیریت پروژه های نرم افزاری است و زمینهی اعمال روشهای فنی، ارائهی نتایج کار(مدل ها، اسناد، دادهها، گزارشها، فرمها و …)، ایجاد پیشرفتهای چشمگیر، تضمین کیفیت و احتمالاً مدیریت تغییرات را فراهم میکند.روش های مهندسی نرم افزار، راهکارهایی فنی جهت ساخت نرم افزار ارائه می میدان ها و امواج .این راهکارها شامل مجموعهی وسیعی از اقدامات، مانند ارتباطات، مقررات، تجزیه و تحلیل، مدل سازی، طراحی، ساخت برنامه، آزمایش و پشتیبانی است. روش های مهندسی نرم افزار، مبتنی بر مجموعه ای از اصول اساسی است که تمام حوزههای فناوری را تحت تأثیر قرار میدهد و شامل فعالیت های مدل سازی و سایر تکنیک های توصیفی است. ابزارهای مهندسی نرم افزار، به طور خودکار یا نیمه خودکار از فرآیند و روش ها پشتیبانی میکند.هنگام ادغام ابزارها، اطلاعات ایجاد شده توسط یک ابزار، میتواند توسط ابزار دیگر مورد استفاده قرار گیرد، در این حالت، سیستمی به نام مهندسی نرم افزار کامپیوتری، جهت پشتیبانی از توسعهی نرم افزار تشکیل خواهد شد.
3-1 فرآیند نرم افزار
فرآیند، مجموعه ای از فعالیت ها، اقدامات و وظایف انجام شده در مراحل تولید یک محصول میباشد.فعالیتهای مربوطه، جهت دستیابی به اهداف گوناگون(به عنوان مثال، ارتباط با سهامداران) و بدون توجه به دامنهی کاربرد و اندازهی پروژه، پیچیدگی مراحل کار، یا نوع مهندسی نرم افزار که در پیش گرفتهایم، انجام میشوند.اموری مثل طراحی معماری، شامل اقداماتی هستند که منجر به ارائهی جزوه میدان ها و امواج مثل مدل معماری میشود.هر اقدام، روی هدف کوچک اما مشخصی(مثل انجام یک واحد آزمایش)، تمرکز میکند که نتایج مشخصی به دنبال دارد. در زمینهی مهندسی نرم افزار، یک فرآیند، یک نسخهی دستوری برای ساخت یک نرمافزار کامپیوتری نیست.بلکه رویکردی قابل انطباق است که افراد مشغول به کار( تیم سازندهی نرم افزار) را قادر به انتخاب اقدامات و وظایف مناسب میکند.هدف، همواره ارائهی به موقع نرم افزار، با کیفیت بالا، جهت کسب رضایت سرمایهگذاران و کاربران است.
1-3-1 چارچوب فرآیند
چارچوب فرآیند، ضمن شناسایی تعدادی از فعالیتهای قابل اجرا در تمام پروژههای نرم افزاری، صرف نظر از اندازه و پیچیدگی آنها، اساس فرآیند مهندسی نرم افزار محسوب میشود. به علاوه، چارچوب فرآیند، شامل مجموعه ای از فعالیتهای حفاطتی است که در سرتاسر فرآیند نرم افزار، قابل اجرا هستند.در مهندسی نرم افزار، یک چارچوب فرآیند عمومی شامل پنج مرحله است:
ارتباطات. قبل از شروع هر کار فنی، برقراری ارتباط و همکاری با مشتری(و سایر سهامداران)، بسیار مهم است.هدف ما، درک اهداف سهامداران برای پروژه، و کمک به تعریف ویژگیها و عملکرد نرم افزار است.
برنامه ریزی. با وجود یک نقشه، هر پیچیدگی آسان خواهد شد.برای مثال، پروژهی نرم افزاری که امری پیچیده میباشد، به کمک برنامه ریزی و طراحی “نقشه”، آسان خواهد شد.نقشهی پروژهی نرم افزاری، کار مهندسی نرم افزار را با توصیف امور فنی انجام شده، خطرات احتمالی، منابع موردنیاز، محصول نهایی کار و یک برنامهی کاری، تعریف میکند.

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