مهندسی خواسته ها

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

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

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

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

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

پ.ن : یکی از دوستان باگ کوچکی در برنامه Darkpad پیدا کرده بود که خوشبختانه رفع شد. (با تشکر از امیرحسین عزیز) بنده به اشتباه کتابخانه Qt را در برنامه include کرده بودم که Darkpad هیچ نیازی به آن نداشت. به همین خاطر در هنگام اجرا با خطایی مبنی بر یافت نشدن فایل qtintf70.dll دریافت می کردید. نسخه جدید (0.5 آزمایشی) چنین مشکلی ندارد و در همه سیستم عامل های ویندوز بدون نیاز به نصب اجرا خواهد شد. Darkpad 0.5 را از اینجا دریافت کنید.

farasun.wordpress.com

Subcribe to Farasun feedمشترک فراسان شويد

farasun.wordpress.com

مطالب مرتبط :

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

توسعه برنامه های کاربردی بوسیله دلفی 7

قبل نوشت : دیروز یک نفر برای یادگیری زبان C به آموزشگاه آمده بود و من به عنوان مدرس انتخاب شده بودم. اول فکر کردم برای پاس کردن واحد دانشگاهی می خواد C یاد بگیره، اما وقتی ازش پرسیدم گفت می خوام برنامه نویسی کاربردی در ویندوز رو یاد بگیرم. کلی براش توضیح دادم که زبان C دیگه استفاده نمیشه و فقط به درد یادگیری تئوری برنامه نویسی میخوره و گفتم بهتره Visual C++ را با هم کار کنیم. گفت که قبلاً هیچ وقت برنامه نویسی کار نکرده و از نظر کاربری کامپیوتر هم در سطح بالایی نیست. بعد از کلی صحبت، من برای شروع دلفی 7 رو بهش پیشنهاد کردم و از قابلیت های اون براش گفتم…

بورلند دلفی 7 محیط برنامه نویسی بصری (ویژوال) و کاملا شیء گرا برای توسعه برنامه های 32بیتی مبتنی بر سیستم عامل های ویندوز و لینوکس می باشد. با استفاده از دلفی می توانید برنامه های کاربردی بسیار قوی و انعطاف پذیر ایجاد کرده و آن ها را در ویندوز و لینوکس انتشار دهید.
محیط دلفی ابزارهای سریع و ساده بسیاری در اختیار برنامه نویسان قرار میدهد. محیط دلفی در اصطلاح RAD خوانده می شود. این کلمه مخفف Rapid Application Development و به معنی توسعه کاربردی سریع است. دلفی شامل ابزارهای سریع طراحی برنامه، ویزاردهای برنامه نویسی، قالب های از پیش ساخته شده و کتابخانه ای از اجزای نرم افزاری است.
دلفی شامل دو کتابخانه مجزا برای ویندوز و لینوکس است :

  • The Visual Component Library – VCL : این کتابخانه شامل اجزایی است که API های ویندوز را در خود کپسوله کرده اند.
  • The Borland Component Library for Cross-platform – CLX : که این کتابخانه اجزای Qt Library را خود کپسوله نموده اند. (این نوع از برنامه ها در ویندوز و لینوکس قابل اجرا هستند)

در این مقاله به شرح مختصری از قابلیت های محیط دلفی 7 می پردازم.

محیط توسعه مجتمع (IDE) :
وفتی دلفی را باز می کنید بلافاصله محیط توسعه مجتمع یا به اختصار IDE دلفی در مقابل شما نمایان می شود. این IDE شامل تمامی ابزارهای مورد نیاز برای طراحی، توسعه، تست، و انتشار برنامه می باشد.

  • Form Designer: برای طراحی رابط کاربری برنامه
  • Component palette : برای دسترسی به کامپوننت های بصری و غیر بصری قابل استفاده در برنامه
  • Object Inspector : برای مشاهده و مدیریت خصوصیات اشیاء و رویدادهای مربوط به هر یک
  • Object TreeView : برای نمایش و مدیریت روابط منطقی میان اجزای برنامه
  • Code Editor : برای نوشتن و ویرایش کد برنامه
  • Project Manager : برای مدیریت بر روی فایل های پروژه

طراحی برنامه های کاربردی
با استفاده از دلفی می توانید هر نوع برنامه 32 بیتی را طراحی و اجرا نمائید. از برنامه های سودمند کوچک گرفته تا برنامه های تجاری و نرم افزارهای توزیع شده با استفاده از بورلند دلفی نسخه هفت قابل توسعه و تعمیم هستند. در حین طراحی رابط کاربری برنامه توسط دلفی، در پشت پرده Form Designer کدهای مربوط به طراحی را به صورت خودکار تولید می کند و نیازی به نوشتن کدهای طراحی به صورت دستی نخواهید داشت. زمانی که شما مشخصات کامپوننت ها و اجزای بصری و غیر بصری برنامه را تغییر می دهید، Form Designer به صورت خودکار تمامی تغییرات شما را روی سورس کد برنامه اعمال میکند و تنها زحمت شما Re-Build کردن برنامه خواهد بود. شما به راحتی می توانید سورس برنامه خود را توسط هر ویرایشگر متنی (مثل Notepad) باز کرده و تغییر دهید اما بهترین ویرایشگر برای این کار ویرایشگر داخلی دلفی یا Code Editor دلفی است که با داشتن خصوصیات منحصر به فرد بهترین گزینه برای شما خواهد بود.


شما به راحتی می توانید با استفاده از زبان دلفی کامپوننت های خود را ساخته و آن ها را به قسمت Component Palette اضافه کنید. در صورت نیاز می توانید Component Palette را به دلخواه خود سفارشی نمائید.
همچنین می توانید برنامه هایی تولید کنید که هم در ویندوز و هم در لینوکس قابل انتقال و اجرا باشند. این نوع از برنامه ها باید با استفاده از کتابخانه بورلند برای Cross-Platform نوشته شوند. کتابخانه CLX شامل کلاسهایی است که قادرند در دو سیستم عامل ویندوز و لینوکس بدون هیچ مشکلی کار کنند.

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

خطایابی آسان
یکی از مباحث مهم در توسعه نرم افزارها، مبحث خطایابی است. دلفی شامل یک خطایاب (Debugger) داخلی است که در پیدا کردن و رفع خطاهای پروژه به شما کمک بسیاری می کند. این Debugger به شما امکانات مخلفی از جمله کنترل اجرای برنامه، مشاهده مقادیر متغیرها و داده ها و تغییر دادن آن ها را به شما می دهد. این Debugger قادر به شناسایی خطاهای هنگام اجرا Runtime Errors و برخی از خطاهای منطقی Logical Errors است.

توزیع برنامه کاربردی
دلفی برخلاف Visual Basic و زبان های تحت دات نت، برنامه هایی تولید می کند که بدون هیچ پیش نیازی در سیستم عامل ویندوز اجرا می شوند. این مزیت بسیار بزرگی است که دلفی با تکیه بر آن صدها هزار توسعه دهنده را جذب خود کرده است.
برای توزیع برنامه های دلفی روی لینوکس به Kylix نیاز خواهید داشت.

کدام نسخه دلفی؟

در این نوشته شما با خصوصیات دلفی نسخه 7 محصول شرکت بورلند آشنا شدید. این نسخه در سال 2001 به بازار آمده است و تا به حال برنامه های بسیار زیادی بوسیله این محیط برای سیستم عامل ویندوز نوشته شده است. با اینکه هفت سال از توزیع این نرم افزار می گذرد اما هنوز هم برای توسعه نرم افزارهای مختلف و محصولات قدرتمند مورد استفاده قرار می گیرد. در همین ایران خودمان بسیاری از شرکت های کوچک و بزرگ نرم افزاری از دلفی نسخه 7 برای تولید محصولات خود بهره می برند. البته استفاده از این محصول در جهان در حال کاهش است و حضور دلفی 7 در توسعه برنامه های کاربردی هر روز کمرنگ تر می شود اما در ایران هنوز برای استفاده جا دارد. چون بسیاری از شرکت های دولتی و بعضاً خصوصی در ایران امکانات سخت افزاری بسیار پائینی دارند، شرکت های نرم افزاری امکان تغییر تکنولوژی و استفاده از تکنولوژی های روز دنیا همچون Microsoft .NET و JAVA را ندارند و قدرت و شجاعت این ریسک را هم ندارند.

اما برای کسانی که همیشه دنبال جدیدترین ها هستند، نسخه 2007 آخرین نسخه دلفی است که شرکت CodeGear یکی از شرکت های زیر مجموعه Borland آن را تولید و توزیع کرده است. این نسخه به راحتی در بازارهای ایران پیدا می شود.

farasun.wordpress.com

Subcribe to Farasun feedمشترک فراسان شويد

farasun.wordpress.com

مطالب مرتبط :

زمان بندی پروژه های نرم افزاری

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

farasun.wordpress.com

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

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

فرآیند زمان بندی پروژه های نرم افزاری

فرآیند زمان بندی پروژه های نرم افزاری

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

farasun.wordpress.com

Subcribe to Farasun feedمشترک فراسان شويد

farasun.wordpress.com

مطالب مرتبط :

ارسال اطلاعات میان دو برنامه کاربردی

موقعیت های بسیاری پیش خواهد آمد که برنامه های شما احتیاج به برقراری ارتباط و استفاده از اطلاعات یکدیگر دارند. در اینجا منظور از هر «برنامه»، برنامه ی کاربردی است که هر کدام وظیفه مشخص و مستقلی را انجام می دهند. همان طور که می دانید برنامه های Client\Server کاملاً به یکدیگر وابسته اند و به کمک هم یک وظیفه ی مشخص را انجام می دهند. این نوع برنامه ها، به ارتباط و اشتراک اطلاعات کاملاً نیازمندند; به عبارت دیگر بدون ارتباط با هم به هدف خود نخواهند رسید. این گونه برنامه ها اکثراً در شبکه های کامپیوتری به کار گرفته می شوند و طبیعتاً از ارتباطات شبکه ای برای ارسال اطلاعات به یکدیگر استفاده می کنند. حالا موقعیتی را در نظر بگیرید که دو تا از برنامه های شما که هر یک «محصول» جداگانه ای هستند، احتیاج به تبادل اطلاعات و ارتباط با یکدیگر دارند. این نکته را هم در نظر بگیرید که این برنامه های کابردی هر دو در یک کامپیوتر مستقل نصب و استفاده می شوند. در این وضعیت شما چه راهکاری برای این مسئله ارائه می دهید؟

در این نوشته راه های معقولی که به ذهنم می رسد را ذکر می کنم.

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

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

farasun.wordpress.com

این نوشته را تقدیم می کنم به دوستی که مرا مجبور به نوشتن این پست کرد!!

farasun.wordpress.com
Farasun Feed - Subcribeمشترک فراسان شوید

farasun.wordpress.com

مطالب مرتبط :

مسئولیت های تخصصی و اخلاقی یک مهندس نرم افزار

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

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

بدین ترتیب، موسسات و سازمان های تخصصی نقش مهمی دارند. سازمان هایی مثل ACM ، IEEE و BCS دستورالعمل های اخلاقی و رفتاری را منتشر کرده اند و اعضای این سازمان ها هنگام عضویت، تعهد می دهند که این اصول را رعایت کنند. ACM و IEEE سعی کردند دستورالعمل های اخلاقی و تخصصی را بوجود آورند. هدف این دستورالعمل را در زیر شرح می دهیم.

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

اصول اخلاقی مهندسی نرم افزار (ACM/IEEE-1999) مشاهده نسخه اصلی

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

  1. Public : مهندسین نرم افزار به نفع عموم کار می کنند.
  2. Client and Employer : مهندسین نرم افزار طوری عمل می کنند که به نفع کارکنان و مشتریان باشد و با نفع عمومی سازگاری داشته باشد.
  3. Product : مهندسین نرم افزار تضمین می کنند که محصولات و اصلاحات آن ها از بالاترین استاندارد تخصصی پیروی می کنند.
  4. Judgement : مهندسین نرم افزار جامعیت و استقلال را در قضاوت تخصصی خود حفظ می کنند.
  5. Management : مدیران و رهبران مهندسین نرم افزار، توسعه و نگهداری نرم افزار را بر اساس اصول اخلاقی انجام می دهند.
  6. Profession : مهندسین نرم افزار جامعیت و شهرت را مطابق با منافع عموم گسترش می دهند.
  7. Colleagues : مهندسین نرم افزار حامی همکاران خود هستند و با آن ها با عدالت برخورد می کنند.
  8. Self : مهندسین نرم افزار سعی در آموزش بیشتر در حرفه خود دارند و اخلاقیات را نیز رعایت می کنند.

حالا به من بگید چند تا مهندس نرم افزار با مشخصات بالا سراغ دارید؟

تحت وب یا تحت ویندوز!

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

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

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

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

تتیجه؟

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

تاریخ شمسی قابل حمل!

نسخه ی قبلی برنامه مشکلات کوچکی داشت که با کمک دوستان (چه کسانی که لطف کردند ایمیل فرستاند و چه کسانی که در این پست نظر خودشان را ابراز کردند) حل شد و بر اساس پیشنهادات تغییرات هر چند کوچکی در برنامه اعمال شد. هر چند به نظرم آنچنان که باید به Datefa توجهی نشد. به هر حال در این نسخه یک سری از مشکلات نسخه ی قبل حل شده است. همچنان برنامه، فایل «راهنما» و آیکون اختصاصی ندارد، یک نفر قول همکاری داد ولی هنوز از ایشان خبری نشده (با تشکر از آقای مسعود میر زمانی که زحمت طراحی آیکون و فایل راهنما را قبول کردند). در قسمت «تنظیمات» یک فرمت جدید تاریخ اضافه شده که قابلیت مشاهده ی تاریخ به صورت «سه شنبه 14 اسفند 1386» را به شما می دهد، که این فرمت به پیشنهاد آقای بهمن اضافه شد.

دریافت Datefa نسخه ی به روز شده با حجم 700 کیلو بایت

دو ویرایش جدید از این برنامه را آماده کردم. یکی ویرایش «قابل حمل» (Portable)Portable Datefa و دیگری ویرایش «کنسول»(Console). همان طور که از نام ویرایش قابل حمل پیداست هیچ نیازی به نصب ندارد و حجم بسیار پایینی دارد و به زبان انگلیسی ارائه شده است تا با تمام ویندوزها همخوانی داشته باشد. از ویرایش قابل حمل می توانید در حافظه های فلش و هنگامی که نمی خواهید برنامه Datefa را نصب کنید استفاده کنید و از ویرایش کنسول برای استفاده از تاریخ شمسی در Command Line ویندور. بنده ویرایش کنسول را برای نیاز شخصی نوشته ام، امیدوارم بقیه هم از آن سود ببرند.

دریافت ویرایش «قابل حمل» با حجم 250 کیلوبایت

دریافت ویرایش «کنسول» با حجم 28 کیلو بایت

پ.ن : لینک های دانلود غیر مستقیم می باشند و همگی درسایت Box.net میزبانی می شوند.