بارگیری و بارگذاری

بارگیری یا دانلود (به انگلیسی: Download)، فرآیند برداشت داده‌های الکترونیکی از یک رایانه (معمولاً یک رایانه دور یا یک سرور) به رایانهٔ دیگر (معمولاً رایانه شما یا یک رایانهٔ محلی)، با مودم یا شبکه رایانه‌ای را گویند. همچنین فرستادن بلوکی از داده‌ها، مانند یک پرونده، با ساختار پست اسکریپت، به دستگاه مستقلی مانند چاپگر پست اسکریپت نیز بارگیری نامیده می‌شود. عمل وارون فرایند فوق را بارگذاری یا آپلود (به انگلیسی: Upload) گویند.






واژه‌های مصوب فرهنگستان برای دانلود و آپلود به ترتیب پایین‌گذاری و بالاگذاری هستند. در زبان اردو به این دو کنش به ترتیب «زیراثقال» و «زِبَراثقال» می‌گویند.






بارگیری

کاربرد نخست این واژه در زمینهٔ رایانه‌ها، از فعل دریافت کردن ریشه گرفته، به معنی گرفتن یک پرونده (یا بارگیری)، از یک رایانه، یک خدمات‌دهندهٔ وب، و یا سامانه‌ای همانند. این واژه در گویش خیابانی و فرهنگ عامیانه، مانند واژهٔ انگلیسی آن، دانلود (Download) گفته می‌شود.






بارگذاری

بارگذاری، یعنی ارسال کردن یک پرونده، از رایانه‌ای به رایانهٔ دیگر. این واژه در گویش خیابانی، مانند واژه انگلیسی آن، آپلود (Upload) گفته می‌شود.






نرم‌افزار

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

ظاهراً، اولین بار جان توکی در سال ۱۹۵۸ این واژه را به‌این معنا به‌کار برده‌است. احتمالاً این واژه در مقابل سخت‌افزار (به انگلیسی: Hardware) به کار برده‌اند که بسیار پیش از پیدایش رایانه (به معنای اسباب و اشیاء) به‌کار می‌رفته‌است.
دو گروه کلی نرم‌افزارها

نرم‌افزارهای رایانه را می‌توان به دو دسته بزرگ تقسیم کرد:

نرم‌افزار سیستم (به انگلیسی: System software)
نرم‌افزار کاربردی (به انگلیسی: Application software)

می‌توان گفت نرم‌افزارهای کاربردی، برنامه‌های مورد استفاده کاربرند و نرم‌افزارهای سیستمی، مدیریت رایانه را برعهده دارند. مهم‌ترین نرم‌افزار سیستم، سیستم‌عامل است.






سیستم عامل

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

این ارتباط میان نرم‌افزار و سخت‌افزار توسط سیستم عامل انجام می‌شود. این تنها قسمتی از کار سیستم عامل است.
سیستم عامل خود یک برنامه نرم افزاری است با این تفاوت که چون تمام منابع و امکانات سخت افزاری در اختیار وی می باشد دارای ویژگی منحصر به فرد می باشد بنابراین آن را در رده نرم افزارها می خوانیم با این ویژگی که از اهمیت خاصی برخوردار است. به بیان دیگر سیستم عامل یک برنامه جامع است که اجازه در اختیار قراردادن منابع و امکانات سخت افزاری را برای نرم افزارها صادر می کند و این سیستم عامل است که مسئول صحت عملکرد سیستم و منابع آن است.
سیستم عامل شامل 4 بخش مهم است
1- مدیریت پردازش و پردازشگر
2- مدیریت حافظه
3- مدیریت دستگاههای ورودی و خروجی (I/O)
4- مدیریت فایل
سه گروه کلی نرم‌افزارهای معماری







از دیدگاه ساختاری (معماری) (architecture)، نرم‌افزارها به دسته‌های زیر تقسیم می‌شوند:

کاربر-بنیان یا Client Base
کارگزار-بنیان یا Server Base
کاربر کارگزار بنیان یا Client-Server Base

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






رقابت نرم‌افزاری

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





نرم‌افزار سیستم

نرم‌افزار سیستم به نرم‌افزاری در رایانه گفته می‌شود که به کارکرد سیستم رایانه یا کاربردهای سطح پایین (یا Low Level) رایانه مربوط باشد. این نرم‌افزارها به ساختار فیزیکی سخت‌افزار رایانه وابسته هستند و در نوشتن آن‌ها از زبان‌های سطح پائین مانند زبان اسمبلی استفاده می‌شود. سیستم‌عامل و درایورها از نرم‌افزارهای سیستم هستند. از جمله زبان هایی که برای نگارش نرم‌افزارهای سیستمی استفاده می‌شود، زبان برنامه نویسی C می‌باشد. کار کردن با سی برای برنامه نویسان راحت تر است و آنان این زبان را به اسمبلی ترجیح می‌دهند. اگر برای نگارش نرم‌افزار سیستمی مشکل محدودیت فضای سخت‌افزاری داشته باشیم بهتر است با زبان اسمبلی کار کنیم که حجم آن پایین تر است. نرم‌افزارهای سیستمی به سخت‌افزار وابسته اند.

در برابر نرم‌افزار سیستم، نرم‌افزار کاربردی قرار دارد که برای کاربردهای سطح بالا و غیرسیستمی رایانه است و معمولاً به زبان‌های سطح بالا نوشته می‌شود که از جزئیات سخت‌افزاری سیستم مستقل است.






نرم‌افزار کاربردی

نرم‌افزار کاربردی (به انگلیسی: Application software) عبارت است از نرم‌افزاری که با استفادهٔ مستقیم از منابع و قابلیت‌های رایانه کاری را مستقیماً برای کاربر انجام می‌دهد. باید توجه داشت که این عبارت در مقابل عبارت نرم‌افزار سیستمی معنی پیدا می‌کند.

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

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

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

برای عنوان نمونه‌های دیگر می‌توان به نرم‌افزارهای پردازش متن، برگه‌های گسترده (صفحات گسترده) و نرم‌افزارهای پخش نوا و نما اشاره کرد.






مهندسی نرم‌افزار

مهندسی نرم‌افزار (به انگلیسی: Software engineering) یعنی استفاده از اصول مهندسی بجا و مناسب برای تولید و ارائه محصول نرم‌افزاری با کیفیت که قابل اطمینان و با صرفه بوده و برروی ماشین‌های واقعی به طور کارآمدی عمل کند.

مهندسی نرم‌افزار یک روش سیستماتیک، منظم و دقیق برای ساخت و ارائه محصولی نرم‌افزاری با کیفیت است.

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

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

فناوری‌ها و خدمات مهندسی نرم‌افزار به کاربران برای بهبود بهره‌وری و کیفیت یاری می‌رساند. نمونه‌هایی از زمینه‌های بهبود: پایگاه داده‌ها، زبان‌ها، کتابخانه‌ها، الگوها، فرایندها و ابزار.






مهم ترین شاخص مهندسی نرم‌افزار

مهم ترین شاخص در مهندسی نرم‌افزار تولید نرم‌افزار با کیفیت مناسب در جهت «نیازهای مشتری» است.






پیشینه مهندسی نرم‌افزار

اصطلاح مهندسی نرم‌افزار پس از سال ۱۹۶۸ میلادی شناخته شد. این اصطلاح طی نشست «مهندسی نرم‌افزار ناتو ۱۹۶۸» (که در گارمیش-پارتنکیرشن، آلمان برگزار شد) توسط ریاست نشست فریدریش ال باوئر معرفی شد و از آن پس به‌طور گسترده مورد استفاده قرار گرفت.

اصطلاح مهندسی‌نرم‌افزار عموماً به معانی مختلفی به‌کار می‌رود:

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






مهندسی نرم‌افزار عبارتست از:

کاربرد یک رویکرد سامانه‌شناسی، انتظام‌یافته، قابل سنجش نسبت به توسعه، عملکرد و نگهداری نرم‌افزار، که کاربرد مهندسی در نرم‌افزار است.
مطالعه روش‌های موجود در استاندارد IEEE







محدوده مهندسی نرم‌افزار و تمرکز آن

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

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

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






نیاز به مهندسی نرم‌افزار

نرم‌افزار عموماً از محصولات و موقعیت‌هایی شناخته می‌شود که قابلیت اطمینان زیادی از آن انتظار می‌رود، حتی در شرایط طاقت فرسا، مانند نظارت و کنترل نیروگاه‌های انرژی هسته‌ای، یا هدایت یک هواپیمای مسافربری در هوا، چنین برنامه‌هایی شامل هزاران خط کد هستند، که از نظر پیچیدگی با پیچیده‌ترین ماشین‌های نوین قابل مقایسه هستند. به‌عنوان مثال، یک هواپیمای مسافربری چند میلیون قطعه فیزیکی دارد (و یک شاتل فضایی حدود ده میلیون بخش دارد)، در حالی که نرم‌افزارِ هدایت چنین هواپیمایی می‌تواند تا ۴ میلیون خط کد داشته باشد.

با توجه به گسترش روزافزون دنیای رایانه امروزه بیش از هر زمان دیگری نیاز به متخصصان رایانه احساس می‌شود. متاسفانه این رشته در ایران بازار کار خوبی ندارد طبق آمارها ۶۳٫۲۷ درصد از فارغ‌التحصیلان در سال ۹۰ مشغول به کار در سایر مشاغل هستند. اما برای مهندسان سخت‌افزار هم امکان کار در شرکت‌های تولیدکننده قطعات و دستگاه‌ها و مراکز صنعتی – تولیدی بسیار فراهم است و از نظر سطح درآمدی هم با توجه به دانش و پشتکار شخصی در حد متوسط قرار دارند. به طور کلی این رشته در ایران با استقبال چندانی رو به رو نیست؛ این نیز حاکی از نبود برخی از زیرساخت‌ها در ایران هست.






تکنولوژی‌ها و روش‌های عملی

مهندسان نرم‌افزار طرفدار تکنولوژی‌ها و روشهای عملی بسیار متفاوت و مختلفی هستند، که با هم ناسازگار هستند. این بحث در سال‌های دهه ۶۰ میلادی شروع شد و ممکن است برای همیشه ادامه پیدا کند. مهندسان نرم‌افزار از تکنولوژی‌ها و روش‌های عملی بسیار متنوعی استفاده می‌کنند. کسانی که کار عملی می‌کنند از تکنولوژی‌های متنوعی استفاده می‌کنند: کامپایلرها، منابع کد، پردازشگرهای متن. کسانی که کار عملی می‌کنند از روش‌های عملی بسیار متنوعی استفاده می‌کنند تا تلاش‌هایشان را اجرا و هماهنگ کنند: برنامه‌نویسی در دسته‌های دونفری، بازبینی کد، و جلسات روزانه. هدف هر مهندس نرم‌افزار بایستی رسیدن به ایده‌های جدید خارج از الگوهای طراحی شده قبلی باشد، که باید شفاف بوده و به‌خوبی مستند شده باشد.

با وجود رشد فزاینده اقتصادی و قابلیت تولید فزاینده‌ای که توسط نرم‌افزار ایجاد شده، هنوز هم بحث و جدل‌های ماندگار درباره کیفیت نرم‌افزار ادامه دارند.






ماهیت مهندسی نرم‌افزار

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

دیوان فعالیت‌های آماری آمریکا مهندسان نرم‌افزار را به عنوان زیرگروهی از «متخصصان رایانه»، با فرصت‌های شغلی‌ای مانند «دانشمند رایانه»، «برنامه نویس» و «مدیر شبکه» دسته بندی کرده‌است. BLS تمام مهندسان دیگر این شاخه علمی، که شامل مهندسان سخت‌افزار رایانه نیز هست، را به‌عنوان «مهندسان» دسته بندی می‌کند.






نرم‌افزار آزاد

نرم‌افزار آزاد (به انگلیسی: Free software) نرم‌افزاری است که به‌همراه کد منبع توزیع شده و با قوانینی منتشر می‌شود که آزادی استفاده، مطالعه، ویرایش و انتشار مجددِ کاربران را تضمین می‌کند. نرم‌افزارهای آزاد معمولاً با همکاری برنامه‌نویس‌های داوطلب به‌عنوان یک پروژه به‌وجود می‌آیند.

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

ریچارد استالمن در سال ۱۹۸۵ در زمانی که در حال آغاز پروژهٔ گنو و به‌وجود آوردن بنیاد نرم‌افزارهای آزاد بود، برای اولین بار از عبارت «نرم‌افزار آزاد» استفاده کرد. براساس تعریف بنیاد نرم‌افزارهای آزاد کاربران یک نرم‌افزارِ آزاد، آزاد هستند؛ چون به اجازه گرفتن نیازی ندارند؛ آن‌ها در انجام کارهای دل‌خواهشان (مانند حق نشر و کپی‌برداری) محدود نیستند؛ نیازی به موافقت با هیچ توافق‌نامه‌ای ندارند؛ و در همان ابتدا نیز با نداشتن کد منبع محدود نبوده‌اند.






تعریف

طبق تعریف نرم‌افزار آزاد توسط بنیاد نرم‌افزارهای آزاد، هر نرم‌افزاری که آزادی‌های زیر را برای کاربرانش فراهم کند به عنوان یک نرم‌افزار آزاد شناخته می‌شود:

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

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

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







تاریخچه

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

رفته‌رفته که صنعت رایانه پیشرفت کرد و سخت‌افزارها بیشتر استاندارد شدند و همینطور کامپایلرها و مفسرها پیشرفت کردند، زمینه برای رشد نرم‌افزارهای انحصاری فراهم شد. با چنین پیشرفت‌هایی، برنامه‌ها راحت‌تر از سخت‌افزار یک شرکت به سخت‌افزار شرکت رقیب پورت می‌شدند و راحت می‌شد یک نرم‌افزار را بر روی سخت‌افزارهای مختلفی از شرکت‌های مختلف اجرا کرد. بدین ترتیب یک نفر می‌توانست نرم‌افزاری بنویسد که مستقل از سخت‌افزار خاصی عمل کند و بر روی طیف وسیعی از آنها اجرا شود. علاوه بر آن، با استاندارد شدن سخت‌افزارها، تفاوت‌های ناچیزی که آنها در کارایی داشتند رفته رفته ناپدید شد. تولید کنندگان به این نتیجه رسیده بودند که باید به نرم‌افزار هم به چشم یک وسیله فروشی نگاه کنند. شرکتها شروع به فروش نرم‌افزارهای خود کردند و دست کاربران خود را برای تغییر در نرم‌افزارها و انتشار مجدد آنها بستند. به گونه ای که در سال ۱۹۶۸ شرکتی به نام ای‌دی‌آر (به انگلیسی: ADR) اولین نرم‌افزار دارای مجوز را عرضه کرد. در سال ۱۹۶۹، شرکت آی‌بی‌ام به خاطر اینکه به همراه سخت‌افزارهای خود، نرم‌افزارهای آزاد ارائه می‌کرد، توسط وزارت دادگستری ایالات متحده آمریکا به از بین بردن کسب و کار و ایجاد یک شرایط ضدرقابتی برای دیگر متهم شد. آی‌بی‌ام دیگر به همراه سخت‌افزارهای خود نرم‌افزار ارائه نکرد و بدین ترتیب نرم‌افزارها و سخت‌افزارها از یکدیگر جدا شدند و فاصله گرفتند.

در سال ۱۹۸۳، ریچارد استالمن از آزمایشگاه هوش مصنوعی و علوم رایانه ام‌آی‌تی، پروژه گنو را بنیان نهاد. او که از تغییر فرهنگ در صنعت رایانه و کاربرانش ناامید شده بود، قصد داشت سیستم‌عاملی به نام گنو را به صورت یک نرم‌افزار آزاد توسعه دهد. در ژانویه ۱۹۸۴ توسعه سیستم‌عامل گنو آغاز گشت و بنیاد نرم‌افزارهای آزاد در اکتبر ۱۹۸۵ بنیان نهاده شد. در سال ۱۹۸۹، اولین نسخه از اجازه‌نامه همگانی گنو منشتر شد. البته جی‌پی‌ال اولین پروانه نرم‌افزار آزاد نبود و قبل از آن پروانه‌های نرم‌افزار آزاد دیگری مانند پروانه بی‌اس‌دی در سال ۱۹۸۸ عرضه شده بودند. تا کنون پروانه‌های نرم‌افزار آزاد زیادی توسط افراد و شرکت‌های مختلف منتشر شده است که آز این میان می‌توان به پروانه ام‌آی‌تی، پروانه آپاچی، پروانه آی‌اس‌سی، پروانه همگانی موزیلا و ... اشاره کرد.

در سال ۱۹۹۷، اریک ریموند مقاله‌ای با نام کلیسای جامع و بازار را منتشر کرد و در آن به بررسی اصول نرم‌افزارهای آزاد و مزایای آنها پرداخت. این مقاله به شدت مورد توجه قرار گرفت و یکی از دلایلی بود که شرکت ارتباطات نت‌اسکیپ، کد منبع مرورگر اینترنتی خود را به صورت نرم‌افزار آزاد منتشر کرد. این کار باعث شد تا شرکت‌های دیگری هم به نرم‌افزارهای آزاد توجه نشان دهند. کدهای منبع نت‌اسکیپ، بعدها اساس توسعه مرورگر فایرفاکس و برنامه تاندربیرد قرار گرفت.






مسئله نام‌گذاری

در زبان انگلیسی، کلمه Free معانی متفاوتی همچون آزادی، رایگان بودن و ... دارد. عده‌ای بر این عقیده بودند که ممکن است این کلمه باعث کژفهمی شده و باعث شود مردم به نرم‌افزارهای آزاد، به چشم نرم‌افزارهای رایگان نگاه کنند. این در حالی است که یک نرم‌افزار آزاد، لزوماً رایگان نیست. آنها در سال ۱۹۹۸ کمپین دیگری به نام «نرم‌افزارهای متن‌باز» (به انگلیسی: Open Source) را تشکیل دادند تا با تاکید بیشتر بر روی مدل توسعه و مسائل تکنیکی، به جای مسائل فلسفی و اخلاقی، مردم و شرکت‌ها را هر چه بیشتر به استفاده از نرم‌افزار آزاد تشویق کنند. تقریباً هر دو مفهوم، اشاره به یک چیز دارند و یک نرم‌افزار متن‌باز، نرم‌افزار آزاد هم هست (و برعکس)، اما طرفداران ایده نرم‌افزارهای متن‌باز، آن را روشی برای توسعه نرم‌افزارهای بهتر معرفی می‌کنند و تاکید کمتری بر جنبش اجتماعی و فلسفه پشت این گونه نرم‌افزارها دارند. طبق گفته موسسه پیشگامان متن‌باز (که توسط طرفداران ایده نرم‌افزار متن‌باز بوجود آمده)، عبارت «نرم‌افزار آزاد» واژه ای قدیمی‌تر است و به گونه‌ای منعکس کننده نام بنیاد نرم‌افزارهای آزاد است، سازمانی که در سال ۱۹۸۵ برای محافظت و ترویج نرم‌افزارهای آزاد بوجود آمد؛ با اینکه بنیان‌گذاران ایده متن‌باز هم از توسعه و ترویج نرم‌افزارهای آزاد حمایت می‌کنند، اما در مورد چگونگی ترویج آنها با بنیاد نرم‌افزارهای آزاد موافق نیستند و اعتقاد دارند که آزادی نرم‌افزار در درجه اول یک امر عملی است تا ایدئولوژیکی.






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

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

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






مدل تجاری

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

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






مثالهایی از نرم‌افزارهای آزاد کاربردی

هستهٔ سیستم‌عامل گنو/لینوکس، داروین.
تعدادی از سیستم‌عامل‌های خانواده بی‌اس‌دی مانند فری‌بی‌اس‌دی, اپن‌بی‌اس‌دی, نت‌بی‌اس‌دی, دراگون‌فلی‌بی‌اس‌دی.
کامپایلر جی‌سی‌سی، کتابخانهٔ زبان برنامه‌نویسی سی
کامپایلر کلنگ
پایگاه‌داده‌های رابطه‌ای مانند: mysql، پست‌گر اس‌کیوال، برکلی دی‌بی
زبان‌های برنامه‌نویسی مانند تی‌سی‌ال، روبی، پایتون، پرل و پی‌اچ‌پی.
مرورگر وب فایرفاکس (Firefox)
اُپن آفیس (Open Office)
میزکار کی‌دی‌ای (KDE)
میز کار ال‌اکس‌دی‌ئی (LXDE)
میزکار اکس‌اف‌سی‌ئی (XFCE)
میزکار گنوم (Gnome)
برنامه‌های حروف چینی مانند تک، لاتک و فارسی تک
نرم‌افزارهای مدیریت محتوا مانند جوملا (!Joomla)، پی‌اچ‌پی-نیوک (PHP-Nuke)، پست نیوک (postnuke) و مامبو (mambo) ,وردپرس (wordpress), دروپال (drupal) , ....
نرم‌افزارهای ساخت انجمن (Forum) مانند پی‌اچ‌پی‌بی‌بی (phpbb)، اس‌ام‌اف (smf)، یاب (YaBB) و فروم (phorum)
ویرایشگرهای متن ویم و ایمکس
مجموعه اداری لیبره‌آفیس







برنامه‌نویسی

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

برنامه نویسی کامپیوتر (که اغلب به طور کوتاه برنامه نویسی نامیده می شود) فرآیند سوق دادن ساختار اصلی یک مسأله محاسباتی به برنامه ای قابل اجرا است. این کار مستلزم فعالیت هایی همچون تحلیل و درک مسأله است و عموما حل چنین مسایلی منجر می شود به ایجاد یک الگوریتم، بازبینی نیازمندی های الگوریتم که شامل صحت و میزان منابع مصرفی است، پیاده سازی(که معمولا به عنوان کدینگ از آن یاد می شود) این الگوریتم در یک زبان برنامه نویسی مقصد، تست کردن، اشکال زدایی، نگه داری کد منبع، پیاده سازی سیستم ساخت(build system) و مدیریت مصنوعات مشتق شده مانند کد ترجمه شده به زبان ماشین برنامه های کامپیوتری. الگوریتم اغلب تنها به شکل قابل تجزیه و تحلیل برای انسان و قابل استدلال با منطق نمایش داده می شود. کد منبع به یک یا چند زبان برنامه نویسی(مانند JavaScript ،Smalltalk ،Python ،Java ،C# ،C++ ،C، و غیره) نوشته شده است.






تاریخچه

موضوع دستگاه‌هایی که به دنباله‌ای از دستورالعمل‌های از قبل تعریف شده عمل می‌کند بر می‌گردد به Greek Mythology.






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

برنامه نویسی مدرن
اندازه گیری کاربرد زبان

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






اشکال زدایی

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






زبان برنامه‌نویسی

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






نمونه یک برنامه

یک برنامهٔ ساده در زبان برنامه‌نویسیBasic که از ساده‌ترین زبان‌های برنامه‌نویسی است می‌تواند به شکل زیر باشد:

REM MY FIRST TRY TO COMMAND THIS MACHINE TO DO WHAT I LIKE
PRINT "HELLO NEW WORLD!"
END

سطر نخست که با واژه کلیدی "REM" آغاز شده و از سوی برنامهٔ واسط درنظر گرفته نمی‌شود و تنها برای نگاه داشتن یک توضیح یا مانند آن برای خود برنامه‌نویس است. سطر دوم با واژه کلیدی "PRINT" به دستگاه فرمان می‌دهد تا نوشته "HELLO NEW WORLD!" ("سلام دنیای نو!") را روی نمایشگر بنویسد (چاپ کند). سطر آخر پایان فرامین و برنامه را به ماشین اطلاع می‌دهد.

پس از نوشتن یک برنامه مانند بالا، برنامهٔ مترجم (در اینجا Basic) دستورات را تبدیل به فرامینی می‌کند که لایه زیرین، که ممکن است همان سخت‌افزار باشد، می‌تواند آنها را اجرا کند.






پارادایم‌ها

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







وارسی مدل
در علوم کامپیوتر، وارسی مدل به این مسئله اشاره دارد که آیا مدل یک سیستم یک نیازمندی خاص را پشتیبانی می‌کند یا خیر. بررسی امکان بروز بن بست، مسابقه و حالت‌های خاصی که سیستم را از کار می‌اندازد، وظیفهٔ فرایند وارسی مدل نرم‌افزار است. به طور خلاصه، وارسی مدل تکنیکی است برای تائید صحت عملکرد یک سیستم که دارای حالت‌های محدود(en:Finate-state machine) است. این روش برای اطمینان حاصل کردن از صحت عملکرد نیازمندی‌ها و طراحی یک سیستم بلادرنگ و نهفته به کار می‌رود. این شیوهٔ صحت سنجی، تمامی حالت‌های ممکن سیستم را کاوش می‌کند و کلیهٔ سناریوهای ممکن را به روش نظاممند امتحان می‌کند.






روش‌های وارسی مدل

در وارسی مدل کلیهٔ حالت‌ها و انتقال‌های مدل ریاضی مورد بررسی قرار می‌گیرد. با استفاده از یک روش هوشمندانه با دامنهٔ خاص، می‌توان تمامی حالت‌ها را با کاهش زمان محاسبه طی انجام یک عملیات، بررسی کرد. شیوه‌های پیاده سازی شامل شمارش فضای حالت‌ها، شمارش فضای حالت‌های نمادین، تفسیر انتزاعی، شبیه سازی نمادین و پالایش انتزاعی است. ویژگی‌هایی که اغلب مورد صحت سنجی قرار می‌گیرند، به صورت منطق‌های زمانی مثل منطق زمانی خطی (LTL) و یا منطق محاسبات درختی (CTL) توصیف می‌شوند.






مزایا و کاربردها

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

تفاوت وارسی مدل با تست نرم‌افزار

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







تست نرم‌افزار

اهداف تست نگرش ما در تست نرم افزا ر تست: اجراي یک برنامه با هدف پیدا کردن خطا تست خوب: احتمال پیدا کردن خطاهاي کشف نشده توسط ارزیابی زیاد است. تست موفق: که حداقل یک خطاي کشف نشده را بیابد تست فقط وجود خطا را نشان می دهد و نه عدم وجود آن را. پیدا نشدن خطا در تست به معناي بدون خطا بودن برنامه نیست. اصول تست تست با توجه به نیازمندیهاي کاربر برنامه ریزي قبل از اجرا (test plan) نوشتن برنامه تست قانون پارتو %80 خطاهاي کشف نشده در 20 % کد است تست باید از اجزاي کوچک شروع شود ممکن نیست (exhaustive) تست کامل براي موثر بودن باید توسط شخصثالث بیطرف انجام شود معیارهاي تست پذیر بودن نرم افزار ١. قابلیت اجرا Operability هرچه نرم افزار بهتر کار کند و در محیط هاي بیشتري قابل اجرا باشد، n بهتر قابل ارزیابی است ٢. مشاهده پذیري Observability قابلیت مشاهده نتایج ارزیابی ٣. کنترل پذیري Controlability قابلیت اجراي تستهاي خودکار (مثل امکان اجراي خودکار تست هاي واحد توسط jUnit براي زبان جاوا) ۴. تجزیه پذیري Decomposability ارزیابی می تواند هدفمند تر شود ۵. سادگی Simplicity کاهش پیچیدگی معماري و منطق برنامه ۶. پایداري Stability براي ارزیابی تغییرات کمی بخواهد ٧. درك پذیري Understandability قابلیت درك طراحی و وابستگیهاي بین اجزا سطوح مختلف تست • تست واحد(Unit testing ) • تست یکپارچه سازي(Integration testing ) • تست یکپارچه سازي افزایشی • تست یکپارچه سازي • تست سیستم(System testing ) • تست پذیرش(Acceptance testing ) • تست آلفا • تست بتا تست واحد . پایین ترین سطح تست است micro level هر کد تست واحد، یک قطعه کد یا یک تابع (متد) خاص را تست می کند. این تست نیاز به دانش در مورد طراحی و نحوه عملکرد داخلی تابع یا قطعه کد دارد. توسط برنامه نویس (و نه تست کننده) انجام می شود. تست یکپارچه سازي افزایشی با افزوده شدن قابلیت جدید به نرم افزار، مجددا نرم افزار تست می شود. هدف این تست، بررسی درستی نرم افزار پس از افزوده شدن امکان جدید است. امکانات نرم افزار باید از هم استقلال داشته باشند تا بتوان پیش از تکمیل کل نرم افزار و به صورت افزایشی نرم افزار را تست کرد. توسط برنامه نویس یا تیم تست انجام می شود تست یکپارچه سازي تست نرم افزار حاصل از کنار هم قرار گرفتن قطعات مختلف آن به منظور بررسی درستی عملکرد نرم افزار یکپارچه شده قطعات مختلف شامل قطعه کدها (ماژول هایی از کد برنامه هاي مجزا که در کنار هم برنامه اصلی را تشکیل می دهند برنامه هاي مشتري-کارگزار عمل کننده در یک شبکه پس از تست واحد انجام می شود تست سیستم به منظور بررسی عملکرد نرم افزار بر روي پلتفرم هاي مختلف انجام می شود و نرم افزارهاي OS پلتفرم: سخت افزار + نرم افزار (شامل کاربردي مورد نیاز برنامه) به منظور اطمینان از اینکه برنامه با مولفه هاي دیگر محیط اجرایش به خوبی کار می کند به منظور اطمینان از اینکه نرم افزار ارائه شده در محیط مورد نظر قابل استفاده است. مثالی از مشکل حاصل از انجام ندادن تست سیستم

نرم افزار بازي شیر شاه دیزنی Disney’s Lion King Game

در پاییز سال 1994 شرکت دیزنی اولین CD بازي خود تحت عنوان شیر شاه Lion King که بر اساس کارتونی به همین نام ساخته شده بود را وارد بازار کرد. بسیاري از شرکتهاي دیگر تا آن زمان اقدام به ساخت بازیهاي رایانه اي کرده بودند اما این اولین بار بود که شرکت دیزنی وارد این تجارت شده بود. دیزنی براي فروش این بازي دست به تبلیغات گسترده اي زد و در نتیجه این محصول با فروش بسیار بالایی مواجه شد. اما اتفاقات پس از آن تبدیل به کابوسی براي این شرکت شد. در 26 دسامبر، روز پس از کریسمس تلفن هاي بخش پشتیبانی مشتریان شرکت دیزنی شروع کرد به زنگ زدن و زنگ زدن و زنگ زدن! متصدیان پاسخگویی به تماس ها با خیل عظیمی از والدین عصبانی با بچه هاي گریان مواجه شدند که ادعا می کرند نرم افزار مزبور کار نمی کند. این خبر به سرعت در مطبوعات و تلویزیون نیز پخش شد و کریسمس آن سال را براي بسیاري از پرسنل دیزنی تلخ کرد. تست علت چه بود؟ پس از بررسی مشخص شد که دیزنی نرم افزار خود را بر روي بسیاري از مدل هاي PCتست نکرده بود و در نتیجه تنها بر روي سیستمهایی کار می کرد که برنامه نویسان دیزنی روي آن سیستم ها نرم افزار خود را توسعه داده بودند و نه دستگاههاي متداولی که عموم مردم از آن استفاده می کردند. تست پذیرش به منظور بررسی اینکه نرم افزار نیازهاي مشتري را برآورده می کند، انجام می شود بعد از تست سیستم انجام می شود. شامل: تست آلفا: تست آلفا در سایت توسعه دهنده نرم افزار و در اغلب موارد n توسط کارمندان داخلی و در بعضی از موارد توسط مشتري تعدادي از کاربرانش که به محل دعوت می شوند انجام می گیرد. تست بتا: در تست بتا نسخه هایی از نرم افزار در اختیار تعدادي از کاربران قرار می گیرد تا در بازه اي با آن کار کنند و خطاها را گزارش دهند. روشهاي ارزیابی روش جعبه سفید دانستن نحوه کار داخلی برنامه امکان تایید نحوه عمل هر تکه کد و مسیر اجرا مراحل اولیه ارزیابی روش جعبه سیاه دانستن عمل مورد انتظار و مطلوب امکان تایید کاري که سیستم باید انجام دهد مراحل انتهایی ارزیابی استرتژی تست استراتژی تست نرم‌افزار یک توصیف رسمی از این است که نرم‌افزار چگونه تست خواهد شد. هدف استراتژی تست تعریف همه مراحل برای فرایند تست نرم‌افزار است که شامل برنامه ریزی آزمایش، طراحی ابزار آرمایش، اجرای آزمایش و جمع آوری و ارزیابی داده‌های بدست آمده باشد.

==استراتژی جعبه سیاه==این آزمایش جایگزین آزمایش جعبه سفید نمی‌باشد بلکه مکمل آن است.وخطاهایی متفاوت باآن راتست میکند.

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

در یک استراتژی آزمایش جعبه سیاه ما عموماً موارد زیر را مورد بررسی و آزمایش قرار می دهیم:

۱. بررسی اینکه سیستم نیازمندهای عملیاتی و غیر عملیاتی را تامین می‌کند یا نه.

۲. اعتبارسنجی ورودیها

۳. بررسی مقادیر مرزی برای متغیرها: به یک متغیر مقداری کمتر از حداقل مقداری که می تواند قبول کند یا بیشتر از حداکثر مقداری که می تواند قبول کند می دهیم و سیستم را در این شرایط تست می کنیم.

۴. بررسی خروج‌های سیستم: یک مجموعه از ورودهای صحیح با خروج‌های مربوط به آن را تهیه می کنیم و سپس ورودها را به سیستم وارد می کنیم و خروج‌های که توسط سیستم داده می‌شود را با خروجی‌های واقعی مقایسه می کنیم.

۵. بررسی رفتار سیستم در برابر پردازش ورودها و پرس و جوهای بزرگ و سنگین

برای موارد بالا و مواردی دیگری که ذکر نشد روشهای مختلف تست در استراتژی جعبه سیاه وجود دارد که عبارتند از:

en:Functional testing

en:Stress testing

en:Recovery Testing

en:Volume testing

User Acceptance testinge

en:System testing

en:Sanity or Smoke testing

en:Load testing

en:Usability testing

en:Exploratory testing

Ad-hoc Testing

en:Alpha testing

en:Beta testing

آیا می توان در استراتژی جعبه سیاه، از این مطمئن شد که سیستم به طور کامل تست شده است؟ خیر، هرگز در این استراتژی نمی توان مطمئن شد که سیستم به طور کامل تست شده است.






استراتژی جعبه سفید

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

در یک استراتژی آزمایش جعبه سفید ما عموماً موارد زیر را مورد توجه و بررسی قرار می دهیم:

۱. بررسی سطر به سطر کد (Code coverage): در این حالت باید سیستم را به گونه ای اجراء و بررسی کنیم که مطمئن شویم سطر به سطر کد برنامه حداقل یکبار اجراء شده است.

۲. بررسی همه انشعاب‌ها در کد برنامه (branch) : در کد برنامه باید تمام عبارت‌های شرطی ( if elseها و Switch case ها) را تک به تک مورد بررسی قرار داد. به این صورت که در یک عبارت if else هم فسمت if و هم قسمت else هر کدام بصورت مجزا یکبار اجراء شوند.

۳. بررسی همه حلقه‌ها در برنامه : حلقه‌ها در نرم‌افزار نقش اساسی دارند، چون می تونند با اشتباه جزئی مقدار زیادی از منابع را مصرف کرد برای مثال شرط خروج از حلقه به اشتباه هیچ وقت True نشود. برای نمونه حلقه‌ها را با ورودی بزرگتر از شرط خروج حلقه چک کنید یعنی حلقه اصلاً اجر نشود. تستی طراحی کنید که حلقه دقیقاً یکبار اجراء شود، تستی طراحی کنید که حلقه در یک بازه خاص اجراء شود و ....

۴. مدیریت خطای مطلوب : برسی اینکه اگر به یک متد یک ورودی نامعتبر وارد شود، نحوه آگاه سازی و نمایش مطلوب خطا برای کاربر چگونه باشد؟

۵. بررسی امنیت : سیستم را از این جهت که چگونه در برابر دسترسی‌های غیرمجاز، هک، کرک و هر چیز دیگر که می تواند به آن آسیب برساند مورد بررسی قرار می دهد. در اینجا ما باید مکانهای از کد را که داده‌ها را اعتبارسنجی و مدیریت می کنند، دسترسی به منابع یا عملیات مهم و حیاتی را انجام می دهند را بررسی کنیم.
1:21 am
فیلم

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

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






دوربین دیجیتال

دوربین دیجیتال یک دستگاه الکترونیکی است که برای گرفتن عکس و ذخیرهٔ آن، به‌جای فیلم عکاسی از حسگرهای حساس به نور معمولا از دستگاه جفت‌کنندهٔ بار (CCD) یا نیم‌رسانای اکسید فلزی مکمل (CMOS) استفاده می‌کند و تصویر گرفته شده توسط سنسور، طی چند مرحله برای استفاده به حافظهٔ دوربین فرستاده می‌شود.




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

در دوربین دیجیتال فرآیند ثبت تصویر با استفاده از حسگر تصویر در حافظه انجام می‌گیرد و اجازه می‌دهد که تصاویر در شکل دیجیتال ذخیره شوند و به سرعت و بدون نیاز به عملیات خاصی (نظیر عملیات شیمیایی بر روی فیلم) در دسترس باشند.



لنز

لنز استوانه‌ای حاوی مجموعه‌ای از عدسی است که نور را از خود عبور داده و به درون دوربین هدایت می‌کند و باعث می‌شود که تصویر به صورت واضح بر روی فیلم عکاسی یا گیرنده تصویر منعکس شود. کیفیت عکس، بیش‌تر به لنز بستگی دارد تا دوربین. لنز دوربین‌های کامپکت قابل تعویض نیستند، اما لنز دوربین‌های تک‌لنزی بازتابی (SLR) قابل تعویض‌اند.

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



فلاش

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

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

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



فیلتر

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

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


پایه‌ها
سه‌پایهسه پایهٔ عکاسی، وسیله‌ای است که می‌توان دوربین را روی آن نصب کرد و به کمک آن عکس گرفت. یک استفادهٔ سه پایه، جلوگیری از لرزش دوربین در نوردهی‌های زیاد است. همچنین به‌وسیلهٔ سه‌پایه می‌توان از تار شدن عکس که بر اثر تکان‌خوردن احتمالی دوربین ایجاد می‌شود، جلوگیری کرد.[۹۰]تک پایهتک‌پایه وسیله‌ای است که دوربین عکاسی به آن متصل می‌شود و لرزش را تا حدی از بین می‌برد. از تک پایه‌ها در عکاسی حیات‌وحش، عکاسی ورزشی، عکاسی از موزه‌ها و هنگامی که چرخش سریع دوربین در جهت افقی برای عکاسی مورد نیاز است، مانند ثبت عکس‌های پنینگ، بیشتر استفاده می‌شود.




تاریخ عکاسی
عکاسی توسط یک فرد کشف و تکمیل نشده‌است، بلکه نتیجهٔ تلاش بسیاری از افراد در زمینه‌های مختلف و اکتشافات و نوآوری‌های آنان در طول تاریخ است. سال‌ها قبل از اختراع عکاسی، اساس کار دوربین عکاسی وجود داشته‌است؛ موزی فیلسوف چینی، ارسطو و اقلیدس ریاضی‌دانان یونانی در سدهٔ ۵ و ۴ پیش از میلاد نحوهٔ کارکرد دوربین سوراخ سوزنی را شرح داده‌بودند.در یونان باستان عقیده بر این بود که نور از چشم به سمت اشیا می‌تابد و بازتاب آن باعث دیدن می‌شود. ارسطو و اقلیدس با استفاده از تئوری سوراخ‌سوزنی تلاش کردند خلاف آن نظریه را ثابت کنند؛ آن‌ها در پشت دوربین‌های سوراخ سوزنی صفحه‌ای نیمه‌مات قرار می‌دادند تا تصویر بازتاب‌شده روی آن با چشم دیده شود. در قرن ششم میلادی، آنتمیوس ریاضی‌دان بیزانسی در آزمایش‌های خود از دوربین تاریکخانه‌ای استفاده کرد.



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



سوراخ سوزنی

ابن هیثم تئوری دوربین سوراخ سوزنی را گسترش داد و در مشاهدات خورشید گرفتگی خود از وسیله‌ای به نام «جعبه تاریک» استفاده کرده بود.بسیاری او را علاوه بر پایه‌گذار عکاسی، نخستین دانشمندی می‌دانند که فیزیک را به‌طور کامل به دانشی تجربی تبدیل کرد.او که مخترع ذره‌بین است، برای نخستین‌بار از دوربین سوراخ سوزنی و دوربین تاریکخانه‌ای در آزمایش‌هایش جهت بررسی خواص نور استفاده کرد. آلبرتوس ماگنوس در قرن سیزدهم میلادی نیترات نقره و ژرژ فابریسیوس نقره کلرید را کشف کرد.و دانیل باربارو در سال ۱۵۶۸ میلادی نحوهٔ عملکرد دیافراگم و کارکرد عدسی در دوربین تاریکخانه‌ای را شرح داد.ویلهلم هومبرگ در سال ۱۶۹۴ میلادی توضیح داد که نور چگونه برخی از مواد شیمیایی را تاریک می‌کند و در سال ۱۸۰۲ میلادی توماس وجوود انگلیسی توانست بر روی سطح‌های حساس شده با نیترات نقره تصویر شفافی به دست آورد.



اتاق تاریک

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

اولین تصویر لیتوگرافی نوری در سال ۱۸۲۲ میلادی توسط مخترع فرانسوی، ژوزف نیسه فور نیپس تولید شد اما در هنگام رونوشت‌برداری از بین رفت.اما نیپس در سال ۱۸۲۶ دوباره توانست عکسی دائمی از طبیعت به نام اصطبل و کبوترخانه را خلق کند. ولی زمان نوردهی این عکس هشت ساعت بود که زمان بسیار درازی است، و مشکل دیگر هم این بود که تصویر نگاتیو بود یعنی هرچه سفید بود را سیاه هرچه سیاه بود را سفید نشان می‌داد. به همین دلیل او به دنبال یافتن فرآیند بهتری بود و با همکاری لوئی داگر، آزمایش‌هایی را بر ترکیبات نقره براساس یافته‌های یوهان هاینریش شولتز در سال ۱۸۱۶ میلادی انجام دادند؛ در آن سال شولتز مشاهده کرد که مخلوطی از نیترات نقره و آهك در مقابل نور، تیره می‌شوند.



داگرئوتایپ
نیپس در سال ۱۸۳۳ درگذشت؛ ولی داگر در سال ۱۸۳۷ توانست روش داگرئوتایپ را اختراع کند. داگرئوتایپ بدین‌گونه بود که به صفحه‌ای نقره‌ای مدتی بخار ید داده تا نسبت به نور حساس شود، سپس آن را درون یک دوربین جعبه‌ای گذاشته و با برداشتن عدسی حدود ۱۵ تا ۳۰ دقیقه نور از شی موردنظر به صفحهٔ نقره ای تابانده می‌شد. برای ظهور تصویر، صفحه را در محلول جیوه با حرارت ۶۵ درجه قرار می‌داد تا با چسبیدن ذرات نقره و جیوه، عکس بوجود آید؛ سپس صفحه را در آب سرد فرو می‌برد تا سطح آن پایدار گردد، در نهایت صفحه را در آب‌نمک (سدیم کلرید) قرار می‌داد و تصویر ظاهر می‌شد. یکی از مشکلات روش داگرئوتایپ این بود که فقط می‌شد یک نسخهٔ پوزیتیو یا مثبت (عکس دائمی) از سوژه ثبت کرد.



کالوتایپ

در سال ۱۸۳۵ میلادی، چند ماه پس از اینکه نتیجهٔ آزمایش‌های داگر اعلام شد، شیمی‌دان انگلیسی، هنری فاکس تالبوت گزارشی از روند عکاسی خود که آن را «طراحی نوری» نامیده بود منتشر کرد؛ تالبوت این روش را در سال ۱۸۳۵ ابداع کرده بود اما آن را مخفی نگه داشت و روش خود را کامل و در سال ۱۸۴۰ با عنوان کالوتایپ معرفی کرد.

در این روش، به‌جای استفاده از صفحات فلزی، از کاغذ حساس‌شده به نیترات نقره با ترکیبی از سدیم کلرید و اسید گالیک استفاده کرد. کاغذ حساس‌شده به مدت دو دقیقه نوردهی می‌شد و پس از آن یک تصویر پنهان بوجود می‌آمد که آن‌را با استفاده از پتاسیم یدید و سدیم سولفات به صورت نگاتیو (منفی) در اندازه‌های کوچکتر ثبت می‌کرد. سپس با استفاده از آن می‌شد نسخه‌های دائمی فراوانی در اندازه‌های مختلف تهیه کرد؛ تا پیش از این عکاسان مجبور بودند صفحهٔ حساس را به اندازهٔ شی موردنظر بسازند و امکان تغییر در اندازه وجود نداشت. تا سال ۱۸۶۰ روش داگرئوتایپ به کلی منسوخ شد و عکاسی مبتنی بر نسخه‌های نگاتیو و پوزیتیو جایگزین آن شد.



عکاسی رنگی اولیه

در سال ۱۸۳۹ شیمیدان و ستاره‌شناس انگلیسی، جان هرشل با استفاده از سدیم تیو سولفات روشی را برای تهیهٔ نسخهٔ نگاتیو روی شیشه ابداع کرد که به‌مرور جایگزین نگاتیوهای کاغذی شد.

تئوری عکس رنگی سه‌رنگ، توسط جیمز کلرک ماکسول فیزیکدان انگلیسی در سال ۱۸۵۵ پیشنهاد شده بود. برپایهٔ نظریهٔ او، نور مرئی از سه رنگ اساسی قرمز، سبز و آبی، تشکیل شده‌است. پس فیلمی از سه لایه ساخت که هر لایهٔ آن نسبت به یکی از سه رنگ‌های اولیه حساس بود و توانست نخستین عکس‌رنگی را در سال ۱۹۶۱ به ثبت برساند.

بالاخره در سال ۱۸۷۴، یک شرکت انگلیسی اولین شیشه‌های خشک عکاسی را به بازار عرضه کرد و عکاسی جنبهٔ عملی به خود گرفت. اما حمل و نقل مقدار زیادی شیشه، از لحاظ سنگینی و شکنندگی، یکی از مشکلات پیش روی بود تا اینکه در سال ۱۸۷۱ ریچارد مادوکس، فیزیکدان و عکاس انگلیسی با ابداع فیلم عکاسی ژلاتینی، زمان عکسبرداری را کوتاه کرد و جابه‌جایی فیلم‌های عکاسی را راحت نمود که نقطهٔ عطفی در تاریخ عکاسی محسوب می‌شود.

جورج ایستمن آمریکایی در سال ۱۸۸۴ فیلم رول را که فیلمی از جنس پلاستیک آغشته به امولسیون ژلاتینی است را ابداع کرد و با ساخت دوربین جعبه‌ای در سال ۱۸۸، عکاسی را برای مردم عادی مقرون به صرفه نمود و تحول مهمی در عکاسی ایجاد کرد؛ شعار تبلیغاتی کمپانی کداک برای دوربین‌هایش چنین بود که «شما دکمه را فشار دهید، بقیه‌اش را ما انجام می‌دهیم. »

تصاویر دیجیتال در دههٔ ۱۹۶۰ و در جریان پیاده‌کردن انسان در ماه، تکامل پیدا کرد. دستگاه‌های گیرندهٔ امواج آنالوگ، اطلاعاتی که در مورد عکس از فضا ارسال می‌شد را بسیار دشوار دریافت می‌کردند. با دیجیتالیزه سیگنال‌ها و تقویت آن‌ها، پارازیت‌ها حذف می‌شدند و تصاویر واضح بدست می‌آمد.



آزمایش کلودیون

با کشف فردریک آرچر، به نام «کلودیون» گام بزرگی در صنعت عکاسی برداشته شد. آرچر یدور پتاسیم را در کلودیون حل کرده سپس با این مخلوط سطح یک شیشه پاک را می‌پوشانید و بلافاصله شیشه را در محلول نیترات نقره حساس می‌کرد. پس از عکسبرداری در موقعی که شیشه هنوز خیس بود، فورا آن را در محلول پیروگالول و نیترات نقره ظاهر و با محلول هیپوسولفیت سدیم ثابت می‌نمود. نگاتیوهایی که بدین طریق به دست می‌آمد روی کاغذ آلبومین پوش چاپ می‌شد و سپس عکس به وسیله طلا به رنگ قهوه‌ای قشنگی در می‌آمد. «لگری» و «راسل» طریقه‌ای یافتند که مانع زوال حساسیت کلودیون در اثر خشکی می‌شد. با این عمل عکاسی یک قدم دیگر به سوی تکامل برداشت. در سال ۱۸۷۱ «مداکس» و چند دانشمند دیگر امولسیون ژلاتینو برمور را به دست آوردند و در سال ۱۸۷۴ میلادی «چارلز بنت» به وسیله گرم کردن برمور نقره در مجاورت آمونیاک حساسیت صفحات ژلاتینو برمورنقره را بالا برد. در این زمان سرعت عکسبرداری به یک صدم ثانیه و در ۱۸۹۵ به یک هزارم ثانیه رسید. اختراع فلاشهای الکترونی به سرعت عکاسی در شب و جاهای کم نور کمک بسیاری کرد.

یک دستگاه عکاسی، در آغاز پیدایش، وزن و حجم بسیاری داشت به طوری که حمل آن مشکل بود. ولی امروزه دوربین‌های بسیار ظریفی ساخته شده که در جیب جا گرفته و کار با آن نیز بسیار آسان است. حساسیت امولسیون‌ها نیز در طی این مدت در برابر نور زیادتر شد. در اوایل فقط تشعشعات آبی و بنفش صفحه را متاثر می‌ساخت ولی در سال ۱۸۷۳ فوگل موفق شد که تاثیر اشعه با طول‌موج کوتاه (آبی و بنفش) را به تاخیر اندازد تا اشعه دیگر بتواند صفحه را سیاه کند. با این ابتکار رنگ سبز به صورت خاکستری در می‌آید. این امولسیون را «اورتوکروماتیک» نامیدند. بعد نور قرمز در روی صفحات تاثیر نمود و امولسیون آن را پانکروماتیک panchromatic نام نهادند. حساسیت صفحه حساس با این طریق باز هم به حساسیت چشم آدمی نزدیکتر گردید. قسمت اعظم بسط و رواج عکاسی آماتوری مدیون ابتکارات جرج ایستمن بود که فیلم عکاسی و شیشه را ساخت. در سال ۱۸۸۹ فیلم شفاف جانشین کاغذ شد.




پوستر

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





ارتباط تصویری

گرافیک

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






نگاره
نگاره یا تصویر چیزی ثانوی است که انعکاس یا بازتابِ واقعیت یا حقیقت دیگری می‌باشد. نگاره در فرایند انتزاع و تجرید (شکل‌گیری مفاهیم و اندیشه)، برای فرد معنی پیدا می‌کند. نگاره‌ها می‌توانند دوبعدی یا سه‌بعدی باشند.



پیرامون واژه
میان واژه‌های عکس (یا رُخش) و تصویر (یا نگاره) تفاوت وجود دارد. تصویر نیز در انگلیسی image است.




پیشینه
نگاره از نخستین رسانه های گروهی میان انسان‌ها بوده‌است.



ویژگی‌ها
با نشانه‌شناسی نگاره ، می‌توان ویژگی‌های یک نگاره را شناخت، اگر چه نظریات گوناگونی برای دستیابی به نگاره چون نظریهٔ اطلاع‌رسانی، نظریهٔ ریاضیات، نظریهٔ روانشناسی، نظریهٔ بیان و غیره وجود دارد.



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



نگاره ذهنی
«نگاره ذهنی» تصویری است که در نبود اشیا یا پدیده‌ها در ذهن وجود دارد. طرح آغازین هنرمندان معمولاً نخست در ذهن و پندارشان مجسم می‌شود و سپس شکل حقیقی به خود می‌گیرد.
ساعت : 1:21 am | نویسنده : admin | فتوگالری | مطلب قبلی
فتوگالری | next page | next page