*** چرخی که برای ما نچرخد باید دوباره اختراع شود ***

انجمنی برای برنامه نویسان اندروید به زبان دلفی (Delphi-Android)

*** چرخی که برای ما نچرخد باید دوباره اختراع شود ***

انجمنی برای برنامه نویسان اندروید به زبان دلفی (Delphi-Android)

*** چرخی که برای ما نچرخد باید دوباره اختراع شود ***
در این انجمن انشاءالله در مورد دیدگاههای خود راجع به برنامه نویسی، امنیت شبکه، دلفی و اصول برنامه نویسی و برنامه نویسی برای اندروید توسط دلفی مطالبی ارائه خواهم کرد. از شما خوانندگان محترم و فرهیخته تقاضا دارم با ارسال نظر، نقد و پیشنهاد به تقویت این وبلاگ کمک نمایید. با سپاس فراوان از همکاری شما.
پیام های کوتاه
طبقه بندی موضوعی
آخرین نظرات
  • ۱۹ فروردين ۹۷، ۰۲:۵۸ - قالب رضا
    :)
  • ۱۰ خرداد ۹۴، ۲۲:۰۲ - lpln
    mamnoon

۳ مطلب در شهریور ۱۳۹۳ ثبت شده است

به نام خدا

سلام

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

البته این موضوع ممکن است عجیب و نامعقول بنظر برسد اما می توان با استدلال زیر آنرا اثبات کرد:

  • اولا آیا شرکت مایکروسافت نسبت به خدمات پس از فروش و پشتیبانی ویندوز های کرک شده و یا دزدی تعهدی دارد؟ پاسخ مطمئنا خیر است. هم از نظر حقوقی و هم از نظر کلیه اصول عقلی این شرکت دلیلی برای پشتیبانی از ویندوز های دزدی و غیرقانونی ندارد. بنابراین اگر Update مایکروسافت بر روی رایانه دزدی اجرا نشود و یا درست و کامل اجرا نشود کسی نمی تواند مایکروسافت را مقصر بداند. حال تصور کنید که مایکروسافت در نرم افزارهای Update خود (موسوم به KB updates و یا سرویس پک ها مانند SP1 و یا SP2) به شکلی برسی نماید که آیا ویندوز مورد بروزرسانی معتبر (Ginuine) است یا نه .  همچنین بررسی نماید که آیا این اعتبار سنجی خود واقعی است یا کرک شده و اینکه این ویندوز در چه منطقه ای نصب شده (از راه های مختلف این امر قابل کنترل است). سپس در صورت کشف غیرقانونی بودن سیستم عامل بدون آنکه علامت و اخطاری به کاربر بدهد، کار بروزرسانی را ادامه داده و در هنگام بروزرسانی فقط برخی پرونده های سیستم عامل را بروز نکند و یا بشکلی بروز کند که مثلا بعضی از حفره های امنیتی آن کاملا بسته نشوند. با این شرایط بنظر شما می توان مایکروسافت را محکوم نمود؟ (بنظر بنده اینکار خیلی سخت خواهد بود) بد نیست در این مورد این پیوند را مطالعه کنید: http://en.wikipedia.org/wiki/Windows_Genuine_Advantage
  • ثانیا تصور کنید سازمان های جاسوسی و امنیتی آمریکا تصمیم بگیرند عملیاتی را در سیستمهای ایران انجام دهند در حالیکه می دانند سیستمهای مورد نظر ایشان از نظر امنیتی دارای بهترین و محکم ترین تمهیدات قرار داشته و از شبکه اینترنت هم قطع است. اما سیستم عامل آن معلوم است و البته این سیستم عامل یکی از نسخه های کرک شده ویندوز است. به نظر شما چه راهی بهتر از Windows Updates می تواند وجود داشته باشد؟ شگفت آور آنکه مسئولین و کارشناسان امنیت شبکه در ایران (در هر سازمان اعم از نظامی و غیر نظامی) طبق قانون و دستور العمل های موجود موظف به اخذ نسخه اصلی و دست نخورده Windows Updates از شبکه اینترنت و سایت Microsoft هستند و باید آنرا بر اساس زمانبندی هایی روی تمام سیستمهای تحت اختیار نصب کنند یا بطور خودکار نصب شود. فکرش را بکنید که دشمن Trojan یا همان اسب تروای خود را چه آسان به محرمانه ترین بخش های کشور ما منتقل می کند! حجم این Trojan می تواند ده ها مگابایت باشد! کسی معترض نمی شود. کمترین کاری که این Updateها می توانند انجام دهند آنست که کاری انجام ندهند! یعنی بطور انتخابی برخی از حفره های امنیتی را نبندند و آنرا برای نفوذ موشک های سایبری باز بگذارند و البته پیغام تکمیل فعالیت بطور موفقیت آمیز را هم نمایش دهند!

حال فکر کنم کمی به عمق فاجعه پی بردید، این طور نیست؟ بد نیست گزارش اخیر شرکت  Kaspersky در نشانی زیر را مطالعه فرمایید: "The echo of Stuxnet" و متن کامل آن:

https://securelist.com/files/2014/08/Kaspersky_Lab_KSN_report_windows_usage_eng.pdf

بطور خلاصه این مقاله تحت عنوان The echo of Stuxnet یا "انعکاس استاکسنت" نشان می دهد که بر خلاف آنکه مایکروسافت حفره های امنیتی مربوط به استاکسنت را مدتهاست توسط Update های خود بسته است اما همچنان برخی از این حفره ها در کشورهایی که ویندوز کرک شده دارند بشدت مورد استفاده هکرها بوده و عملا باز هستند!

 

این موضوع بطور غیر مستقیم اشاره به بی اثر بودن Update های ویندوز است.

 


اگر بخواهید برنامه نوشته شده توسط خودتان را بفروشید و مثلاً من مشتری آن باشم، چقدر قیمت روی آن میگذارید؟  

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

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

 

اگر با این شرایط خطی یک دلار بدهم برنامه خود را می فروشید؟ نه؟ خطی 2 دلار چی؟ خطی 5 دلار چطور؟  اصلا خطی 10 دلار خوبه؟ 

 

شاید بعضی از شما با خود بگویید نویسنده این متن چندان عقل درست و حسابی ندارد چون 10 دلار (دلاری 3000 تومان) بابت یک خط ساده برنامه ای که حتی ندیده و نمیداند چیست پرداخت می کند!!  شاید حق با شما باشد اما واقعیت چیز دیگری است.

دوست عزیزی که فکر می کند برنامه او با قیمت هر خط زیر 25 تا 30 دلار ارزش دارد باید بداند که برنامه بی ارزشی را دارد و اگر هارددیسک خود را از وجود چنین برنامه ای پاک کند کار درستی کرده است!!!  

تعجب کردید؟

بر اساس آمار و اطلاعات و تحقیقات زیادی این موضوع ثابت شده است که قیمت یک برنامه یا نرم‌افزار از خطی 25 دلار کمتر شود این نرم‌افزار بعنوان یک نرم‌افزار تجاری هم قابل فروش و سود دهی موثر نیست و دارای حداقل های قابل قبول از طرف مشتری نخواهد بود.  

 

اگر هر خط بین 25 تا 50 دلار باشد تازه کیفیت نرم‌افزار تجاری در حد مثلا ویندوز یا word خواهد بود. 

اگر هر خط 100 دلار باشد کیفیت در حد نرم‌افزار های نظامی متداول در وزارت دفاع آمریکا خواهد بود.  

اگر هر خط 1000 دلار باشد کیفیت آن مناسب برای نصب بروی تجهیزات فضایی ناسا خواهد بود. 

 

مرجع: کتاب  The Art of Designing Embedded Systems

 

http://books.google.com/books/about/The_Art_of_Designing_Embedded_Systems.html?id=V-bCD_j1gT8C

 

http://books.google.com/books?id=MMfCP3KTNZoC&pg=PA217&lpg=PA217&dq=cost+per+line+of+code+The+Art+of+Designing+Embedded+Systems&source=bl&ots=ls529vKqWj&sig=NNzWPQgQ-NJ3_yd6YsHRSrzM2dI&hl=en&sa=X&ei=BaAUVJ3CC9HraOiwguAK&ved=0CB8Q6AEwAQ#v=onepage&q=cost%20per%20line%20of%20code%20The%20Art%20of%20Designing%20Embedded%20Systems&f=false

 

 

 

 

 

 

 

 

 

۰ نظر موافقین ۲ مخالفین ۰ ۱۹ شهریور ۹۳ ، ۰۰:۱۲

بنام خدا

 

  امروز میخواهم درباره ردیابی باگ و مفهوم آن کمی صحبت کنم. هر برنامه نویسی میداند که برنامه رایانه ای بدون باگ وجود ندارد! البته کسی ممکن است ادعا کند یک برنامه کوچک چند خطی می توان نوشت که باگ نداشته باشد اما پاسخ من به چنین ادعایی آن است که برنامه مورد نظر برای چه کسی و چه هدفی طراحی و نوشته شده است؟  اگر برنامه ای بدون متقاضی و بدون هدف باشد مطمئناً مورد بحث ما نیست. منظور از متقاضی و هدف در حقیقت مشتری است. مشتری در تعامل با نرم‌افزار همیشه نکات و مواردی را که به کارایی و منافع او مربوط است متذکر و یا نیاز دارد. این نکات و موارد معمولا یا بصورت باگ و یا درخواست ویژگی و یا درخواست خدمات و پشتیبانی خود را نشان میدهند.   خب تا اینجا ظاهرا چیز جدیدی نگفتیم و شاید بگویید این ها بدیهیات است اما اصل موضوع که برنامه بدون باگ نداریم را اثبات میکند!  البته لازم است در اینجا کلمه باگ تعریف شود.  از نظر تاریخی کلمه باگ (Bug) به معنی حشره یا مگس از زمانی برای نرم‌افزار باب شد که در اولین رایانه های ساخته شده از لامپ های الکترونی استفاده میشد. در آن زمان مدارات رایانه دارای حجم انبوهی از سیمها و اتصالات بصورت لحیم کاری شده بود. مثلا حجم رایانه ای که تنها محاسبه برد گلوله توپ را بر اساس زاویه آتش و سایر پارامتر ها انجام میداد حدود یک ساختمان دو یا سه طبقه بود! در مواردی حشره ها در لابلای مدارات این رایانه خانه میکردند و چون ولتاژ بین اتصالات لامپی (که در واقع کار ترانزیستور ها و فلیپ فلاپ را بر عهده داشتند) بسیار بالا بود (از مرتبه چند ده ولت) لذا امپدانس یا مقاومت بین اتصالات تغییر کرده و در عملکرد یا دقت محاسبات رایانه مزبور تاثیر فراوانی می گذاشتند.  به همین دلیل فرد یا افرادی باید با سم پاشی و جاروبک هایی هر از گاهی به تمیز کردن مدارات پرداخته و مشکلات رایانه را حل می کردند! به این افراد دیباگر (Debugger) می گفتند.  از آن زمان تاکنون این نام (باگ) برای هر  ایراد نرم‌افزاری بکار می‌رود. تقریبا می توان گفت هر چیزی که باعث رفتار و یا عملکرد نادرست و یا ناخواسته یک برنامه رایانه‌ای شود، بنحوی که آن رفتار و عملکرد نه در طراحی اولیه و اصلی نرم‌افزار و نه در مجموعه درخواست های مشتری نرم‌افزار باشد را باگ می گوییم.  البته در مواردی هنگام تحویل اولین نسخه نرم‌افزار به مشتری خود یا مشتری متوجه می شود که باید چیزها و قابلیت ها جدیدی به نرم‌افزار افزوده شود، در این موارد نیز باز هم می‌توان گفت نرم‌افزار از نظر مشتری دارای نقص بوده و آنرا باید باگ محسوب کرد اما چون این موضوع در طراحی یا نیازمندی اولیه نبوده، لذا آنرا به ویژگی جدید می شناسیم.  خب تا اینجا با مفهوم کلی کلمه باگ آشنا و متوجه یک دسته بندی اولیه هم شدیم: باگ و ویژگی جدید. ویژگی جدید هم یک باگ در نتیجه تعامل خواسته های مشتری با نرم‌افزار است.   اگر تاکنون برنامه نویسی کرده باشید با هر دو این موارد برخورد کرده اید و احتمالا متوجه حجم تصاعدی آنها با حجم و پیچیدگی برنامه خود شده اید.  تقریبا میتوان گفت 80 درصد یک نرم‌افزار در 20 درصد زمان مقرر آماده میشود اما 80 درصد زمان پروژه برای حل مشکلات آن یعنی باگها صرف میشود.   این موضوع از نظر زمان و هزینه تمام شده نرم‌افزار بسیار مهم است و نیاز به بررسی و تحلیل دارد. اگر روند رسیدگی به باگها دارای نظم نباشد مدت پروژه و در نتیجه هزینه تمام شده افزایش چشمگیری یافته و برنامه نویس یا برنامه نویسان و مشتری را به سوی یاس خواهد کشاند. این موضوع ممکن است  تا جایی پیش برود که برنامه نویسان احساس کنند اگر سبزی فروشی باز می کردند وضع شان بهتر بود!!  راه حل استفاده از ردیاب باگ یا همان Bug Tracker است.

۱ نظر موافقین ۱ مخالفین ۰ ۱۴ شهریور ۹۳ ، ۱۷:۴۷