چگونه يک پروژه نرم افزاري را با موفقيت انجام دهيم!؟

در دوران دانشجويي و حتی قبل از دانشجویی برای من خیلی پیش آمد که برای کسی برنامه بنویسم و پروژه نرم افزاری انجام بدم. بعضی هایش را قبول کردم و برخی را به علت هایی رد کردم. اوایل که جوگیر شده بودم و فکر میکردم خیلی برنامه نویسم، اگر هر پروژه ای به من واگذار میشد، نه نمی گفتم. خوشبختانه آن اوایل به جز یک برنامه، پیشنهاد دیگری به من نشد! به هر حال، در این اواخر رویه ای را پیش گرفتم در پروژه گرفتن و پروژه انجام دادن، که فکر میکنم رویه درستی است و از آن نتیجه های خوبی هم گرفتم. اگر دانشجو هستید و مثل من کم تجربه، حتماً قبل از گرفتن پروژه مسائلی که در این مطلب ذکر کردم را در نظر داشته باشید.

پروژه را قبول کنيم يا خير!
قبل از اينکه جواب اين سئوال را بدهيد، بايد پروژه اي که قرار است انجام دهيد را بفهميد. براي اين کار هم بايد به صورت حضوري با کارفرما ملاقات کنيد و اگر ملاقات حضوري در دسترس نيست، بوسيله تلفن با او صحبت کنيد. سئوالات و ابهامتان را در مورد پروژه از کارفرما بپرسيد. سعي کنيد تمام سئوال هايتان را از قبل در يک برگه بنويسيد تا هنگام صحبت با کارفرما سئوالي را فراموش نکنيد، چون معمولاً کارفرما را کمتر در طول انجام پروژه ملاقات مي کنيد. بعضي از کارفرمايان عادت دارند که از جواب دادن به سئوالات شما فرار کنند و با گفتن جمله اي شبيه به «ببينيد من فقط ميخواهم اين پروژه کار من را راه بيندازد و فلان کار را به خوبي انجام دهد» و از اين دست جمله ها، سر و ته صحبت را به هم بياورند. شما بايد بتوانيد هر اطلاعاتي که لازم داريد از زير زبان کارفرما بيرون بکشيد. اين يک مهارت است. خيلي وقت ها کارفرمايان شما از سيستم هاي کامپيوتري چيزي نمي دانند و نبايد تعجب کنيد که حتي دستشان به ماوس هم نخورده باشد! اگر کاربر سيستم شما همان کارفرما باشد که کارتان خيلي سخت خواهد بود. در غير اين صورت حتماً بعد از صحبت با کارفرما با کاربراني که قرار است با سيستم شما کار کنند نيز صحبت کنيد و از سطح آشنايي با کامپيوتر و سواد آن ها اطلاع پيدا کنيد. آشنايي با کاربران سيستم، ديد شما را بازتر خواهد کرد.

امکان سنجي کنيد
بعد از اينکه فهميديد کارفرما واقعاً چه مي خواهد، امکان سنجي کنيد که آيا مي توانيد با دانش خود و ابزارهاي موجود اين پروژه را انجام دهيد يا خير. به هر حال خودتان بهتر مي دانيد چه توانايي هايي داريد و با چه ابزارهايي آشنايي داريد. اگر پروژه اي فقط با يک ابزار خاص بايد انجام شود و شما کار با آن ابزار را بلد نيستيد، خيلي راحت پروژه را قبول نکنيد. هرگز به اميد اينکه طي انجام پروژه، کار با ابزاري را ياد خواهيد گرفت، پروژه اي را قبول نکنيد. فاکتورهای بسیار مهم دیگری که باید تخمین بزنید و در نظر بگیرید، زمان و هزینه پروژه هستد. معمولاً زمان تحویل را کارفرما تعیین می کند، اگر حتی یک درصد هم امکان می دهید که این زمان برای انجام چنین پروژه ای کم است، پروژه را قبول نکنید یا وقت بیشتری از کارفرما بخواهید. اگر زمان تحویل دست خودتان است، زمانی که تخمین می زنید را دو برابر کنید و در قرارداد ذکر کنید. دستمزد انجام پروژه معمولاً دست شما نسیت و کارفرما آنقدر چانه زنی می کند که شما را از رو خواهد برد. اگر پول برایتان مهم نیست و فقط برای کسب تجربه پروژه انجام می دهید که هیچ، اما اگر دستمزدتان برایتان مهم است حتماً قیمت معقولی را بر اساس حجم کار و زمانی که از شما خواهد گرفت، بدهید. این قیمت می تواند تحت تاثیر اعتبارتلن نیز قرار گیرد. به هر حال من خودم هنوز به فرمول مشخصی برای قیمت دادن نرسیدم.

حتماً قرارداد ببنديد

هر چقدر هم پروژه مورد نظر کوچک باشد، شما بايد با طرف مقابل قرارداد محکمي ببنديد و حتماً امضا و احتمالاً مهر کارفرما را زير آن قرارداد داشته باشيد. حتماً فاکتور زمان و استثناهايي که ممکن است در طول انجام پروژه پيش بيايد را در بندهاي قرارداد جاي دهيد. هزينه انجام پروژه را به صراحت در قرارداد ذکر کنيد و بندي قرار دهيد که مثلاً 50 درصد هزينه را کارفرما در طي انجام پروژه پرداخت کند و بقيه را حداکثر تا 10 روز پس از تحويل پروژه بپردازد. اگر کارفرما به پشتيباني نياز دارد، حتماً و تاکيد مي کنم حتمآً چند بند را در قرارداد براي خدمات پشتيباني و استثناهاي مربوط به آن کنار بگذاريد. به طور مثال شما مي توانيد با همان هزينه انجام پروژه، يک سال به صورت رايگان پشتيباني را انجام دهيد. در اين صورت بطور دقيق تاريخ اتمام يک سال خدمات پشتيباني رايگان را ذکر کنيد. براي استفاده از خدمات پشتيباني نرخي را در قرارداد ذکرکنيد و بندي هم قرار دهيد که ممکن است در سال هاي بعد اين نرخ افزايش يابد. حتماً مشخص کنيد که اين خدمات پشتيباني فقط مربوط به مشکلات مربوط به نرم افزار شماست نه چيز ديگر. مثلاً ذکر کنيد که شما در قبال مشکلات سخت افزاري و نصب ويندوز و اين جور چيزها مسئوليتي نداريد.

پروژه را تحليل کنيد

نيازهاي هر کاربر از سيستم را ليست کنيد. سرويس هايي که قرار است سيستم به کاربران مختلف بدهد را مشخص کنيد. اگر با مباحث مهندسي نرم افزار آشنايي داريد، اين قسمت همان شناسايي Actorها و Usecaseهاي سيستم است. هر چقدر شناخت خود را از پروژه افزايش دهيد، کيفيت خروجي کار شما بالاتر خواهد بود و در نتيجه کارفرما راضي تر. پس تا مي توانيد مرحله شناخت نيازها و تحليل سيستم را جدي بگيريد. خروجي فسمت تحليل، مستنداتي است که بر اساس آن پروژه شکل مي گيرد. سعي کنيد همه چيز را مستند کنيد. از مصاحبه هايي که با کاربران سيستم انجام داده ايد تا مسائل فني را براي خودتان بنويسيد. حتي اگر پروژه خيلي هم به نظراتان کوچک باشد، باز هم اين مستندات لازم و حياتي هستند. در قسمت طراحي و پياده سازي متوجه خواهيد شد که اين مستندات چقدر فهم مسئله را ساده تر مي کنند. در اینجا می توانید از یکی از روش های معمول مهندسی نرم افزار برای تحلیل استفاده کنید.

فاز طراحي را جدي بگيريد

با استفاده از مستندات قسمت تحليل، بايد طراحي سيستم نرم افزاري را شروع کنيد. کلاس هاي سيستم را با توجه به مستندات و شناختي که از سيستم داريد مشخص کنيد. اين کلاس ها ممکن است در زمان پياده سازي تغييراتي بکنند. شما فعلاً به صورت کلي کلاس ها را ببينيد. سعي کنيد براي درک بهتر آن ها، دياگرام کلاس ها را نيز رسم کنيد. در اين فاز معماري سيستم نيز مشخص مي شود. ابتدا معلوم کنيد که پلت فرمي که قرار است سيستم روي آن کار کند چيست. مثلاً قرار است نرم افزار تحت وب کار کند يا تحت ويندوز. البته پلت فرم بسياري از پروژه ها در هنگام سفارش، معلوم مي شود. اگر پلت فرم بستگي به نظر شما دارد، سعي کنيد پلت فرمي را انتخاب کنيد که هم روي آن تجربه و تخصص داريد و هم مناسب انجام اين پروژه است.

پياده سازي

اگر فازهاي قبلي را به درستي انجام داده باشيد، در پياده سازي با مشکل حادي برخورد نخواهيد کرد. مستندات دو فاز قبلي مشخصات پياده سازي را تعيين مي کنند. اگر پروژه شما نياز به يک پايگاه داده براي ذخيره اطلاعات دارد (که در اکثر پروژه ها همينطور است)،ابتدا داده هايي که قرار است ذخيره کنيد را بر اساس مستندات فازهاي قبلي شناسايي کنيد. اگر مي توانيد نمودار روابط بين موجوديت ها يا ERD و Data Model را براي درک بهتر بانک اطلاعاتي سيستم رسم کنيد. براي بانک اطلاعاتي خود يک RDBMS مناسب انتخاب کنيد. وقتي به طور مثال SQLite يا Access نياز شما را برطرف مي کنند، بيخودي خود را درگير پيچيدگي هاي SQL Server يا Oracle نکنيد.

براي پياده سازي يک پروژه نرم افزاري، احتياج به ابزارهاي توسعه نرم افزار و يک زبان برنامه نويسي داريد. اگر کارفرما اين ها را مشخص کرده که هيچ، اما اگر بستگي به خودتان دارد، ابزار و زباني را انتخاب کنيد که در آن تجربه داريد و متناسب با پروژه شماست. پلت فرم ها و محيط هاي معمول توسعه نرم افزار براي پروژه هاي شما مناسب هستند، پس اصلاً نگران انتخاب ابزار و زبان نباشيد.

معمولاً بعد از پیاده سازی و تحویل نهایی به کارفرما کارتان تمام نمی شود. تازه بعد از آن است که کارفرما هر روز با شما تماس می گیرد که فلان قسمت برناه را برایش عوض کنید یا قابلیت جدیدی به آن اضافه کنید. در اینجا فقط یک قرارداد محکم می تواند شما را نجات بدهد. باید در قراردادی که با کارفرما بسته اید، بندهایی برای تغییر در نرم افزار و اضافه کردن قابلیت جدید به آن در نظر بگیرید که زبان شما هم در مقابل کارفرما دراز باشد.

در آخر

اگر صلاحیت فنی و روحی انجام پروژه ای را در خودتان نمی بینید، به هیچ وجه قبولش نکنید، چون دردسرهای زیادی برایتان پیش خواهد آورد. سعی کنید به هیچ وجه با کارفرما خودمانی نشوید و شوخی نکنید، کلاس کاری خود را حفظ کنید و فاکتور زمان را حتمآً رعایت کنید. پروژه را که سروقت تحویل دهید در حقیقت به اعتبارتان افزوده اید. کارفرمایان اوصولاً در هنگام پول دادن کم پیدا می شوند و شما اگر بهترین نرم افزار هم برایش تولید کرده باشید، باز ایراد خواهد گرفت و از شما تخفیف خواهد خواست.

اگر سئوال یا ابهامی دارید در کامنت های همین مطلب ذکر کنید تا به آن پاسخ داده شود.

[Code to look] یکشنبه 20 اردیبهشت 88

من اعتقاد دارم که یکی از بهترین راه های یادگیری قابلیت های زبان های برنامه نویسی و فناوری های جدید برنامه نویسی، نگاه کردن به سورس کدهای آماده ای است که برای منظورهای مختلف نوشته شده اند. سایت هایی مثل گالری کد MSDN و سایت CodeProject شامل کدهای نمونه بسیار خوبی در مورد زبان های سی شارپ و ویژوال بیسیک و فناوری های جدید پلت فرم دات نت هستند. از این پس هر 10 روز یکبار در این وبلاگ شاهد پست هایی با عنوان «[Code to look]» خواهید بود که شامل لینک به تعدادی کد نمونه جالب و آموزشی از وب سایت های فوق خواهند بود. سعی میکنم نظم 10 روز یکبار این پست ها را حتماً رعایت کنم.

Employee Info Starter Kit

این پروژه قابلیت مدیریت اطلاعات کارمندان یک شرکت کوچک را دارد و به شما نشان می دهد که چگونه یک برنامه تجاری کوچک بنویسید. با نگاه کردن به کدهای این پروژه نکات زیادی از ASP.NET و SQL Server یا خواهید گرفت.

دریافت کنید

Asynchronous Sockets

این کد با استفاده از کتابخانه Nito.Async امکان فرستادن و دریافت پیغام، با استفاده از پروتکل TCP/IP دارد. این کد نمونه، نحوه ایجاد یک برنامه کلاینت/سرور که قادر به ارتباط با یکدیگر توسط برنامه نویسی سوکت هستند، را به شما نشان می دهد.

دریافت کنید

C# Samples for Visual Studio 2008

کدهای نمونه سی شارپ 2008 که شامل نمونه کدهایی است که امکانات جدید سی شارپ 2008 را به شما یاد می دهند.

دریافت کنید

Visual Basic 2008 Samples

کدهای نمونه ویژوال بیسیک 2008 که شما را با امکانات جدید این زبان محبوب با استفاده از مثال های متعدد، آشنا می کند.

دریافت کنید

Chess Board

بازی شطرنج ساده ای که با استفاده از سی شارپ 2005 نوشته شده و حتماً مطالب زیادی برای یاد دادن به شما دارد!

دریافت کنید

Glass Button using GDI+

نحوه ایجاد یک دکمه زیبا که به Glass Button معروف است را به شما در سی شارپ 2005 آموزش می دهد.

دریافت کنید

Show Your Data on Google Map using C# and JavaScript

همانطور که از عنوانش مشخص است به شما یاد می دهد که چگونه اطلاعات برنامه خودتان را روی سرویس نقشه گوگل توسط سی شارپ و جاوا اسکریپت نشان دهید.

دریافت کنید

اگر می خواهید مطالب این وبلاگ را از دست ندهید، مشترک فيد فراسان شويد.

چطور مشترک شويم؟

شرکت های نرم افزاری برای «ویندوز 7» آماده شوند!

همانطور که می دانید چند وقتی است شرکت مایکروسافت با نسخه جدید سیستم عامل ویندوزش یعنی ویندوز 7 سر و صداهای زیادی به پا کرده است. نسخه RC ویندوز 7 هم اکنون برای دانلود در وب سایت مایکروسافت در دسترس است. مایکروسافت قول تغییرات زیادی را در این ویندوز داده است و قصد دارد شکست ویستا را با ارائه ویندوز 7 جبران کند. از قرار معلوم ویندوز 7 نسبت به ویستا برتری هایی در سرعت، ظاهر، سازگاری بیشتر با سخت افزارها و امکانات دارد. تاسک بار در ویندوز 7 از نو طراحی شده و امکانات خوبی به کاربر برای مدیریت پنجره های باز می دهد. قابلیتی به نام Libraries کاربران را در یافتن فایل های خودش یاری می کند (لینک هایی به فایل ها را در یکجا در دسترس کاربر قرار می دهد). تکنولوژی های جدیدی مثلی Multi-touch که کاربران ویندوز 7 را قادر به استفاده از دستگاه های جدید لمس چندگانه می کند.

Windows 7 firom Microsoft

کاربران نهایی ممکن است از این ویندوز خیلی لذت ببرند و از آن استفاده کنند. شاید هم پس از چند روز استفاده از آن بیزار شوند و به جای آن سیستم عامل دیگری نصب کنند. در نظر کاربران نهایی سیستم عامل ویندوز 7 خیلی از مسایل پنهان می ماند. این تولیدکنندگان نرم افزاری هستند که باید خود را با ویندوز جدید مایکروسافت هماهنگ کنند.EN-w7-comp_rgb_L_3

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

خبر خوب این است که اگر نرم افزاری هم اکنون روی ویندوز ویستا به خوبی اجرا می شود، به طور حتم می توان گفت بدون هیچ تغییری در نرم افزار مربوطه، روی ویندوز 7 نیز به خوبی اجرا خواهد شد. برای اینکه مطمئن شوید که نرم افزار شما بدون هیچ مشکلی روی ویندوز ویستا نسخه نهایی اجرا خواهد شد یا خیر قدم های زیر را دنبال کنید :

  • Windows Application Compatibility Toolkit (ACT) 5.5 و Application Verifier 4.0 را دانلود و نصب کنید. این برنامه ها به شما می گویند که نرم افزر شما با کدام امکانات نسخه جدید ویندوز مشکل خواهد داشت و شامل مستنداتی هستند که به شما در ساخت نرم افزاری که با نسخه جدید ویندوز کاملاً سازگار باشد، کمک می کنند.
  • کتاب Windows 7 Application Quality Cookbook را دانلود کنید و بخوانید. این کتاب در مورد سازگاری نرم افزارهای دیگر با ویندوز، امکانات جدید ویندوز 7 و ویندوز سرور 2008 و تغییرات در بخش های مهم ویندوز مطالب خوبی دارد.

به هر حال ویندوز 7 در سال 2009 بر اساس قولی که مایکروسافت داده است در سال 2009 به بازار خواهد آمد. پیش بینی می شود که استقبال کاربران از این ویندوز خیلی بیشتر از ویندوز ویستا خواهد بود. خیلی از کسانی که از ویندوز اکس پی استفاده می کنند و به ویندوز ویستا مهاجرت نکرده اند، حتمآً از ویندوز 7 استفاده خواهند کرد، زیرا دیگر ویندوز اکس پی جوابگوی آن ها نخواهد بود. می توانید با دریافت و نصب نسخه RC ویندوز 7 با امکانات جدید آن آشنا شوید و نرم افزارهای خود را روی آن امتحان کنید.

منبع قسمتی از مطلب : A Developer’s Guide to Preparing for Windows 7

مطالب مرتبط :

اگر تمايل به دنبال کردن مطالب اين وبلاگ داريد، مي توانيد مشترک فيد فراسان شويد.

چطور مشترک شويم؟

برنامه نویسی و آینده شما!

نمیدونم هیچ وقت به این موضوع فکر کردید که تا چه موقع می توانید برنامه نویسی کنید و از این راه زندگی خودتان را بگذرانید! و در آخر که به زندگی حرفه ای خود می نگرید، آیا از آن راضی خواهید بود یا خیر!؟ منظورم کسانی که برای سرگرمی برنامه نویسی می کنند یا در کنار آن شغل دیگری برای گذراندن زندگی دارند نیست. منظورم دقیقاً کسانی است که از حرفه برنامه نویسی و تولید نرم افزار (نه فروش بسته های نرم افزاری آماده و سورس باز به ملت) خرج زندگی شان را در می آورند و به آن به عنوان یک شغل حرفه ای نگاه می کنند. این گروه به خوبی می دانند که حرفه برنامه نویسی با چه مشکلاتی در ایران مواجه است و چه سختی ها و بی محبتی هایی که در حق این حرفه انجام گرفته شده و خواهد گرفت اما باز هم حاضرند برای پیشرفت این حرفه در ایران تلاش کنند و زحمت و سختی را به جان بخرند.

برنامه نویسی و آینده شما

آینده خود را در برنامه نویسی چطور می بینید!؟

برای بررسی این موضوع باید افراد برنامه نویس و کسانی که به کار تولید نرم افزار مشغول هستند را دسته بندی کرد و در آخر به یک جمع بندی کلی رسید. هر چند ممکن است این دسته بندی هایی که من انجام می دهم درست نباشد، اما از دید خودم برنامه نویسان را در طول حرفه کاری شان به چند دسته زیر تقسیم می کنم :

  • برنامه نویسان ماندگار و معروف : این افراد زندگی حرفه ای خود را وقف پیشرفت در یک زمینه خاص نرم افزار و برنامه نویسی می کنند و شاید هم در طول عمر خود مفاهیم جدیدی در این زمینه ایجاد کنند. نام این گونه افراد در تاریخ برنامه نویسی ایران یا حتی جهان ثبت می شود و کتاب هایشان به دانشجویان و برنامه نویسان جوان درس داده می شود. من هنوز در ایران کسی را که موفق به کسب این درجه شده باشد، نمی شناسم.
  • برنامه نویسان موفق : افرادی که در طول عمر حرفه ای خود آدم موفقی بوده اند و محصولاتی موفق ارائه داده اند و یک شرکت تجاری موفق را بر اساس این محصولات ایجاد کرده اند. شاید نام این افراد را خیلی ها حتی نشنوند اما نام شرکت و محصولاتشان زبانزد دیگران خواهد بود.
  • برنامه نویسان کارآمد : این افراد در طول عمر حرفه ای خود در شرکت های زیادی حضور داشته اند و در توسعه محصولات معروف و کاربردی مشارکت کرده اند. این برنامه نویسان علاوه بر حقوق خوبی که از این راه بدست می آوردند، از کار خود نیز نهایت لذت را می برده اند. درآخر این گونه افراد به رزومه کاری خود افتخار می کنند و اواخر عمر خود را با خیال راحت در کنار خانواده می گذارنند.
  • برنامه نویسان معمولی : این افراد هر روز سر کار خود حاضر می شدند و در هر پروژه ای که شرکت مربوطه روی آن کار میکرده مشارکت می کردند. همیشه هم به این گونه کار کردن راضی بودند. کارهای روزانه این افراد از قبل مشخص بوده و از کدنویسی تا نوشتن راهنما و خدمات پشتیبانی را انجام داده اند.
  • برنامه نویسان مستقل : افرادی که در کل دوران حرفه ای خود به صورت مستقل روی پروژه های سفارشی کار می کرده اند. این افراد تمایل به کار کردن برای دیگران را نداشته اند و همیشه سعی کرده اند برای خودشان کار کنند. هر چند ممکن است در زمان های مختلف با مشکلات مالی متعددی مواجه بشوند اما باز هم به خاطر علاقه به این کار، دست از آن برنداشته اند.
  • برنامه نویسان ساده : این گونه افراد قسمت عمده ای از عمر حرفه ای خود را در استخدام یک شرکت دولتی یا خصوصی که کار اصلی شان برنامه نویسی و تولید نرم افزار نیست اما به برنامه نویس احتیاج دارند، می گذرانند. این برنامه نویسان به علت دردسر و استرس کم در این کار و به موقع پرداخت شدن حقوق شان، خیلی از کارشان راضی هستند. (البته شاید اسم «ساده» برای این گروه درست نباشد، اما نام بهتری پیدا نکردم)

همانطور که همه میدانیم، شغل برنامه نویسی و کلاً تولید نرم افزار در ایران به دلایل مختلفی مثل عدم رعایت کپی رایت و فرهنگ نادرست مدیران و مصرف کنندگان، شغل آینده داری نیست. یا حداقل در حال حاضر و با این وضع اقتصادی ایران شغل آینده داری محسوب نمی شود. بسیاری از برنامه نویسان ایرانی از شغل شان ناراضی هستند و بسیاری از مدیران شرکت های نرم افزاری منتظر زمان ورشکستگی خود هستند.

قبل از اینکه نظرات بقیه را بخوانم قصد جمع بندی این موضوع را نخواهم داشت. اگر دسته بندی دیگری به نظرتان می رسد یا پیشنهادی دارید، در قسمت نظرات عنوان کنید تا اثر بدهم.

به هر حال، میخواهم شما هم در این بحث شرکت کنید و بگویید الان در کدام دسته بندی بالا قرار می گیرید، یا می خواهید در آخر (آینده خودتان) متعلق به کدام دسته بندی باشید؟

ایده این نوشته از خواندن این مطلب Jeff Atwood به ذهنم رسید.

سیلورلایت 3.0 ارائه شد

تمام کسانی که به تکنولوژی های روز دنیای برنامه نویسی، مخصوصاً فناوری های شرکت مایکروسافت علاقه دارند، تا به حال باید در مورد نسخه جدید Silverlight چیزهایی شنیده باشند و یا مقالاتی در مورد ویژگی های جدید آن مطالعه کرده باشند. این نسخه از سیلورلایت دارای ویژگی های جدیدی است که هر توسعه دهنده ی وبی را به استفاده از آن علاقه مند می کند.

18 مارس در MIX09 مایکروسافت نسخه ی بتای سیلورلایت 3.0 را معرفی کرد. در این کنفرانس که در لاس وگاس برگزار شد، علاوه بر نسخه جدید سیلورلایت، IIS 7، ASP.NET MVC Framework، IE 8، Blend 3، Visual Studio 2010 نیز مورد بررسی قرار گرفتند.  در این نوشته قصد داریم به معرفی ویژگی های جدید سیلورلایت نسخه 3.0 بتا بپردازیم.

اجرا خارج از مرورگر Out of Browser

یکی از مهمترین و پر سر و صداترین ویژگی های سیلورلایت جدید، امکان اجرای برنامه های مبتنی بر سیلورلایت بدون استفاده از مرورگر وب است.با سیلورلایت 3 قادرید اپلیکیشن هایی بسازید که خارج از مرورگر و در دسکتاپ شما اجرا می شوند. در این حالت کاربران می توانند از اپلیکیشن شما در حالت آفلاین هم استفاده کنند.

بهبود های گرافیکی

سیستم گرافیکی سیلورلایت بهبودهای زیادی در این نسخه پیدا کرده است. پشتیبانی از افکت های قابل برنامه ریزی، perspective 3D، ایجاد فایل های Bitmap با استفاده از API های جدید سیلورلایت از این جمله اند. این بهبودهای گرافیکی، توسعه دهندگان را قادر میسازد تا مانور بیشتری روی تصاویر بدهند و افکت های تصویری مطلوب خود را تولید کنند.

کنترل های جدید

چندین کنترل جدید به SDK سیلورلایت اضافه شده اند و برخی از کنترل های موجود بهبود یافته اند. در این نسخه کنترل های جدید برای اعتبار سنجی داده های ورودی و هندل کردن خطاهای رابط کاربری معرفی شده اند. این کنترل ها به هنگام وارد کردن داده ها توسط کاربر به اعتبار سنجی آن و احتمالاً نشان دادن پیغام خطا می پردازند. برخی از کنترل های موجود در Silverlight Control Toolkit از جمله WrapPanel, DockPanel, ViewBox, AutoCompleteBox,Label در SDK نسخه 3.0 سیلورلایت ارائه شده اند. کنترل جدید SaveFileDialog هم به کاربران اجازه ذخیره فایل ها را روی هارد دیسک کامپیوترشان می دهد.

کنترل های پیشرفته تر مثل DataForm که امکان کار با داده ها (اضافه کردن، حذف و ویرایش) و حرکت میان آن ها را به شما می دهد. DataPager که امکان مرور صفحه به صفحه داده ها را به کاربر نهایی می دهد و Navigation Framework که برای حرکت میان صفحات یک اپلیکیشن سیلورلایت کاربرد دارد.

قابلیت های چند رسانه ای

چیزی که از قبل معلوم بود، پشتیبانی سیلورلایت 3.0 از فرمت های H264 و ACC است. پشتیبانی از RAW و امکان ایجاد Codecهای سفارشی توسط توسعه دهندگان از دیگر قابلیت های اضافه شده به سیستم مالتی مدیای سیلورلایت است.

بهبود کیفیت رندر متون Text Rendering

استفاده از افکت های انیمیشنی در متن ها و ایجاد متونی واضح تر برای کاربر در این نسخه از سیلورلایت بیشتر به چشم می آیند. با استفاده از API جاوا اسکریپت موجود در این نسخه، اپلیکیشن های سیلورلایت می توانند از فونت های محلی روی سیستم کاربر نیز علاوه بر فونت های روی سرور، استفاده کنند، که این باعث کاهش زمان بارگذاری اپلیکیشن می شود. در نسخه نهایی سیلورلایت قرار است از فناوری ClearType هم برای افزایش کیفیت متون استفاده شود.

بایند کردن عنصر به عنصر Element-to-Element Binding

این قابلیت به عناصر موجود روی رابط کاربری اجازه بایند شدن به مشخصات (Properties) یکدیگر را می دهد. مثلاً بدون کد نویسی می توانید مقدار یک Slider را به پراپرتی Text یک TextBox نسبت دهید. با این کار هر گاه مقدار Slider توسط کاربر تغییر کند، مقدار Text مربوط به TextBox به صورت خودکار آپدیت می شود.

Network Monitoring API

با استفاده از این API خواهید توانست اتصال به اینترنت را در یک اپلیکیشن سیلورلایت چک کنید. برخی مواقع لازم است که بدانید کاربر با اینترنت ارتباط دارد یا از آن Disconnect شده است.

Binary XML

برای ارتباط با سرویس های WCF، علاوه بر فرمت معمولی مبتنی بر متن XML، می توانید از فرمت فشرده Binary XML در سیلورلایت 3 استفاده کنید.

سرویس های .NET RIA

به همراه سیلورلایت 3 بتا، مایکروسافت فریم ورک .NET RIA Services را منتشر کرده است. این ابزار سعی می کند تا معماری n-tier را ساده تر کند و دو فناوری Silverligt و ASP.NET را به هم نزدیک تر نماید. .NET RIA Services الگویی برای نوشتن منطق برنامه در لایه میانی اپلیکیشن به شما ارائه می کند و دستیابی به داده ها را کنترل می کند. وظیفه هایی مثل اعتبار سنجی داده ها، تشخیص هویت و ارتباط میان سیلورلایت در کلاینت و ASP.NET در لایه میانی را بر عهده دارد.

واضح است که در این مطلب کوتاه نمی توان به بررسی تمام ویژگی های جدید سیلورلایت 3.0 پرداخت. مایکروسافت تمام تلاش خود را می کند تا آینده دنیای نرم افزار را در دست بگیرد و استانداردهای نرم افزارهای آینده را از همین حالا تعیین کند. مایکروسافت قدم های اولیه را خیلی وقت است به درستی برداشته است و در این راه با وجود رقبای بزرگی مثل گوگل، IBM و ادوبی تا به حال موفق بوده است. باید منتظر ماند و دید آیا تلاش مایکروسافت منجر به ظهور انقلابی در دنیای برنامه نویسی و نرم افزار خواهد شد یا خیر.

در مطالب بعدی در مورد ابزارهای عرضه شده برای توسعه اپلیکیشن های سیلورلایت 3.0 و در کل فناوری سیلورلایت بیشتر خواهید خواند. برای اینکه این مطالب را از دست ندهید، مشترک فراسان شوید.

شاید این مطالب هم برای شما خواندنی باشند :

اگر تمايل به دنبال کردن مطالب اين وبلاگ داريد، مي توانيد مشترک فيد فراسان شويد.

چطور مشترک شويم؟

سورس و گزارش پروژه فارسی نت منتشر شد

چند وقت پیش مطلبی در وبلاگ نوشتم با عنوان «Farsi.NET اولین زبان برنامه نویسی کاملاً فارسی برای دات نت«. اگر آن مطلب را مطالعه کرده باشید، می دانید در مورد چه پروژه ای صحبت می کنم. پروژه فارسی نت سعی داشت با فراهم نمودن یک نحو فارسی برای بستر دات نت به علاقه مندان امکان برنامه نویسی به یک زبان کاملاً فارسی (با قواعد نگارش زبان فارسی) را بدهد. با گذشت چند ماه از ارائه این پروژه و بحث هایی که در مورد آن شکل گرفت، هم اکنون دوست خوبم آقای توفیق در وبلاگ جدیدش به تازگی سورس و گزارش فارسی نت را منتشر کرده است. اوایل معرفی فارسی نت، من تاکید داشتم که نام این پروژه به صورت «فارسی دات نت» تلفظ و نوشته شود، همانطور که خودم در آن مطلب اینطور نوشته بودم، اما به دلایلی همان نام «فارسی نت» روی این پروژه ماند. در کل بحث های مربوط به فارسی نت خیلی وقت پیش انجام شد و در این مطلب قصد معرفی یا بحث در مورد این پروژه را نخواهیم داشت.

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

برای دریافت سروس و گزارش پروژه فارسی نت کلیک کنید

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

انواع فایل ها و دایرکتوری ها در ASP.NET

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

انواع فایل ها در یک وب اپلیکیشن ASP.NET

فايل هاي aspx
صفحات وبي که رابط کاربري اپليکيشن شما را شکل مي دهند. در واقع جايگزين فايل هاي asp کلاسيک در دات نت فريم ورک هستند. کاربران براي ارتباط با برنامه شما به صورت مستقيم از اين فايل ها استفاده خواهند کرد.

فايل هاي ascx
اين ها فايل هاي User Control هستند. User Controlها شبيه به صفحات وب aspx هستند با اين تفاوت که کاربران نمي توانند به صورت مستقيم به اين نوع فايل ها دستيابي داشته باشند. User Controlها بايد در صفحات وب aspx قرار بگيرند تا کاربران بتوانند از آن ها استفاده کنند. User Controlها به شما اجازه مي دهند تا قسمتي از رابط کاربري را بسازيد و آن را چند بار در صفحات مختلف به کار ببريد. با اين کار ديگر احتياجي به تکرار يک مجموعه کد نخواهيد داشت.

فايل هاي asmx
وب سرويس هاي ASP.NET داراي اين پسوند هستند. وب سرويس ها مجموعه اي از متدها هستند که اين متدها مي توانند در سراسر اينترنت صدا زده شوند. وب سرويس ها متفاوت از صفحات وب کار می کنند، ولی از منابع، تنظیمات و حافظه ی همان اپلیکیشن وب استفاده می کنند.

فایل web.config
فایل تنظیمات اپلیکیشن های ASP.NET که به زبان نشانه گذاری XML هستند. این فایل شامل تنظیمات امنیتی، مدیریت حافظه، مدیریت حالت و بسیاری تنظیمات دیگر است. وقتی این فایل را تغییر دهید، در حقیقت رفتار وب اپلیکیشن را در برابر موقعیت های مختلف تغییر داده اید.

فایل Global.asx
متغیرها و رویدادهای سراسری یک وب اپلیکیشن ASP.NET در این فایل قرار می گیرند. متغیرهایی که در این فایل تعریف می شوند می توانند در سراسر برنامه و هر یک از صفحات وب اپلیکیشن شما دستیابی شوند. در این فایل می توانید رویدادهایی همچون Application_Start (وقتی اپلیکیشن شما شروع به کار می کند) را Handle کنید.

فایل های سورس cs, vb
این فایل ها شامل کدهای C# و Visual Basic هستند و به اصطلاح Code-behinde اپلیکیشن شما را تشکیل می دهند. این فایل ها به شما اجازه می دهند تا منطق یک صفحه وب را از رابط کاربری آن جدا کنید. Code-behind مدلی است که مایکروسافت آن را برای توسعه تحت وب به شما پیشنهاد می کند.

learn-about-aspnet-logo

انواع دایرکتوری در یک وب اپلیکیشن ASP.NET

هر وب اپلیکیشن در ASP.NET باید ساختار دایرکتوری مناسب و مشخصی داشته باشد. برای مثال، شاید شما بخواهید تصاویر به کار رفته در صفحات را در یک دایرکتوری جدا قرار دهید یا بخواهید صفحات عمومی را در یک دایرکتوری قرار دهید و تنظیمات امنیتی آن را متفاوت از دایرکتوری های دیگر مشخص کنید تا کاربران مهمان سایت بتوانند به آن ها دسترسی پیدا کنند. این دایرکتوری هایی که خودتان با منطق خودتان ایجاد می کنید، دایرکتوری های سفارشی شما هستند. ASP.NET در کنار دایرکتوری هایی که شما ایجاد می کنید، از یکسری دایرکتوری مخصوص به خود استفاده می کند که با نام های خاص مشخص می شوند. البته به صورت پیش فرض وقتی شما یک پروژه وب جدید در ویژوال استادیو ایجاد می کنید، این دایرکتوری های خاص ایجاد نخواهند شد. ویژوال استادیو هنگام نیاز از شما برای ایجاد این دایرکتوری ها اجازه می گیرد.

دایرکتوری Bin
شامل تمام کامپوننت های کامپایل شده (DLLها) دات نت که وب اپلیکیشن شما از آن ها استفاده می کند. به طور مثال، اگر شما یک کامپوننت خاص برای دستیابی به دیتابیس توسعه داده اید، بایستی آن را در این دایرکتوری قرار دهید. سپس ASP.NET به صورت خودکار اسمبلی را شناسایی کرده و هر یک از صفحات وب موجود در وب اپلیکیشن شما قادر به استفاده از آن کامپوننت خواهند بود. استفاده از این مدل توزیع بسیار آسان تر از مدل قدیمی کامپوننت های COM است. کامپوننت های COM را باید قبل از استفاده رجیستر کرد و اغلب وقتی تغییر هم می کنند باید دوباره آن ها را رجیستر نمود.
دایرکتوری App_Data
داده های وب اپلیکیشن شامل فایل های دیتابیس و فایل های XML در این دایرکتوری قرار می گیرند. البته شما می توانید دیتابیس خود را در هرجایی جز این دایرکتوری هم قرار دهید.

دایرکتوری App_GlobalResources
منابع سراسری که قابل دسترسی در تمامی صفحات وب شما هستند، در این دایرکتوری قرار می گیرند. اغلب از این دایرکتوری برای اپلیکیشن های وبی که چندین زبان را پشتیبانی می کنند، استفاده می شود.

دایرکتوری App_LocalResources
دقیقاً شبیه به دایرکتوری App_GlobalResources عمل می کند با این تفاوت که منابع تنها برای یک صفحه مشخص قابل دسترسی اند.

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

دایرکتوری App_Themes
تم هایی که صفحات وب اپلیکیشن از آن ها استفاده می کند در این دایرکتوری نگهداری می شوند.

farasun.wordpress.com

شاید این مطالب هم برای شما خواندنی باشند :

اگر تمايل به دنبال کردن مطالب اين وبلاگ داريد، مي توانيد مشترک فيد فراسان شويد.

چطور مشترک شويم؟