ورود

View Full Version : فاصله بین طراحی نرم افزار به صورت مهندسی و طراحی بصورت تجاری (بازاری)



spring69
چهارشنبه 04 آبان 1390, 10:48 صبح
سلام دوستان.
از دوستان با تجربه میخوام نظرشون رو راجب این مطلب بفرمائن که: تفاوت گذاشتن بین طراحی نرم افزار به صورت مهندسی و طراحی اون به صورت تجاری(بازاری) کار درستیه؟
اگه هست چقدر باید بینشون تفاوت قائل شد؟

**مثلا از خیلی از افرادی که تو بازار نرم افزار بصورت "کد نویس" کار می کنند شنیدم که میگن اصول مهندسی نرم افزار فقط تو طراحی تئوری و یا در نرم افزار های خیلی خیلی بزرگ کاربرد داره و برای طراحی یه نرم افزار متوسط اصلا نیازی به این کار ها که باعث بد قول شدن و تحویل دیرتر پروژه می شه نیست**

تا چقدر با این تفکر موافقید؟
با تشکر.

vahid saberi
چهارشنبه 04 آبان 1390, 11:11 صبح
من با این طرز فکر موافقم، چون در بازار ایران برای برنامه های در حد متوسط درخواست کننده ی برنامه درحین کار با نسخه آزمایشی مواردی رو از شما می خوان که باید بعضی از اصول مهندسی رو زیر پا بگذارید و اگه هم بخواهید طبق اصول پیش برید همون طور که گفتید باعث تحویل دیرتر پروژه میشه که اگه قرارداد بسته باشید باعث پرداخت خسارت میشه.
طراحی نرم افزار به صورت مهندسی نرم افزار برای کار های بزرگی است که چندین برنامه نویس قرار است روی پروژه کار کنند.

hossein2007
جمعه 06 آبان 1390, 19:37 عصر
سلام دوستان.
از دوستان با تجربه میخوام نظرشون رو راجب این مطلب بفرمائن که: تفاوت گذاشتن بین طراحی نرم افزار به صورت مهندسی و طراحی اون به صورت تجاری(بازاری) کار درستیه؟
اگه هست چقدر باید بینشون تفاوت قائل شد؟

**مثلا از خیلی از افرادی که تو بازار نرم افزار بصورت "کد نویس" کار می کنند شنیدم که میگن اصول مهندسی نرم افزار فقط تو طراحی تئوری و یا در نرم افزار های خیلی خیلی بزرگ کاربرد داره و برای طراحی یه نرم افزار متوسط اصلا نیازی به این کار ها که باعث بد قول شدن و تحویل دیرتر پروژه می شه نیست**

تا چقدر با این تفکر موافقید؟
با تشکر.

مساله اصلی اینه که هر پروژه ای با توجه به اندازه اش به برخی از مفاهیم مورد اشاره در بحث طراحی نرم افزار احتیاج دارد.
طبعا برای پروژه های کوچک بسیاری از موارد لازم به طراحی نیست.

مثلا برای ساخت یک خانه یک طبقه با یک اطاق، کسی نقشه تاسیسات خانه رو طراحی نمی کنه ولی برای یک ساختمان 20 طبقه با 80 واحد آپارتمان این کار ضروریه.

frozen
شنبه 07 آبان 1390, 16:20 عصر
اول این که بحث طراحی و انتخاب متد تحلیل رو باهم قاطی نکنید.
در ابتدای کار تولید نرم افزار یک متد تحلیل با توجه به بزرگی پروژه و نوع زبان پیاده سازی انتخاب میشه به عنوان مثال در متد RUP که شی گراست زمانی انتخاب میشه که بزرگی پروژه متوسط به بالاست و زبان شی گرا برای پیاده سازی انتخاب میشه و تحویل اسناد و رعایت استاندارد ها بیشتر مورد توجه قرار دارند ولی زمانی که از متدی مثل Agile استفاده در کنار زبان های Rapid Application Development مثل سی شارپ استفاده میشه که پروژه کوچک باشه تا Prototype برنامه خیلی سریع ایجاد بشه و تغییرات مورد نیاز مشری سریعا اعمال بشه و به مستری تحویل بشه پس خودتون رو ملزم به استفاده از یک نوع متد نکنید چند متد رو یاد بگیرید، حتی میشه از ترکیب متدها استفاده کرد.
باید توجه کرد که هر قسمت از متد ها که حذف بشه باعث عوارض جانبی میشه و قسمتی از کارایی برنامه رو تحت تاثیر قرار میده.
یه مثال در این مورد میزنم اکثر افرادی که بدون در نظر گرفتن اصول مهندسی شروع به کد زدن می کنن برای این که پروژه رو زود تر تحویل بدن قابلیت هایی مثل در نظر گرفتن Reusability در کدها رو فراموش میکنن یعنی سعی نمیکنن کدهای General بنویسن و سعی میکنن مشکل فعلی رو حل کنن در پروژه ی فعلی هیچ مشکلی ایجاد نمیشه حتی در پروژه های آینده، ولی این مثال رو زدم که بگم در نهایت این تاثیر مخرب در بلند مدت روی عملکرد برنامه نویسه و اعمال کردن این استاندارد میتونه زمان زیادی در روند تولید نرم افزار صرفه جویی کنه.
پس در نهایت سعی کنید استاندارد ها رو رعایت کنید چون هر کدوم دلیلی دارند ولی در انتخاب نوع متد دقت کنید.
حالا بریم سراغ طراحی بعد از انتخاب متد مثلا RUP یک متد طراحی مثلا سرویس گرا یا Model Driven باتوجه به نظر فرد و برسی قدرت فرد یا گروه تحلیل و پیاده سازی و به روز بودن و بی نقص تر بودن و تکامل یافته تر بودن طراحی انتخاب میشه.