در عصری که به سر می بریم فناوری اطلاعات یکی از عمده ترین محورهای تحول و توسعه در دنیا محسوب می شود. امروزه دستاوردهای ناشی از IT چنان با زندگی مردم تلفیق شده است که توقف در مسیر آن باعث ایجاد اختلال در جامعه و حتی رفاه و آسایش مردم می شود. مهندسی IT تلفیقیست از دو علم پایهی مهندسی کامپیوتر و فناوری اطلاعات، پیتر نورتون برنامه نویس و نویسنده مشهور آمریکایی مهندسی فناوری اطلاعات را به این صورت تعریف می کند: مهندسی فناوری اطلاعات بخشی از مهندسی است که به مطالعه ریاضی و کاربرد دادهها و پردازش آنها، ، ذخیره سازی، مدیریت، کنترل، سوئیچینگ، مبادله، ارسال یا دریافت داده و توسعه و استفاده از سخت افزار، نرم افزار، میان افزار و پروسیجرهای مربوط به این فرایند اختصاص دارد.دکتر ریچارد لاهیر استاد دانشگاه استنفورد نیز درباره علمِ مهندسی فناوری اطلاعات می گوید: مهندسی فناوری اطلاعات عبارت است از جمع آوری, طبقه بندی, سازمان دهی, توسعه، حفظ امنیت و نشر هرگونه اطلاعات به وسیلهی ابزار کامپیوتر و تکنولوژی های جدید دیگر. مهمترین و محوری ترین دستاورد این فناوری دسترسی سریع به اطلاعات و انجام امور بدون در نظر گرفتن فواصل جغرافیایی و فارغ از محدودیتهای زمانی است.
فناوری اطلاعات متشکل از چهار عنصر اساسی انسان، ساز و کار، ابزار، ساختار است، به طوری که در این فناوری، اطلاعات از طریق زنجیره ارزشی که از بهم پیوستن این عناصر ایجاد میشود جریان یافته و پیوسته تعالی و تکامل سازمان را فراراه خود قرار میدهد:
· انسان: منابع انسانی، مفاهیم و اندیشه، نوآوری
· ساز و کار: قوانین، مقررات و روشها، سازوکارهای بهبود و رشد، سازوکارهای ارزش گذاری و مالی
· ابزار: نرمافزار، سختافزار، هوش مصنوعی، شبکه و ارتباطات
· ساختار: سازمانی، فراسازمانی مرتبط، جهانی
بسیاری مفهوم فناوری اطلاعات را با کامپیوتر و انفورماتیک ادغام میکنند، این درحالیست که اینها ابزارهای فناوری اطلاعات میباشند نه تمامی آنچه که فناوری اطلاعات عرضه میکند. سید حامد خسروانی شریعتی در مقالهای در همین زمینه آوردهاست که: با فرض اینکه فناوری اطلاعات یک سیب باشد، کامپیوتر، شبکه، نرم افزار و دیگر ابزارهای مرتبط با این حوزه همانند دم سیب است که میوه توسط آن تغذیه میگردد، حال این خود سیب است که محصول اصلی است و هدف و نتیجه در آن خلاصه میگردد.
پس از معرفی اجمالی کلمه مهندسی فناوری اطلاعات میرسیم به اطلاعاتی که این وبلاگ قصد دارد در زمینه مهندسی IT منتشر کند، که در چهار حوزهی تخصصی برنامهنویسی، هوش مصنوعی، معماری سیستمعامل، شبکه و امنیت، خواهد بود.
1. برنامه نویسی
برنامه نویسی رایانه (که اغلب به طور کوتاه برنامه نویسی نامیده میشود) فرایند سوق دادن ساختار اصلی یک مسأله محاسباتی به برنامهای قابل اجرا است. این کار مستلزم فعالیتهایی همچون تحلیل و درک مسأله است و عموماً حل چنین مسایلی منجر میشود به ایجاد یک الگوریتم، بازبینی نیازمندیهای الگوریتم که شامل صحت و میزان منابع مصرفی است، پیادهسازی (که معمولاً به عنوان کدینگ از آن یاد میشود) این الگوریتم در یک زبان برنامه نویسی مقصد، تست کردن، اشکال زدایی، نگه داری کد منبع، پیادهسازی سیستم ساخت(build system) و مدیریت مصنوعات مشتق شده مانند کد ترجمه شده به زبان ماشین برنامههای کامپیوتری. الگوریتم اغلب تنها به شکل قابل تجزیه و تحلیل برای انسان و قابل استدلال با منطق نمایش داده میشود. کد منبع به یک یا چند زبان برنامه نویسی(مانند JavaScript ،Smalltalk ،Python ،Java ،C# ،C++ ،C، و غیره) نوشته شده است.
2. هوش مصنوعی
هوش مصنوعی، دانش ساختن ماشین ها یا برنامههای هوشمند است.همانگونه که از تعریف فوق-که توسط یکی از بنیانگذاران هوش مصنوعی ارائه شده است- برمیآید،حداقل به دو سؤال باید پاسخ داد:
1. هوشمندی چیست؟ 2. برنامههای هوشمند، چه نوعی از برنامهها هستند؟ تعریف دیگری که از هوش مصنوعی میتوان ارائه داد به قرار زیر است:
هوش مصنوعی، شاخهایست از علم کامپیوتر که ملزومات محاسباتی اعمالی همچون ادراک (Perception) ، استدلال(reasoning) و یادگیری(learning) را بررسی کرده و سیستمی جهت انجام چنین اعمالی ارائه میدهد. و در نهایت تعریف سوم هوش مصنوعی از قرار زیر است:
هوش مصنوعی، مطالعه روشهایی است برای تبدیل کامپیوتر به ماشینی که بتواند اعمال انجام شده توسط انسان را انجام دهد. به این ترتیب میتوان دید که دو تعریف آخر کاملاً دو چیز را در تعریف نخست واضح کردهاند.
1. منظور از موجود یا ماشین هوشمند چیزی است شبیه انسان. 2. ابزار یا ماشینی که قرار است محمل هوشمندی باشد یا به انسان شبیه شود، کامپیوتر است.
3. معماری سیستمعامل
سیستم عامل از نگاه معماری یک تخصیص دهنده منبع (resource allocator): مدیریت همه منابع تصمیم گیری مابین درخواست های متداخل (conflicting requests ) به منظور استفاده کارا (efficient) و منصفانه (fair) از منابع و همچینین یک کنترل کننده برنامه ها: کنترل اجرای برنامه ها به منظور جلوگیری از خطاها و استفاده های نابجا از کامپیوتر
در زمینه سیستمعامل بعد از اشاره به تاریخچه همه سیستم عامل های رایج دنیا به سراغ مباحث تحلیل سیستم عاملها و بررسی نقاط ضعف و قوت تمامی آنها خواهیم رفت و سرانجام مقایسه عملکرد و رقابت سیستم عاملها را مورد بررسی قرار خواهیم داد. پس از پایان مراحل فوق به سراغ مفاهیم معماری سیستم عامل خواهیم رفت. هدف پایانی در این سیر تکاملی رسیدن به جایی ست که بتوانیم خودمان سازنده یا توسعه دهنده یک سیستم عامل امن باشیم . در آینده توضیحات بیشتری درباره روند کلی وبلاگ در رابطه با سیستم عامل ذکر خواهد شد.
4. شبکه و امنیت
شبکه عبارتست از مجموعه یا سیستم درون پیوندی(interconnected) انسانی یا فیزیکی که دسترسی به قابلیت یا توانایی خاصی را در محدوده ای از مکان و زمان فراهم می کند و در حالت مطلوب محدودیت مکانی و زمانی ندارد.
سه هدف اصلی برقراری امنیت در حوزه فناوری اطلاعات به سه ضلعی (CIA Triad) مشهور است که در ادامه به بررسی و شرح هر یک از این وجه ها می پردازیم :
1.Confidentiality ( محرمانگی ) : یکی از اهداف امنیت محرمانه ماندن اطلاعات است بدین معنی که افراد معین و مشخص ای به اطلاعات و دیتاها و سرویس ها دسترسی داشته باشند
برخی روش ها و ابزارها برای پیاده سازی : استفاده از Perimission ها دسترسی روی فایل ها فولدرها و استفاده از Encryption رمز نگاری.
2. Integrity ( یکپارچگی ) : هدف بعدی از فراهم نمودن امنیت یکپارچگی اطلاعات و صحت دیتا است. بدین معنی که دیتا و یا فایل اجرایی ای که در سرور نگه داری می شود و یا دیتا ای که در شبکه در حال جابجایی است دستکاری نشود و تغییر غیر مجازی در آن صورت نگیرد .
3. Availability ( در دسترسی بودن ) :یکی دیگر از اهداف امنیت در دسترسی بودن اطلاعات و سرویس ها می باشد و بدین معنی می باشد که دیتا و سرویس مورد نظر در زمان مورد نظر به میزان مورد نظر و برای افراد مورد نیاز فراهم باشد و در عین حال دیتا صحیح و سالم باشد.