نمایش نتایج 1 تا 14 از 14

نام تاپیک: برنامه نویسی تیمی(گروهی) و نحوه تقسیم کار

  1. #1
    کاربر دائمی آواتار پرواز
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    شیراز
    پست
    321

    برنامه نویسی تیمی(گروهی) و نحوه تقسیم کار

    سلام.

    اولاً که فکر می کنم این تاپیک جاش اینجا نیست.
    ولی اگه میشه همین جا بمونه تا به نتیجه برسه بعد منتقلش کنید. ممنون.

    بریم سر سوال
    من چند سالی میشه که جسته و گریخته با دلفی برنامه می نویسم. ولی مشکلم اینه که تجربه کار تیمی ندارم و همیشه تنهایی کار می کردم و همه کارها رو خودم انجام می دادم. تو هیچ شرکتی هم کار نکردم (شرکت برنامه نویسی) که کار کردن تیمی رو ازشون یاد بگیرم.
    الان مشکلم اینه که اگه بخوام تیم برنامه نویسی راه بیندازم نمی تونم تقسیم کار کنم. یعنی اصلا نمی دونم باید از هر کسی چی بخوام.
    تو سایت هم تا اونجایی که من جستجو کردم چیزی نبود.
    بعضیا بهم پیشنهاد دادن که چند ماه برم تو یه شرکت کار کنم تا به این کار آشنا بشم. ولی متاسفانه وقت این کار رو ندارم. چون جایی مشغولم.
    می خواستم یه طرحی بریزیم برای راهنمایی همه کسایی که میخوان کار گروهی بکنن و بلد نیستن.
    از دوستانی که تو این زمینه تجربه دارن خواهش می کنم تجربیاتشون رو در اختیار ما هم قرار بدن.
    اگه دوستان بتونن سورس های کوچیک هم آپلود کنند فکر کنم خیلی کمک کنه. (سورسی که شامل قسمت های نوشته شده توسط هر نفر از اعضای تیم بطور جداگانه باشه.)

    ممنون.

  2. #2
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814
    با سلام
    دوست عزیز سوال شما یک جواب ندارد که بتوان آن را بیان کرد.
    کار تیمی در هر جا با توجه به ساختار آن تیم مشخص می شود(مانند اینکه همه ما برنامه می نویسم ولی هر کس به سبک خودش)
    در بعضی از شرکتها تیم گرافیک کار ، کامپونت نویس ، برنامه نویس ، تحلیلگران و . . . دارند ولی در بعضی از شرکتها هر نفر دو سه مورد از این کارها را انجام می دهد.
    تقسیم کار بستگی به تعداد نفرات ، بزرگی کار ، زمان تحویل و . . . دارد.
    موفق باشید

  3. #3
    کاربر دائمی آواتار پرواز
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    شیراز
    پست
    321
    نقل قول نوشته شده توسط SYNDROME مشاهده تاپیک
    با سلام
    دوست عزیز سوال شما یک جواب ندارد که بتوان آن را بیان کرد.
    کار تیمی در هر جا با توجه به ساختار آن تیم مشخص می شود(مانند اینکه همه ما برنامه می نویسم ولی هر کس به سبک خودش)
    در بعضی از شرکتها تیم گرافیک کار ، کامپونت نویس ، برنامه نویس ، تحلیلگران و . . . دارند ولی در بعضی از شرکتها هر نفر دو سه مورد از این کارها را انجام می دهد.
    تقسیم کار بستگی به تعداد نفرات ، بزرگی کار ، زمان تحویل و . . . دارد.
    موفق باشید
    ببینید دوست عزیز
    هدف من اینه که بدونم کار چطور تقسیم می شه. یعنی چه طور میشه کار رو به اجزای کوچیکتری تقسیم کرد. حالا مهم نیست که هر نفر چندتا از این کارها رو انجام میده.

  4. #4
    در ادامه صحبتهای آنلاین :
    اولا مهمترین چیز در برنامه نویسی تیمی وجود تحلیل کامل و و پیشبینی کردن تمامی قسمتهای برنامه تا انتها هست و بعد هم Document کردن تمامی قسمتها و وظایف هریک از افراد که باید همیشه مستند شده در اختیارشون قرار بگیره.
    بعد از اون هم هرچه بیشتر Object Orinted و Model Based به قضیه نگاه کنید حتما نتیجه بهتری خواهید گرفت ، یعنی اینکه هرچه بیشتر بتونید به این سمت برید که از هریک از اعضای تیم بخواهید کلاسهای جداگانه های بنویسند که وظایف خواصی دارند و یکسری ورودی و حروجی خاص دارند که این ورودی و خروجی ها در واقع رابطهای بین این کلاسها هستند ، یک مثال میزنم :
    فرض کنید 3 نفر هستید و میخواهید یک برنامه مثلا محاسبه مساحت شکلهای هندسی بنویسید که اطلاعات این اشکال در دیتابیس هیت و نهایتا مساحت هم دوباره میرو توی دیتابیس:
    مدیر پروژه کار رو به سه قسمت تقسیم میکنه :
    یک نفر مسئول این میشه که کلاسی بنویسه که با گرفتن کلید یک رکورد در دیتابیس تمام اطلاعات اون شکل رو از دیتابیس لود بکنه و مثلا در پراپرتیهاش نگهداری بکنه و همینطوری این امکان رو داره که اگر تغییری در این مقادیر بوجود اومد این تغییرات رو هم در دیتابیس ذخیره بکنه.
    نفر دوم مسئوله که کلاسی بنویسی از ورودی تعداری پارامتر مثل طول و عرض و نوع شی رو دریافت کنه و مساحتش رو محاسبه بکنه : این شخص کاری نداره که این اطلاعات از کجا می آیند و نتیجشون به کجا میره .
    نهایتا هم نفر سوم مسئول طراحی UserInterface میشه ، ابن شخص میدونه که باید تعداری آبجکت روی فرم بزاره که بعضیهاشون برای دریافت اطلاعات هستند و بعضیهاشون برای نمایش اطلاعات.
    بعد از اینکه این سه بخش آماده شد، حالا مثلا مدیر پروژه ار فرم درست شده اطلاعات ورودی رو دریافت میکنه و میفرسته به کلاسی که با دیتابیس کار میکنه وقتی کلاسی که با دیتابیس کار میکرد اطلاعات رو برگردوند اطلاعات برگشته شده رو به کلاسی که وظیفه محاسبه داره میده و اطلاعات محاسبه شده رو از این کلاس میگیره و دوباره میده به Interface تا به کاربر نشون بده و درصورتیکه نیاز به ذخیره کردن اطلاعات محاسبه شده در دیتابیس بود این مقادیر رو به کلاسی که وظیفش کار با دیتابیس هست میده که ذخیرشون بکنه....
    در این مثال 3 نفری که 3 تا کلاس رو نوشند اصلا نه از کل پروژه خبر دارند و نه به اینکه کسی دیگه ای چه کار میکنه و نه باید منظر بمونند تا یکی دیگه کارش رو انجام بده تا بعد اونها بتونند کارشون رو انجام بدهند، هر شخصی یک مستند میگیره که توش توضیح داده شده که کلاسی که مینویسه باید چه ورودیهایی داشته باشه چه کارهایی بکنه و نهایتا چه خروجی داشته باشه.
    اما همونطوری که گفتم رسیدن به این مرحله که بشه پروژه رو اینقدر خوب کلاس بندی کرد نیازمند داشتن یک دید قوی به کل پروژه و داشتن دید OOP قوی هست.

  5. #5
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814
    با سلام
    نقل قول نوشته شده توسط پرواز مشاهده تاپیک
    ببینید دوست عزیز
    هدف من اینه که بدونم کار چطور تقسیم می شه. یعنی چه طور میشه کار رو به اجزای کوچیکتری تقسیم کرد. حالا مهم نیست که هر نفر چندتا از این کارها رو انجام میده.
    دقیقا صحبتهایی که Ghabil گفت درست است و می توان ساختار یک تیم باشد ولی به این دقت کنید که این ساختار با توجه به شرکت مورد نظر تغییر می کند و هر شرکت چنین سرفصلهایی برای خود دارد.
    ممکن است نحوه تقسیم کار یک تیم در یک تیم دیگر جوابگو نباشد.
    1-تعداد نیرو.
    2-توانایی نیروها.
    و . . .
    موفق باشید

  6. #6
    کاربر دائمی آواتار پرواز
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    شیراز
    پست
    321
    مثال خیلی جالبی بود جناب کوشا.
    واقعا دستتون درد نکنه.
    یه سوال دیگه در ادامه همین مطالب داشتم:
    من تا حالا از کلاسها به صورت حرفه ای استفاده نکردم. بیشتر از پروسیجرها و فانکشن ها بدون تعریف در یک کلاس مشخص استفاده می کردم.
    می خواستم بدونم تعریف کلاس چه مزیتی نسبت به فانکشن نویسی خالی داره؟ و چرا تو برنامه باید از کلاسها استفاده بشه؟

  7. #7
    برنامه نویسی OOP مزیتهای زیادی نسبت به برنامه نویسی Procedural داره که حداقل توی این مثال 3 تاشون کاملا معلوم اند :
    اولا همینطوری که میبینی مدیریتش راحتتره یعنی با تکه تکه کردن برنامه و ساختن کلاسهایی که مستقلا هرکدوم یک وظیف ای رو انجام میدن میشه وظایف رو تقسیم کرد بدون اینکه نگران بود که بقیه قسمتها توی چه شرایطی هستند.
    دوما دیباگ کردن و توسعه دادنش(به لحاظ خوانا بودن کدت) خیلی راحتتره ، یعنی مثلا توی این مثال اگر دیدی مساحت درست حساب نمیشه خب لازم نیست بری وسط کدهایی که برای دیتابیس نوشتی و قاطی کدهای محاسبه مساحت هستند دنبال باگ بگردی یا بخوای تغییر بدی ، بلکه جای هرچیزی قشنگ معلومه و میدونی مستقیما باید کجا بری.
    سوما : امکان دوباره استفاده کردن از کدهات رو داری یعنی مثلا وقتی تو برای این پروژه یک کلاس نوشتی که بلده یک محاسباتی رو انجام بده و این کد رو قاطی یوزر اینترفیس و بقیه کارها نزاشتیش ، خب خیلی راحت میتونی از این کلاس توی یک پروژه دیگه هم استفاده کنی.
    اما از اینا که بگذریم مزایای بسایر زیادی که از طریق خواص OO بدست میاری مثل امکان استفاده از Abstraction و Inheritance واقعا توی پروژه های بزرگ این دو روش رو با هم غیر قابل مقایسه میکنند و به همین خاطره که دنیای برنامه نویسی توی همه زمینه ها روز به روز بیشتر به سمت OOP محض پیش میره.

  8. #8
    کاربر دائمی آواتار پرواز
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    شیراز
    پست
    321
    ممنون جناب کوشا.
    تقاضای من اینه که اگه میشه یه کلاس از مثال بالا رو بنویسید و نحوه استفاده اونو تو یک پروژه بیان کنید. البته لازم نیست که حتما یه کلاس با همه فانکشن ها و پروسیجرها و پروپرتی ها بذارید.
    یه کلاس خیلی ساده که فقط جنبه آموزشی داشته باشه. کلاسی که شامل اکثر موارد (آموزشی) مورد نیاز برای کلاس نویسی باشه که هم من یاد بگیرم هم بقیه دوستانی که تا به حال کلاس نویسی نکرده اند.
    ممنون

  9. #9
    سلام
    من و 3 نفر از دوستان از ترم اول دانشگاه (3 سال پیش) شروع کردیم به کار، یعنی یک گروه نرم افزاری کوچیک. هر پروژه ای رو یه جور مدیریت می کردیم. خلاصه توی کار گروهی افتان خیزان پیش رفتیم! ولی پروژه به پروژه وضعیت بهتر شد. البته هنوز کارمون تا یک کار گروهی مهندسی خیلی فاصله داره.
    پست 4 (جناب کوشا) توضیح خوبی بود. برای کار گروهی یکسری قواعد حتماً باید رعایت بشه.
    + تحلیل باید دقیق و مستندات کامل باشه.
    + کارها حتی الامکان بصورت وظایف کوچیک که حداکثر طی یک نشت کاری مداوم یک شخص (حدود 2 ساعت) قابل انجام باشه تقسیم بشه.
    + خیلی خوبه که برنامه نویسی بصورت گروهای گردشی 2 نفره انجام بشه (که بعد از انجام دو نفری یک وظیفه پای یک سیستم گروه عوض میشه و ...).
    + حتماً سورس کنترل داشته باشید.
    + حتماً لیست به روز مشخصات به همراه وضعیت پیشرفت هر کدوم داشته باشید.
    + حتماً لیست باگ داشته باشید و اولویت انجام کار رو به رفع باگ بدید (به جای توسعه مشخصه های بعدی).
    + حتماً قراردادهای مشترک نامگذاری و .... رو قبل از شروع کار مشخص کنید.
    + حتماً کامپایل روزانه داشته باشید. بهتره پایان هر شیفت کاری، مثلاً ظهر و شب، سورس کامل (یعنی شامل سورس نوشته شده توسط تمام افراد) رو یکپارچه کرده و کامپایل و تست کنید.
    + مستند سازی دقیق کد صددرصد لازمه.
    آخرین ویرایش به وسیله شهریاری : شنبه 07 مهر 1386 در 06:37 صبح دلیل: نقص نوشته

  10. #10
    یک کتاب خیلی عالی از انتشارات ناقوس که نکات واقعاً به دردبه خوری برای برنامه نویسی داره به خصوص برنامه نویسی گروهی، دات نتی ها حتماً بخونن:

    معرفی تکنیک های Extreme Programming برای برنامه نویسان NET .
    نوشته نیل رودین | ترجمه سیاوش مرتضوی | شامل 272 صفحه | قیمت کتاب 35000 ریال

    این کتاب به شما آموزش می دهد که چگونه از تکنیک های Extreme Programming) XP) ، به همراه تکنولوژی .NET ، برای تولید کدهایی با کیفیت بالاتر و هزینه کمتر استفاده نمایید ، تا نرم افزارهای بهتری را تولید کنید . این کتاب ، یک راهنمای عملی و واقع گرایانه است که اجزای اصلی متدلوژی XP را برای استفاده در برنامه های .NET ، تحت پوشش قرار می دهد . برخی از این تکنیک ها عبارتند از : بازی برنامه ریزی ، برنامه نویسی دونفره ، توسعه تست گرا ، فاکتورگیری مجدد و ...
    تمرین های گام به گام این کتاب ، کاربرد عملی تکنیک های XP را به شما نشان می دهند و شما را تشویق می کنند تا برای بکارگیری آنها ، جسارت داشته باشید .
    خواندن این کتاب موجب می شود که روش های نادرست کدنویسی خود را کنار بگذارید و با استفاده از تکنیک هایی که صحت آنها به اثبات رسیده است ، نرم افزارها را با کیفیت بالاتری تولید نمایید.

  11. #11
    تو یه پروژه بزرگ چجوری کارایی قسمتهای مختلف که توسط افراد مختلف نوشته شده تست میشه؟
    منظورم اینه که وقتی هر کس یه کلاسی نوشت آیا این کلاسها در آخر کار بهم چسبونده میشن و کارایی سیستم تست میشه؟ یا در طول کار این کارایی تست میشه؟ اگه پاسخ دوم درست هست لطفا بگید چجوری؟

  12. #12
    منظورم اینه که وقتی هر کس یه کلاسی نوشت آیا این کلاسها در آخر کار بهم چسبونده میشن و کارایی سیستم تست میشه؟ یا در طول کار این کارایی تست میشه؟ اگه پاسخ دوم درست هست لطفا بگید چجوری؟
    چندین روش تست داریم
    در روش اول بلوک بلوک کد شما تست میشه تا زا درست بودنش اطمینان حاصل شه
    در روش دوم کلاس داخل برنامه توسط خود برنامه نویس توسط چند پارامتر خاص تست میشه که درست جواب بده
    در روش سوم برنامه و کلاس تحت شرایط خاص مثلا test case هایی که ممکنه ایجاد exception کنن تست میشه چون معلون نیست کاربر چی وارد میکنه!!!
    و در حالت چهارم برنامه به صورت pilot در اختیار کاربر قرار میگیره تا تست بتا بشه . بعد release

    البته 90 درصد جاها فقط روش دوم و چهارم اجرا میشه
    موفق باشید

  13. #13

    نقل قول: برنامه نویسی تیمی(گروهی) و نحوه تقسیم کار

    با تشکر سوالی داشتم ..اینکه اگر بخواهیم در هر کدام از این لایه های صحبت شده در مدل چند لایه ....به صورت گروهی کار کنیم .... ایا راه حلی به نظر شما میاید .... به خصو ص لایه ی presentation و ایا میتوانیم چند فرم را به شورت مجزا ساخته و در انتها با هم ترکیب کنیم؟؟

  14. #14
    کاربر تازه وارد
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    تهران
    پست
    48

    نقل قول: برنامه نویسی تیمی(گروهی) و نحوه تقسیم کار

    سلام به نظر من اين طريقه مثال دادن واقعا عجيب است . چرا چون يك چيزي كه قطعه نداره دارين تجزيه مي كنيد . به نظر من پروژه هاي برنامه نويسي بزرگ استفاده از oop لازم است و براي پروژه هاي كوچكتر اين كار لازم نيست .
    من پروژه يك مجموعه را داشتم كه كه هر كدام چندين قسمت داشت قسمت اداري كه شامل پرسنلي و ورود و خروج نامه ها بود قسمت گروههاي برنامه سازي كه كار آنها شامل ساخت برنامه هاي تلويزيوني بود قسمت توليد كه وظيفه تامين تجهيزات و عوامل را داشت و گروه مديريت كه وظيقه نظارت را داشت گروه تامين كه وظيفه تامين برنامه هاي آنتن را داشت گروه پخش كه وظيفه پخش برنامه ها را داشت گروه آرشيو كه نگهداري و آرشيو برنامه هاي توليدي را داشت مهمترين گروه گروه اطلاعات برنامه ريزي بود كه تخصيص منابع براي ساخت برنامه ها به دستور مدير شبكه را داشت من هر گروه را مشخص كردم بعد تداخل هاشون بعد بر طبق آن برنامه نويسي را شروع كردم گاهي براي يك گزارش بايد از تداخل جداول اطلاعات گروهها استفاده مي كردم اما كلا اين برنامه را مي توان بعد از مشخص كردن وظايف و تداخل ها هر كدام را به يك گروه براي كار داد هر سرپرستي بايد در جلسه هفتگي شركت كند تا كار تقسيم بندي شود مثلا گروه توليد از اطلاعات گروه اداري و جدول پرسنلي استفاده مي كند و نيز از اطلاعات انبار تجهيزات - اطلاعات برنامه ريزي از اطلاعات گروه توليد در هنگام ارزيابي مالي استفاده مي كند و ...
    هر كدام از اين قسمت ها چند نفر را مي توانيم سر كار قرار دهيم مثلا قسمت توليد چندين كار دارد كه فرم ورود اطلاعات خاصي داشت كه واقعا كار مي برد جداول تخصيص تجهيزات واقعا طراحي آنها وقت مي برد درك كار با ديتا گريد كه به صورت خاصي بود با توجه به كمبود منابع طراحي خاص آن ( استفاده از چك باكس و پروپرتيهاي درون آن و پاسخ دادن به رويدادها ) كار دشواري بود كه كار گروهي را مي طلبيد
    اين براي تقريبا يك برنامه بانك اطلاعاتي است .
    اما كار براي ساخت يك برنامه كاربردي مثل برنامه مايا كار تيمي واقعا لازم است واقعا تيم هاي تخصصي و تيم هاي غير برنامه نويس بايد با تيم هاي برنامه نويس كار حرفه اي انجام دهند در آن برنامه ها ابتدا ساخت يك برنامه ساده كوچك ساخت يك شي ء سه بعدي طبق نظر چند متخصص رياضيات كاربردي و رياضي كامپيوتري شروع مي شود بعد گروه هاي برنامه نويس و گرافيست با هم نظراتي را وارد مي كنند در اينجا هر جايي كه برنامه به مشكل برخورد دوباره به سمت متخصصان اوليه بر مي گردد هر تيمي براي ساخت هر كامپوننت در مورد نياز شروع به كار مي كند هر تيم يك برنامه نويس ارشد كه كارهاي اصلي را انجام مي دهد و چند برنامه نويس مكمل ( بخوانيد مكمل نخوانيد دوم يا شاگرد ) دارد كه برنامه نويس ارشد شايد كار برنامه نويسي ضعيفتر از اعضاي مكمل داشته باشد ولي نياز ها را مشخص مي كند و برنامه نويس هاي مكمل آن را انجام مي دهند
    موفق باشيد

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •