Софтуерният инженер е една от най-търсените и добре платени професии в света. Броят на заетите в тази област е приблизително 910 хиляди, което е почти два пъти повече от другите най-популярни компютърни професии[1]. Около 57% от софтуерните инженери разработват компютърни приложения, а останалите 43% се занимават със системен софтуер.

Софтуерният инженер отговаря за разработването, прилагането, изпитването и оценката на софтуер и софтуерни системи. Възможни проекти на един софтуерен инженер могат да бъдат: разработване на нови програми, повечето от които могат да подобрят безопасността и здравето на гражданите (например телемедицински софтуер се използва за прехвърляне на медицинска информация по Интернет за консултации и дори дистанционни медицински процедури или прегледи); разработване на софтуер за видеоигри, GPS системи, компютри и редица други[2]. Най-общоприетите понятия на софтуерното инженерство, както е инженерна дисциплина са посочени в Ръководството за Software Engineering Body of Knowledge (SWEBOK).

Общи сведения

редактиране

Преди средата на 60-те години, занимаващите се със софтуер се наричали себе си компютърни програмисти и софтуерен разработчик, независимо от тяхната истинска работа. Много хора предпочитат да наричат себе си софтуерни разработчици и програмист, защото е било широко прието какво точно означават тези термини. В същото време е имало спорове какво точно означава софтуерен инженер. Един от най-влиятелните компютърни специалисти E. W. Dijkstra пише в една от своите работи, че не е подходящо ползването на термина софтуерен инженер, защото е неподходяща аналогията: „Самото съществуване на термина е било основание за поредица от изключително плитки и подвеждащи аналогии, което още повече обърква проблема... Компютрите са толкова невероятни инструменти, че е напълно основателно да предположим, че повечето аналогии с други дисциплини са твърде несъстоятелни, за да бъдат от каквато и да е било полза, те са толкова плитки, че даже са объркващи“ [3].

Терминът програмист много често е бил използван като негативно нарицателно по отношение на тези които са без нужните инструменти, умения, образование или етика, да напишат качествен софтуер. В отговор на това много от програмиращите наричали себе си софтуерен инженер за да избегнат стигмата прикрепена към думата програмист. В много компании длъжността програмист или софтуерен разработчик са били променени на софтуерен инженер за голяма част от занимаващите се с програмиране.

Образование

редактиране

Около половината от всички практикуващи днес имат диплома в компютърни науки, информационни системи или информационни технологии. Малка, но все по нарастваща група от практикуващи имат дипломи в специалността софтуерно инженерство. През 1987 г. Imperial College London въвежда първият 3-годишен курс за софтуерно инженерство, с който се придобива бакалавърска степен признат във Великобритания и останалата част от света. През следващата година University of Sheffield започва подобна програма.

През 1996 г. Rochester Institute of Technology въвежда първата в САЩ, от която се излиза със степен бакалавър дисциплината софтуерно инженерство. Въпреки това тази програма не е продобила акредитацията на ABET до 2003 г.[4]. През 1997 г. PSG College of Technology in Coimbatore, India са първите които започват 5-годишна програма, от която се завърша със степен магистър по дисциплината софтуерен инженер.

От установяването на първите програми в университетите по света в дисциплината софтуерно инженерство много от учебните заведения въвеждат същата дисциплина в своите учебни програми. CCSE установи стандартното съдържание на учебната програма за дисциплината софтуерно инженерство. От 2004 г. Около 50 университета в САЩ предлагат дипломи в областта на софтуерното инженерство, за които студентите трябва да учат както компютърни науки и основни принципи и практики на инженерството.

Задължение и отговорности

редактиране

Софтуерните инженери притежават задълбочени знания по математика, които им помагат да пишат сложни алгоритми необходими за разработването на софтуер. Тези занимаващи се с разработването на приложения използват в своята работа голямо разнообразие от компютърни езици като например С++, C#, Java, JavaScript, HTML. Освен персонални компютри софтуерният инженер може да разработва приложения и за други компютъризирани устройства като смартфони, охранителни системи, видео игри и др.

Системните софтуерни инженери работят заедно със специалисти от други области като безнеспрофесионалисти, системни администратори и специалисти по мрежова сигурност за разработването на софтуер, който подпомага установяването, поддържането или разширението на компютърната инфраструктура на една компания. Примери за софтуер, който може да бъде разработен в тази сфера са операционни системи, мрежови протоколи, драйвери за устройства и др.

Специфични отговорности

редактиране
  • пълна разработка на приложение
  • разработване, писане и проверка на приложенията чрез различни компютърни езици
  • софтуерен анализ, анализ на изискванията, оценка на софтуера, анализ на системния риск, анализ на надеждността на софтуера
  • обектно ориентирано програмиране и анализ
  • софтуерно моделиране и симулации
  • разработване на front-end графичен интерфейс
  • тестване на софтуера и подсигуряване на качествен продукт
  • настройване, подобрения, балансиране, достъпност и автоматизация на софтуера
  • интегриране на софтуера със съществуващи системи
  • оценка и определяне на нови технологии за имплементация
  • планиране и управление на проекти
  • следене за съответствие с установените стандарти
  • имплементация за локализация и глобализация на софтуера[5]

Най-често срещани езици, системи и платформи

редактиране

C, C++, C#, Java, .NET, Python, BEA WebLogic, WebSphere, J2EE, JBoss, ADO, Perl, HTML, JavaScript, Web services, SOAP, XML, ASP, JSP, PHP, MySQL, SQL Server, Oracle, UNIX, Linux, Redhat Linux, STL, XSLT, OWL, AJAX, J2ME, J2SE, Sun Solaris

Вижте също

редактиране

Източници

редактиране
  1. Software Engineer, архив на оригинала от 2 септември 2013, https://web.archive.org/web/20130902005911/http://computer-careers-review.toptenreviews.com/software-engineer-review.html, посетен на 28 август 2013 
  2. Софтуерен инженер Архив на оригинала от 2013-12-16 в Wayback Machine., www.science-girl-thing.eu
  3. E.W.Dijkstra Archive: The pragmatic engineer versus the scientific designer, www.cs.utexas.edu
  4. "ABET Accredited Engineering Programs". 3 април 2007. Посетен на 3 април 2007.
  5. Software Engineer Job Description, www.technical-resumes.com