Inżynierowie oprogramowania i programiści komputerowi oba tworzą aplikacje potrzebne komputerom. Różnica między tymi dwoma stanowiskami polega na odpowiedzialności i podejściu do pracy. Inżynierowie oprogramowania stosują dobrze zdefiniowane zasady i procedury naukowe, aby dostarczyć wydajne i niezawodne oprogramowanie.
Inżynieria oprogramowania
Inżynieria oprogramowania traktuje podejście do tworzenia oprogramowania jako proces formalny podobny do tego, który występuje w tradycyjnej inżynierii. Inżynierowie oprogramowania zaczynają od analizy potrzeb użytkowników. Projektują oprogramowanie, wdrażają go, testują pod kątem jakości i utrzymują. Uczą programistów komputerowych, jak napisać potrzebny kod. Inżynierowie oprogramowania mogą, ale nie muszą napisz dowolny kod sami, ale potrzebują silnych umiejętności programistycznych do komunikowania się z programistami i często biegle posługują się kilkoma językami programowania.
Inżynierowie oprogramowania projektować i rozwijać gry komputerowe
, aplikacje biznesowe, systemy kontroli sieci i systemy operacyjne oprogramowania. Są ekspertami w teorii oprogramowania komputerowego i ograniczeń sprzętu, dla którego projektują.Inżynieria oprogramowania wspomagana komputerowo
Cały proces projektowania oprogramowania musi być formalnie zarządzany na długo przed napisaniem pierwszego wiersza kodu. Inżynierowie oprogramowania tworzą obszerne dokumenty projektowe za pomocą wspomaganych komputerowo narzędzi inżynierii oprogramowania. Inżynier oprogramowania przekształca następnie dokumenty projektowe w dokumenty specyfikacji projektowej, które służą do projektowania kodu. Proces jest zorganizowany i wydajny. Nie trwa programowanie poza mankietem.
Papierkowa robota
Jedną z wyróżniających cech inżynierii oprogramowania jest wytwarzany przez nią ślad papieru. Projekty są podpisywane przez kierowników i władze techniczne, a rolą zapewnienia jakości jest sprawdzanie ścieżki papieru. Wielu inżynierów oprogramowania przyznaje, że ich praca to 70% papierkowej roboty i 30% kodu. Jest to kosztowny, ale odpowiedzialny sposób pisania oprogramowania, co jest jednym z powodów, dla których awionika we współczesnych samolotach jest tak droga.
Wyzwania inżynierii oprogramowania
Producenci nie mogą budować złożonych systemów o krytycznym znaczeniu dla życia, takich jak samoloty, systemy sterowania reaktorami jądrowymi i systemy medyczne, i oczekują, że oprogramowanie zostanie połączone. Wymagają dokładnego zarządzania całym procesem przez inżynierów oprogramowania, aby można było oszacować budżety, zatrudnić pracowników i zminimalizować ryzyko niepowodzenia lub kosztownych błędów.
W obszarach krytycznych dla bezpieczeństwa, takich jak lotnictwo, przestrzeń kosmiczna, elektrownie jądrowe, medycyna, wykrywanie pożaru systemy i przejażdżki kolejką górską, koszt awarii oprogramowania może być ogromny, ponieważ życie jest na ryzyko. Zdolność inżyniera oprogramowania do przewidywania problemów i eliminowania ich przed ich wystąpieniem ma kluczowe znaczenie.
Certyfikacja i edukacja
W niektórych częściach świata iw większości stanów USA nie można nazywać się inżynierem oprogramowania bez formalnego wykształcenia lub certyfikacji. Kilka dużych firm programistycznych, w tym Microsoft, Oracle i Red Hat, oferuje kursy w kierunku certyfikacji. Wiele szkół wyższych oferuje wyższe wykształcenie inżynierskie. Początkujący inżynierowie oprogramowania mogą specjalizować się w informatyce, inżynierii oprogramowania, matematyce lub komputerowych systemach informatycznych.
Programiści komputerowi
Programiści piszą kod zgodnie ze specyfikacjami podanymi im przez inżynierów oprogramowania. Są ekspertami w najważniejszych językach programowania komputerowego. Chociaż zwykle nie są zaangażowani we wczesne etapy projektowania, mogą być zaangażowani w testowanie, modyfikowanie, aktualizację i naprawę kodu. Piszą kod w co najmniej jednym z dostępnych języków programowania, w tym:
- SQL
- JavaScript
- Jawa
- DO#
- Pyton
- PHP
- Ruby on Rails
- Szybki
- Cel C
- PHP
Inżynierowie vs. Programiści
- Inżynieria oprogramowania jest działaniem zespołowym. Programowanie jest przede wszystkim działaniem samotnym.
- Inżynier oprogramowania jest zaangażowany w cały proces. Programowanie jest jednym z aspektów rozwoju oprogramowania.
- Inżynier oprogramowania pracuje nad komponentami z innymi inżynierami, aby zbudować system. Programista pisze kompletny program.