طراحی نرم افزار
نرم افزار نرم افزار مجموعه ای از آیتم ها و یا اشیاء است که در کنار هم یک پیکربندی را تشکیل می دهند که شامل برنامه های کامپیوتری، مستندات، داده و ... می شود.
تعریف مهندسی نرم افزار:
مهندسی نرم افزار یک رشته مهندسی است که تمامی جنبه های تولید نرم افزار را هدف قرار می دهد.
محصولات نرم افزاری
عمومی (Generic) – برای فروش به طیف وسیعی ازمشتریانگوناگون تولید می شود.
سفارشی (Bespoke or Custom ) – برای یک مشتری خاص منفرد مطابق مشخصاتی و خصوصیاتی تعیین شده ازسوی او تولید می شود.
انواع نرم افزارها:
نرم افزارهای سیستمی
real-time software (نرم افزارهای بلادرنگ)
business software (نرم افزارهای تجاری)
engineering/scientific software (نرم افزارهای علمی و مهندسی)
embedded software (نرم افزارهای نهفته یا تعبیه شده)
PC software (نرم افزارهای کامپیوترهای شخصی)
AI software (نرم افزارهای هوش مصنوعی)
Web applications (نرم افزارهای کاربردی تحت وب)
فرآیند تولید نرم افزاری یا متدولوژی نرم افزاری:
مجموعه ای از فعالیت ها که هدف آن ها توسعه و تکامل تدریجی نرم افزار می باشد
فعالیت های اصلی فرآیند تولید نرم افزار عبارتند از:
تحلیل، طراحی، پیاده سازی و تست و نگهداری و استقرار
مدل فرآیند:
روش خاصی که 4 مرحله تحلیل، طراحی، پیاده سازی و تست و نگهداری و استقرار انجام می شود.
تفاوت مدل های مختلف فرآیند در ترتیب و تاخر انجام این کارهاست.
انواع مدل های تولید نرم افزار:
مدل ترتیبی خطی (The Linear Sequential Model)
مدل نمونه سازی (Prototyping)
مدل تولید سریع نرم افزار (Rapid Application Development)
مدل های تکاملی تولید نرم افزار
مدل حلزونی (Spiral Model)
مدل حلزونی Win Win
مدل مونتاژ مولفه ها (Component Assembly Model)
مدل توسعه همروند (Concurent Development Model)
مدل روش های رسمی (Formal Methods Model):
از دستورات ریاضی برای نوشتن منطق و تحلیل برنامه ها استفاده می شود.
تکنیک های نسل چهارم (4GT- Forth Generation Tool):
یک محیط نرم افزاری است که در آن مشخصه ها و نیازمندی های سیستم را وارد می کنیم و در نهایت خود نرم افزار کد را تولید می کند.
مدل |
معایب |
مزایا |
مدل آبشاری |
زمانبر است مکانیزم بازگشت وجود ندارد برای پروژه های بزرگ مناسب نیست عدم ارتباط با کاربر در طول تهیه پروژه |
مدیریت خوب و آسان
|
مدل نمونه سازی |
ممکن است هیچ گاه وارد مرحله پیاده سازی نشویم در هر نظر سنجی باید نمونه ای را که تهیه کردیم کنار گذاشته و نمونه جدیدی تهیه کنیم چون توقعات کاربر بالاست مدیریت آن مشکل است |
با توجه به این که مشتری به خوبی از نیازها آگاه نیست، ساخت یک نمونه اولیه در پیشبرد پروژه موثر است |
مدل تولید سریع نرم افزار |
مدیریت پروژه دشوار است |
برای پروژه های ماژولار مناسب است |
مدل 4G |
انجام مرحله تحلیل و طراحی را آسان می کند برای پروژه هایی با الگوریتم ساده مناسب است |
برای پروژه هایی با منطقو الگوریتم پیچیده مناسب نیست |
مدل صوری |
|
نرم افزار تولید شده دقیق، بی ابهام و بی خطا خواهد بود |
خصوصیات یک نرم افزار خوب:
قابلیت نگهداری (Maintainability):
نرم افزار باید تکامل و تحول یابد تا نیازهای تغییر کرده کاربران را برآورده نماید.
قابلیت اطمینان (Dependability):
نرم افزار باید پایا و معتمد و قابل اطمینان باشد.
بهره وری و کارایی (Efficiency):
نرم افزار نباید از منابع سیستم استفاده بی فایده داشته باشد و به اتلاف منابع بیانجامد
قابلیت استفاده (Usability):
نرم افزار باید برای آنچه که طراحی و تولید شده است، برای کاربران قابل استفاده باشد.
1- شناخت كسب و كار : يعني وقتي براي يه سازمان يا يه مجموعه خاص مي خواي نرم افزار توليد كني بايد روند كار اون مجموعه رو بدوني كه اين مجموعه مي تونه مجموعه اي از افراد كه كار خاصي رو انجام ميدن باشه مثلاً مي خواي يه نرم افزار براي قسمت توليد يه كارخونه كاشي توليد كني پس بايد روند توليد در اين كارخونه رو بدوني.
چه کسی کاربر نرم افزار شما میباشد ؟
عمر استفاده از نرم افزار شما چقدر است ؟
دقت نرم افزار شما در چه حدی میباشد ؟
نمونه نرم افزاری با این کاربری وجود دارد ؟
چه کسانی قرار است از خروجی های ان استفاده نمایند ؟
2- مهندسي نياز
ها: خواسته هاي مشتري رو به طور كامل بررسي ميكني و يه سناريو براي خودت
مي نويسي
3- برنامه ریزی (امکان سنجی): در اين مرحله بايد ببيني كه آيا امكان انجام اين پروژه هست يا نه؟
از مهمترین کارها در تولید نرم افزار استخراج نیازمندیها یا تحلیل نیازمندیهای آن سیستم است. مشتریان عمومی معمولا تصور مفهومی، انتزاعی و مبهمی از نتیجه نهایی خواسته هایشان دارند و نمیدانند به درستی نرم افزار مورد نظرشان چه کاری باید انجام بدهد. در این مرحله نیازمندیهای ناتمام، پیچیده و مبهم، و حتی متضاد توسط مهندسان نرم افزار ماهر و مجرب شناسایی میشوند.در این برهه تکه نرم افزارهای آماده و تجربه شده وفعال ممکن است برای پایین آوردن ریسک(ومشکلات) نیازمندیها کمک می کنند. اول نیازمندیهای عمومی از کاربران جمع آوری می شد، و دامنه توسعه و تولید نرم افزار که باید تولید شود شناسایی و تحلیل می شود، و مستندات بصورت شفاف نوشته می شود.معمولا به این مستند، مستنددامنه یا محدوده سیستم اطلاق می شود.
برخی قابلیت ها ممکن است در ابتدای پروژه به خاطر مسائل مالی یا نیازمندیهای غیر شفاف و نامشخص خارج از محدوده پروژه باشند.اگر تولید و توسعه نرم افزار برون سپاری شود(به شرکت های خارجی محول شود)، این مستندات به عنوان مستندات قانونی و حقوقی در نظر گرفته می شود بنابراین در صورت اتفاق هرگونه دعوای حقوقی یا ابهام در مورد تعهدات داده شده به کاربر، این مسائل قابل شفاف سازی خواهد بود.
4-(شناخت و) تایید : سپس آن مستندات توسط تحلیلگران، تحلیل می گردد تا میزان درستی درک نیازمندیهای کاربران مشخص گردد.
مستند تحلیل شده دوباره توسط کاربران سیستم جهت استفاده طراحان، در طراحی سیستم بازبینی می شود. در همین فاز فرمهای تست سیستم، همچنین فرمهای تایید و تست نیاز های اصلی سیستم برای کاربران طراحی می گردد.این اقدامات بصورت موازی انجام می شود. روشهای مختلفی برای جمع آوی نیازمندیها به شکل : مصاحبه، پرسشنامه، تجزیه و تحلیل سندها و فرمها، مشاهد مستقیم، نمونه ها، نمودارهای استفاده کاربران و نمودارهای وضعیت سیستم و کاربران بصورت ثابت و پویا وجود دارد.
5- تحليل و طراحي: با توجه به
شناخت در مرحله اول و سناربو نوشته شده در مرحله 3 تحليل رو انجام ميدي كه بايد به
صورت نمودارهاي uml درش بياري.طراحي DB هم در اين مرحله انجام مي شه.
6- طراحی معماری فاز طراحی معماری کامپیوتر و معماری نرم افزار نیز به عنوان طراحی سطح بالا عنوان می شود. اصول انتخاب معماری این است که آن معماری بتواند تمام عناوین کلی نیازمندیها را شامل لیست ماژولها، قابلیت های خلاصه هر ماژول، ارتباطات ظاهری برنامه، وابستگیها و جداول پایگاه داده، نمودارهای معمالی و جزئیات تکنولوژی مورد نیاز و غیره را تحقق بخشد. طراحی تست مراحله یکپارچه سازی در فاز خاص انجام می شود.
7-طراحی ماژولها و روالها فاز طراحی می تواند به عنوان فاز طراحی سطح پایین مطرح شود.طراحی سیستم، کل سیستم را به ماژولها(تکه برنامه های کوچک) تقسیم می کند و هرکدام به گونه تشریح و توضیح داده می شود تا برنامه نویس بتواند بصورت مستقیم شروع به کد نویسی کند .
5-پياده سازي : كليه كدنويسي ها در اين مرحله انجام ميشه programming یا coding
6-پیاده سازی، آزمایش و تست و مستند سازی
پیاده سازی آن قسمت از فرآیند تولید نرم افزار به شمار می رود که مهندسان نرم افزار در دنیای واقعی تمام کد های پروژه را می نویسند و به قول معروف برنامه نویسی می کنند.
تست و آزمون نرم افزار بخش لاینفک و مهم از فرآیند تولید نرم افزار است . این قسمت از فرآیند ها کمک می کند تا مشکلات سیستم بصورت سریع شناسایی شوند.
مستند سازی در تمام مراحل پروژه همچون : طراحی داخلی نرم افزار برای تعیین اهداف سیستم، نگهداری آینده و ارتقاء و بهبودی سیستم هرچند پروژه پایان یافته باشد انجام می شود.همچنین ممکن است این مستند سازی شامل نوشتن ساختار تکه های برنامه ظاهربرنامه کاربردی داخلی و خارجی هم باشند.این مطلب خیلی مهم است که همه چیز پروژه مستند سازی شود.
7- تست : مرحله اعتبار سنجی debug
واحد تست
هر واحد کوچکترین قسمت قابل آزمایش و تست یک برنامه است . در برنامه نویسی کامپیوتر، تست هر واحد منحصر به فرد همان کد تست می شود تا مشخص گردد که آیا آن واحد برای استفاده مناسب هست یا نه ؟
تست یکپارچه سازی
در تست یکپارچه سازی سیستم، ماژولهای جدا جدا باهمدیگر تست می شوند
تست سیستم
این تست، مشخصات سیستم را در مقایسه با سیستم واقعی مقایسه می کند . تست سیستم نشان می دهد که آیا محصول یکپارچه سازی شده تمام مشخصات نیازمندیها را برآورده کرده است یا نه
8- تحويل نسخه بتا: نرم افزار توسط
مشتري تست ميشه
9- باز بيني، رفع نواقص و تحويل نسخه اصلي.
10-استقرار و نگهداری سیستم
استقرار و تحویل سیستم پس از اینکه تست مناسب و درخوری را گذراند و برای انتشار، فروش یا هرنوع توزیع برای محیط کار نهایی تایید شد انجام خواهد شد.
آموزش نرم افزار و پشتیبانی خیلی مهم است و خیلی از تولید کنندگان و توسعه دهندگان نرم افزارها اهمیت آن را درک نمی کنند.مهم نیست که چقدر زمان و برنامه ریزی توسط تیم تولید و توسعه نرم افزار برای ایجاد نرم افزار مصرف کرده اند اگر در آخر کار کاربری در سازمان نباشد تا آن نرم افزار را استفاده کند.مردم معمولا در برابر تغییرات مقاومت نشان می دهند و از ماجراجویی در محیط ناآشنا اجتناب می کنند، برای همین در فاز استقرار، این خیلی مهم است کلاسهای آموزشی برای کاربران جدید نرم افزار گذاشته شود.
نگهداری و ارتقاء نرم افزاری برای پوشش، مسائل پوشش داده نشده یا نیازمندیهای جدیدممکن است مدت خیلی زیادی حتی بیشتر از زمان اولیه تولید نرم افزار، زمان بگیرد. این مرحله ممکن است نیاز باشد تا کد های برنامه نویسی جدیدی که در طراحی اصلی برنامه نیز دیده نشده اضافه شود تا مسائل و مشکلات دیده نشده حل شوند یا ممکن است کاربر درخواست عملیات اصلی دیگری بکند و برنامه نویسی های جدیدی برای برآورده کردن نیازهای جدید انجام گیرد.اگر هزینه کار فاز نگهداری از ۲۵ درصد هزینه فاز قبلی (پیاده سازی)بیشتر باشد، این احتمال وجود دارد که کیفیت کلی فاز قبلی خیلی ضعیف بوده باشد.در این صورت مدیران پروژه باید گزینه ی ایجاد مجدد سیستم (یا بخشی از سیستم) را قبل از اینکه هزینه های نگهداری غیر قابل کنترل شود را مطرح کنند.
تهدیدها:
توانایی تولیدکنندگان در تشخیص نیازهای کاربران
عدم دقت در ارائه برنامه زمانبندی دقیق از طرف طراحان سیستم
کیفیت کمِ
نرمافزارهای تولیدی و افزایش هزینهها
تولید مستندات
نرمافزار بدون مستندات را میتوان مانند خانهای تجسم کرد که نقشه سیمکشی برق، لولهکشی و هیچگونه نقشه دیگری ندارد
طراحان نرمافزار باید مستنداتی فراهم کنند که بتواند به کسی که بعدها به آن کدها مراجعه میکند نشان دهد که طراحان اولیه این سیستم چگونه ساختار برنامه را درست کردهاند
مهندسان نرمافزار اصطلاح خوبی برای مستندات دارند و میگویند: مستندات نرمافزار باید <کوتاه> و <ساکت> باشد. منظور از کوتاه این است که باید مختصر و دقیق باشد و منظور از ساکت این است که نباید خیلی به جزئیات غیرضروری بپردازد و خواننده را خسته نماید
آریوپی
آریوپی ارائه دهنده مجموعهای از روشها برای کمک به مدیریت دقیق بر روی مراحل طراحی و پیادهسازی نرمافزارهای رایانهای است
این فرآیند یک روش نظاممند برای تخصیص کارها و مسئولیتها در یک تیم توسعه نرمافزار ارائه میدهد و هدف آن تولید نرمافزار بصورت بهینه و با کیفیت بالاست که بتواند نیازهای کارفرما را تحت یک برنامه زمانی مشخص و با بودجه قابل پیشبینی برآورده سازد.
آریوپی کلیه مراحل انجام یک پروژه شامل تحلیل سیستم، برنامهریزی، بررسی ریسکها، تولید و تست نرمافزار را در بر میگیرد و چهارچوبی در جهت انجام صحیح و موفق پروژههای نرمافزاری فراهم میسازد
ریسکهای تکنولوژیکی
آیا تکنولوژی لازم برای ساختن این سیستم را در اختیار داریم
طراحی سیستم باید بگونهای باشد که در آینده تغییرات و توسعه آن قابل انجام باشد
ریسک مشکلات ناشی از نیروی انسانی
مرحله نهایی که شامل تست آزمایشی، بهبود عملکرد و آموزش کاربران است
مطالب مشابه :
مستندات نیازمندی ها و نقش آن در موفقیت یک پروژه نرم افزاری
برای انجام یک پروژه نرم افزاری معمولاً مشتری نیازهایش را در یک فرمت خاص (چه مکتوب و چه شفاهی
چگونه یک پروپوزال خوب برای نرم افزار بنویسیم؟
طرح مديريت پروژه نرم افزار ( spmp ) - استانداردهاي پروژه - مستندات طراحي و توسعه
مندرجات سند نيازهاي نرم افزار (SRD)
مندرجات طرح مديريت پروژه نرم افزار راهنماي كاربر نرم افزار در مجموعه مستندات پروژه.
معرفی نرم افزار PRIMAVERA EXPEDITION
نرم افزار محصول شرکت پریماورا می باشد که قابلیت کنترل پروژه از زمان عقد قرارداد تا پایان
Agile Software Development
مستندات نرمافزار بايد اهميت نقش كاربران سيستم در پروژه نرمافزار را نميتوان
تطبيق استانداردهاي موجود براي مستند سازي سيستم هاي اطلاعاتي در ايران
مستندات نرمافزار، به هر مطلبي اين سند هميشه قبل از آغاز يك پروژه نرمافزاري تهيه
طراحی نرم افزار
مدل تولید سریع نرم افزار. مدیریت پروژه دشوار مستندات نرمافزار
برچسب :
مستندات پروژه نرم افزار