توسعه تکاملی

24 01 2008

قبلاً در مورد مدل های توسعه نرم افزار بحث کرده بودیم، در این پست می خواهم به معرفی اجمالی رهیافت توسعه تکاملی بپردازم.

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

دو نوع توسعه تکاملی وجود دارد :

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

در تولید سیستم هایی که خواسته های کاربر به خوبی روشن است، رهیافت تکاملی توسعه نرم افزار کارآمدتر از رهیافت آبشاری است. امتیاز فرآیند نرم افزار مبتنی بر رهیافت تکاملی این است که تعیین مشخصات نرم افزاری می تواند به تدریج انجام گیرد. هرچه کاربران با مسئله خود آشنایی بیشتری داشته باشند، در سیستم نرم افزاری موثرتر است. اما از دیدگاه مدیریت مهندسی، سه مسئله وجود دارد :

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

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

مطالب مرتبط : مدل های فرآند نرم افزار | مهندسی نرم افزار | رهیافت آبشاری





Inno Setup

21 01 2008

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

  • پشتیبانی از تمامی سیستم عامل های مایکروسافت (Windows 95/98/2000/2003/XP.ME/NT 4.0/Vista)
  • رابط کاربری استاندار و سازگار با ویندوزهای XP و 2000
  • سفارشی کردن نوع نصب نرم افزار (Full, Custom, Minimum)
  • فشرده سازی فایل ها در یک فایل EXE
  • ثبت کردن فایل های DLL و OCX
  • ساخت میانبر برای برنامه در هر مکانی که کاربر بخواهد
  • امکان دسترسی به رجیستری ویندوز و اعمال تغییر در آن
  • پشتیبانی از زبان های مختلف در برنامه Setup شما (می توانید زبان خود را به آن اضافه کنید)
  • امکان گذاشتن رمز عبور برای برنامه Setup
  • ایجاد Uninstaller در سیستم کاربر جهت حذف برنامه ی نصب شده
  • کاملاً رایگان و اوپن سورس (سورس این نرم افزار به زبان دلفی موجود است)
  • راهنمای کامل جهت یادگیری دستورات نرم افزار
  • پشتیبانی از زبان پاسکال اسکریپت برای ایجاد برنامه های Setup
  • و

سایت سازنده | دانلود





معرفی بانک های اطلاعاتی رایگان و اوپن سورس

5 01 2008

امروزه در عصر فناوری اطلاعات جنبش های فراوانی برای حذف “کاغذ” از جریان زندگی و کار انسان ها شکل گرفته و همچنان به صورت کاملاً جدی و سریع در کشورهای پیشرفته و کمی کندتر در کشورهای در حال توسعه ادامه دارد. در عصر امروز، فقط نگهداری اطلاعات مهم نیست بلکه بازیابی، ایمن سازی، جستجو، پشتیبان گیری، انتقال، انجام محساسبات، ایجاد گزارش های دلخواه و … معنی جدیدی پیدا کرده اند. از آنجا که امروزه اطلاعات با استفاده از کامپیوتر مورد پردازش قرار می گیرد، نرم افزارهای بانک اطلاعاتی یا Databaseها از اهمیت بسیار زیادی برخوردارند. رد پای بانک های اطلاعاتی را می توانید در نرم افزارهای مختلف و حتی وب سایت های معمولی و ساده نیز مشاهده کنید. استفاده از این نرم افزارها بسیار گشترش یافته و به همین میزان امکانات و ابزارهای ایجاد بانک های اطلاعاتی افزایش و پیشرفت چشمگیری داشته اند.

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

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

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

FlashFiler : موتور بانک اطلاعاتی Client/Server که با استفاده از دلفی توسعه یافته است.

H2 Database Engine : یک موتور بانک اطلاعاتی جاوا که SQL استاندارد و JDBC API را پشتیبانی می کند.

MySQL : سرویس دهنده بانک اطلاعاتی معروف و شناختhttp://www.ukoln.ac.uk/web-focus/events/workshops/webmaster-2004/talks/rahtz/html/mysql.pngه شده، چند کاربره، انعطاف پذیر و قدرتمند که نسخه های مختلفی تحت سیستم عامل های ویندوز، سولاریس، لینوکس، FreeBSD، AIX، SunOS و … عرضه کرده است. بسیاری از سروس دهنده های وب هاستینگ این سیستم بانک اطلاعاتی را به شما پیشنهاد خواهند کرد. همچنین MySQL در ایران طرفداران و کاربران زیادی دارد.

HSQLDB : سیستم بانک اطلاعاتی رابطه ای بسیار سریع و کوچک که کاملاً با جاوا پیاده سازی شده است.

Perst : بانک اطلاعاتی شیء گرا برای استفاده در جاوا و دات نت.

DataReel : یک سیستم cross-platform برای ایجاد بانک های اطلاعاتی چند خطی و نرم افزارهای ارتباطی که برنامه های تحت این سیستم به راحتی در تمامی سیستم عامل های موجو قابل اجرا و پیاده سازی می باشند.

Apache Derby : یک سیستم بانک اطلاعاتی رابطه ای که کاملاً با جاوا ایجاد شده است.

PostgreSQL : یک سیستم مدیریت بانک اطلاعاتی رابطه ای کاملاً حرفه ای با پشتیبانی از تمامی قابلیت های زبان SQL، تراکنش ها، توابع تعریف شده توسط کاربر. قابلیت اجرا در سیستم عامل های بر مبنای یونیکس مثل انواع توزیع های لینوکس و FreeBSD.http://www.vitavoom.com/images/PostgreSQL_logo.png

IBM’s Cloudscape : سیستم بانک اطلاعاتی رایگان، اوپن سورس و بسیار کوچک IBM که کاملاً با استفاده از جاوا طراحی و پیاده سازی شده است. این یانک اطلاعاتی روی تمامی سیستم عامل هایی که Java Virtual Machine روی آن ها نصب می باشد، اجرا خواهد شد.

Firebrid : یک سیستم بانک اطلاعاتی رابطه ای برای لینوکس، ویندوز و توزیع های مختلف تحت یونیکس که بر مبنای Interbase طراحی و توسعه یافته است.

B-Tree Filer : یک سیستم بانک اطلاعاتی بر مبنای فایل (File-based) که با استفاده از محیط Borland Delphi طراحی و پیاده سازی شده است و قادر به ایجاد دیتابیس های نسبتاً سریع می باشد. دیتابیس هایی که با این نرم افزار ساخته می شوند به هیچ ابزار جانبی از قبیل BDE و یا DLLهای third-party وابسته نیستند و توزیع آن ها روی سیستم های کاربران به راحتی کپی کردن فایل های معمولی امکان پذیر خواهد بود.

Berkeley DB : این سیستم بانک اطلاعاتی شامل ابزارهای جهت ایجاد دیتابیس هایی توکار در نرم افزارهای دسکتاپ و سرور با کارائی بسیار بالاست. دارا بودن استانداردهای یک سیستم بانک اطلاعاتی رابطه ای، قابلیت Hashing رکوردها، رکوردhttp://www.oracle.com/technology/products/berkeley-db/images/berkeley-db-logo.gifهای ثابت و با طول متغیر، صف بندی ، مدیریت تراکنش ها و پشتیبان گیری از دیتابیس ها به صورت آنلاین از قابلیت های این سیستم به شمار می روند. پشتیبانی از API های زبان های برنامه نوبسی C, C++, JAVA, Tcl, Perl و Python و قابلیت اجرا روی ویندوزهای 95/98/NT/2000 ، لینوکس و بسیاری از توزیع های بر مبنای Unix. کاملاً رایگان برای استفاده های غیرتجاری یا استفاده در نرم افزارهای اوپن سورس.

SQLLite* : یک Library کوچک، کم حجم و پرقدرت به زبان C که قادر به ایجاد بانک های اطلاعاتی توکار در نرم افزارهاست. بر خلاف سیستم های مدیریت بانک های اطلاعاتی Client\Server، موتور بانک اطلاعاتی SQLLite تنها یک کتابخانه است که با اتصال به برنامه های مختلف، جزئی  از آن برنامه ها می شود. نرم افزارهای معروفی همچون Firefox, Google Gears, Ruby on Rails از SQLLite به صورت توکار استفاده می کنند.

بانک های اطلاعاتی رایگان

Sybase ASE Express : ویرایش رایگان Sybase for Linux

Real Isam : یک کتابخانه (DLL) که از متدهای ISAM برای مدیرت و دستیابی به رکوردهای دیتابیس استفاده می کند. این کتابخانه می تواند در زبان های C++، Visual Basic، Delphi و غیره مورد استفاده قرار گیرد. (فقط برای ویندوز)http://www.techlog.org/images/sqlserver_express_logo.gif

Microsoft SQL Server Express Edition : نسخه رایگان و بدون محدودیت نرم افزار تجاری و پرقدرت SQL Server از شرکت مایکروسافت (فقط بری ویندوز)

 

منابع : Sourceforge.net , Freebyte.com, Oracle.com

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

* با تشکر از آقای مهرداد حاج ابوطالبی به خاطر یادآوری SQLLite





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

4 01 2008

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

Abbrevia : ابزاری کاملاً رایگان و متن باز برای محیط های Delphi، C++ Builder و Kylix که فرمت های PKZIP 4، Microsoft CAB، TAR و gzip را پشتیبانی می کند و قابلیت ایجاد self-extracting archive را نیز دارا می باشد.

DelphiZIP : یک کامپوننت کامل برای کار با فرمت ZIP که سورس کد آن نیز در دسترس عموم است.

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