Zarys inżynierii oprogramowania - Outline of software engineering
Poniższy zarys stanowi przegląd i tematyczny przewodnik po inżynierii oprogramowania:
Inżynieria oprogramowania – zastosowanie systematycznego, zdyscyplinowanego, wymiernego podejścia do tworzenia, obsługi i utrzymania oprogramowania ; to jest zastosowanie inżynierii do oprogramowania .
System ACM Computing Classification to polihierarchiczna ontologia, która porządkuje tematy dziedziny i może być używana w semantycznych aplikacjach internetowych oraz jako de facto standardowy system klasyfikacji w tej dziedzinie. Główna sekcja „Oprogramowanie i jego inżynieria” zawiera zarys i ontologię inżynierii oprogramowania.
Technologie i praktyki
Wykwalifikowani inżynierowie oprogramowania wykorzystują technologie i praktyki z różnych dziedzin, aby poprawić swoją produktywność w tworzeniu oprogramowania i poprawić jakość dostarczanego produktu.
Aplikacje
Oprogramowanie inżynierowie budowy oprogramowania ( aplikacji , systemów operacyjnych , oprogramowania systemowego ), że ludzie używają.
Aplikacje wpływają na inżynierię oprogramowania, zmuszając programistów do rozwiązywania problemów na nowe sposoby. Na przykład oprogramowanie konsumenckie kładzie nacisk na niski koszt, oprogramowanie medyczne na wysoką jakość, a oprogramowanie do handlu internetowego kładzie nacisk na szybki rozwój.
- Oprogramowanie biznesowe
-
Analityka
- Eksploracja danych ściśle związana z bazą danych
- Systemy Wspomagania Decyzji
- Rezerwacje lotnicze
-
Bankowość
- Bankomaty automatyczne
- Sprawdź przetwarzanie
- Karty kredytowe
-
Handel
- Handel
- Aukcje (np. eBay)
- Aukcje odwrócone (zamówienia)
- Skanery kodów kreskowych
- Kompilatory
-
Komunikacja
- Komunikatory internetowe
- VOIP
- Kalendarze — planowanie i koordynacja
- Kontakt z menedżerami
-
Grafika komputerowa
- Animacja
- Efekty specjalne do wideo i filmu
- Redagowanie
- Przetwarzanie końcowe
- Kryptografia
- Bazy danych obsługują prawie każdą dziedzinę
-
Systemy wbudowane Zarówno inżynierowie oprogramowania, jak i inżynierowie tradycyjni piszą systemy kontroli oprogramowania dla produktów wbudowanych.
- Oprogramowanie motoryzacyjne
- Oprogramowanie awioniki
- Oprogramowanie do ogrzewania, wentylacji i klimatyzacji ( HVAC )
- Oprogramowanie urządzeń medycznych
- Telefonia
- Telemetria
- Inżynieria Wszystkie tradycyjne gałęzie inżynierii intensywnie korzystają z oprogramowania. Inżynierowie używają arkuszy kalkulacyjnych, częściej niż kiedykolwiek używali kalkulatorów. Inżynierowie używają niestandardowych narzędzi programowych do projektowania, analizowania i symulacji własnych projektów, takich jak mosty i linie energetyczne. Projekty te pod wieloma względami przypominają oprogramowanie, ponieważ prace istnieją jako dokumenty elektroniczne i przechodzą przez fazy analizy, projektowania , wdrażania i testowania. Narzędzia programowe dla inżynierów wykorzystują zasady informatyki; a także zasady rachunku różniczkowego, fizyki i chemii.
- Plik
- Finanse
- Gry
- Systemy informatyczne obsługują prawie każdą dziedzinę
- Logistyka
- Produkcja
- Muzyka
- Zarządzanie siecią
- Sieci i Internet
- Apartamenty biurowe
- System operacyjny
- Robotyka
-
Przetwarzanie sygnałów , kodowanie i interpretacja sygnałów
- Przetwarzanie obrazu , kodowanie i interpretacja informacji wizualnych
- Przetwarzanie mowy
- Rozpoznawanie tekstu
- Rozpoznawanie pisma odręcznego
-
Symulacja , obsługuje prawie każdą dziedzinę.
- Inżynieria Symulacja oprogramowania może być tańsza w budowie i bardziej elastyczna w zmianach niż fizyczny model inżynierski .
- Nauki
- Nauki
- Kontrola ruchu
- Szkolenie
- Wizualizacja , obsługuje prawie każde pole
- Głosowanie
- Sieć światowa
Tematy inżynierii oprogramowania
Wiele technologii i praktyk ogranicza się (w większości) do inżynierii oprogramowania, choć wiele z nich jest dzielonych z informatyką .
Paradygmat programowania oparty na technologii języka programowania
- Programowanie obiektowe
- Programowanie aspektowe
- Rozkład funkcjonalny
- Programowanie strukturalne
- Programowanie oparte na regułach
Bazy danych
Graficzne interfejsy użytkownika
- Zestaw narzędzi GTK+ GIMP
- wxWidgets
- Ostateczny++
- Zestaw narzędzi Qt
- FLTK
Narzędzia programistyczne
-
Zarządzanie konfiguracją i zarządzanie kodem źródłowym
- CVS
- Obalenie
- Gita
- Bystry
- RCS
- Łuk GNU
- Synchronizator LibreSource
- Team Foundation Server
- Usługi zespołu Visual Studio
- Narzędzia do budowania
- Redakcja
- Narzędzia do tworzenia parserów
- Narzędzia do statycznej analizy kodu
Biblioteki
Języki projektowania
Wzorce, udokumentuj wiele popularnych technik programowania i zarządzania projektami
Procesy i metodologie
- Zręczny
- Waga ciężka
- Czysty pokój
- ISO/IEC 12207 — procesy cyklu życia oprogramowania
- ISO 9000 i ISO 9001
- Modele procesów
- Metamodele
Platformy
Platforma łączy sprzęt komputerowy i system operacyjny. Ponieważ platformy stają się coraz bardziej wydajne i mniej kosztowne, aplikacje i narzędzia stają się coraz bardziej dostępne.
- NAPAR
- Cray superkomputery
- Minikomputery DEC
- Komputery mainframe IBM
- Komputery z systemem Linux
- Classic Mac OS i MacOS komputery
- Microsoft .NET
- Palm PDA
- Sun Microsystems Solaris
- Komputery z systemem Windows ( Wintel )
- System operacyjny Symbian
Inne praktyki
- Komunikacja
- Inżynieria metod
- Programowanie par
- Inżynieria wydajności
- Wydajność programowania
- Refaktoryzacja
- Inspekcje oprogramowania / przeglądy kodu
- Ponowne wykorzystanie oprogramowania
- Integracja systemów
- Praca w zespole
Inne narzędzia
Tematy informatyki
Wykwalifikowani inżynierowie oprogramowania znają się na informatyce, w tym o tym, co jest możliwe, a co niemożliwe, co jest łatwe i trudne dla oprogramowania.
- Algorytmy , dobrze zdefiniowane metody rozwiązywania konkretnych problemów.
- Teoria kompilatora
- Struktury danych , dobrze zdefiniowane metody przechowywania i wyszukiwania danych.
- Obliczalność , niektórych problemów nie da się w ogóle rozwiązać
- Złożoność , niektóre problemy są w zasadzie rozwiązywalne, ale nierozwiązywalne w praktyce
- Metody formalne
- Systemy adaptacyjne
Tematy matematyczne
Matematyka dyskretna jest kluczowym fundamentem inżynierii oprogramowania .
- Reprezentacja liczb
- Zestaw (informatyka)
- Torby
- Wykresy
- Logika
- Wprowadzenie
- Kombinatoryka
Inne
Fazy cyklu życia
-
Faza cyklu życia rozwoju
- Zbieranie / analiza wymagań
- Architektura oprogramowania
- Programowanie komputerowe
- Testowanie , wykrywa błędy
- Zapewnienie jakości , zapewnia zgodność z procesem.
- Produkt fazy cyklu życia i cyklu życia projektu
- Etap rozwoju wydania , pod koniec cyklu wydawniczego
- Cykl rozwoju oprogramowania
Artykuły
W przypadku wielu projektów SE należy opracować rezultaty. Inżynierowie oprogramowania rzadko sami tworzą wszystkie te produkty. Zwykle współpracują z pisarzami, trenerami, instalatorami, marketerami, osobami wsparcia technicznego i innymi, którzy tworzą wiele z tych produktów.
- Oprogramowanie użytkowe — oprogramowanie
- Baza danych — schematy i dane.
- Dokumentacja , online i/lub drukowana, FAQ , Readme , informacje o wydaniu , Pomoc , dla każdej roli
- Polityka administracyjna i konserwacyjna , co powinno być archiwizowane, sprawdzane, konfigurowane, ...
- Instalatorzy
- Migracja
- Aktualizacja z poprzednich instalacji
- Upgrade z instalacji konkurencji
-
Materiały szkoleniowe dla każdej roli
- Użytkownik
- Administrator
- Menedżer
- Kupujący
- Pomoc Informacje o grupach wsparcia komputer.
-
Marketingu i sprzedaży materiałów
- White papers , wyjaśnij technologie stosowane w aplikacjach
Role biznesowe
-
Operacje
- Użytkownicy
- Administratorzy
- Menedżerowie
- Kupujący
- Rozwój
-
Biznes
- Doradztwo — dostosowywanie i instalacja aplikacji
- Obroty
- Marketing
- Prawne — umowy, prawa własności intelektualnej
- Prywatność i inżynieria prywatności
- Wsparcie — pomaganie klientom w korzystaniu z aplikacji
- Personel — zatrudnianie i szkolenie wykwalifikowanego personelu
- Finanse — finansowanie nowego rozwoju
- Akademia
Tematy zarządzania
-
Przywództwo
- Coaching
- Komunikacja
- Słuchający
- Motywacja
- Wizja , SE są w tym dobrzy
- Przykład , każdy najlepiej podąża za dobrym przykładem
-
Zarządzanie zasobami ludzkimi
- Zatrudnianie , pozyskiwanie ludzi do organizacji
- Szkolenie
- Ocena
- Zarządzanie projektami
- Zarządzanie procesem
Tematy biznesowe
- Programy jakości
Zawód inżyniera oprogramowania
- Demografia inżynierii oprogramowania
- Ekonomia inżynierii oprogramowania
- CCSE
- Historia inżynierii oprogramowania
- Profesjonalizm inżynierii oprogramowania
- Prawny
Historia inżynierii oprogramowania
Historia inżynierii oprogramowania
Pionierzy
Wiele osób wniosło istotny wkład w technologie, praktyki lub aplikacje SE.
- John Backus : Fortran , pierwszy kompilator optymalizujący, BNF
- Victor Basili : Fabryka doświadczeń.
- FL Bauer : Zasada stosu , spopularyzował termin Inżynieria Oprogramowania
- Kent Beck : Refaktoryzacja , Extreme Programming , programowanie para , Test-Driven Development .
- Tim Berners-Lee : Sieć WWW
- Barry Boehm : ekonomia gospodarki społecznej , COCOMO , model spiralny .
- Grady Booch : Projektowanie obiektowe , UML .
- Fred Brooks : System Zarządzany 360 i OS 360 . Napisał Mityczny Człowiek-Miesiąc i Bez Srebrnego Pocisku .
- Larry Constantine : Projekt strukturalny , sprzężenie , spójność
- Edsger Dijkstra : Napisał uwagi na temat programowania strukturalnego , dyscypliny programowania i instrukcji Przejdź do uważanych za szkodliwe , algorytmów , metod formalnych , pedagogiki .
- Michael Fagan : Inspekcja oprogramowania .
- Tom Gilb : metryki oprogramowania , inspekcja oprogramowania , Evolutionary Delivery ( "Evo") .
- Adele Goldstine : Napisała podręcznik operatora dla ENIAC , pierwszego elektronicznego komputera cyfrowego, i wyszkoliła kilka pierwszych ludzkich komputerów
- Lois Haibt : FORTRAN , napisał pierwszy parser
- Margaret Hamilton : Ukuła termin „inżynieria oprogramowania”, opracowała Universal Systems Language
- Mary Jean Harrold : Testy regresji , lokalizacja uszkodzeń
- Grace Hopper : Pierwszy kompilator (Mark 1), COBOL , Nanosekundy .
- Watts Humphrey : Model dojrzałości zdolności , osobisty proces tworzenia oprogramowania , pracownik Instytutu Inżynierii Oprogramowania .
- Jean Ichbiah : Ada
- Michael A. Jackson : Jackson programowania strukturalnego , Jackson Rozwój systemu
- Bill Joy : Berkeley Unix , vi , Java .
- Alan Kay : Smalltalk
- Brian Kernighan : C i Unix.
- Donald Knuth : Napisał sztukę programowania komputerowego , TeX , algorytmy , programowanie piśmienne
- Nancy Leveson : Bezpieczeństwo systemu
- Bertrand Meyer : Design by Contract , język programowania Eiffel .
- Peter G. Neumann : PRZEGLĄD RYZYKA , ACM Sigsoft.
- David Parnas : Projektowanie modułów, odpowiedzialność społeczna, profesjonalizm.
- David Pearson, informatyk : Opracował system inżynierii oprogramowania ICL CADES .
- Jef Raskin : Opracował oryginalny graficzny interfejs użytkownika Macintosh , autor The Humane Interface
- Dennis Ritchie : C i Unix .
- Winston W. Royce : Model wodospadu .
- Mary Shaw : Architektura oprogramowania .
- Richard Stallman : Założyciel Fundacji Wolnego Oprogramowania
- Linus Torvalds : Jądro Linuksa , wolne oprogramowanie / rozwój open source .
- Will Tracz : Ponowne użycie, Uwagi dotyczące inżynierii oprogramowania ACM.
- Gerald Weinberg : napisał Psychologię programowania komputerowego .
- Elaine Weyuker : Testowanie oprogramowania
- Skrzydło Jeannette : Specyfikacje formalne .
- Ed Yourdon : Programowanie strukturalne , napisał The Decline and Fall of the American Programmer .
Zobacz też
Wybitne publikacje
- About Face: The Essentials of User Interface Design autorstwa Alana Coopera , o projektowaniu interfejsu użytkownika. ISBN 0-7645-2641-3
- Model dojrzałości zdolności autorstwa Wattsa Humphreya . Napisany dla Instytutu Inżynierii Oprogramowania , kładąc nacisk na zarządzanie i proces. (Patrz Zarządzanie procesem oprogramowania ISBN 0-201-18095-2 )
- The Cathedral and the Bazaar autorstwa Erica Raymonda o rozwoju open source.
- Schyłek i upadek amerykańskiego Programmer przez Eda Yourdon przepowiada koniec rozwoju oprogramowania w USA ISBN 0-13-191958-X
- Wzorce projektowe autorstwa Ericha Gammy , Richarda Helma , Ralpha Johnsona i Johna Vlissidesa . ISBN 0-201-63361-2
- Programowanie ekstremalne wyjaśnione przez Kent Beck ISBN 0-321-27865-8
- „ Przejdź do oświadczenia uważanego za szkodliwe ” autorstwa Edsgera Dijkstry .
- Internet, innowacje i otwarte oprogramowanie: aktorzy w sieci — artykuł w pierwszy poniedziałek autorstwa Ilkki Tuomi (2000) źródło
- Mityczne Man-Month przez Fred Brooks , o zarządzaniu projektami. ISBN 0-201-83595-9
- Analiza i projektowanie obiektowe autorstwa Grady'ego Boocha . ISBN 0-8053-5340-2
- Peopleware przez Tom DeMarco i Tim Lister. ISBN 0-932633-43-9
- Pragmatyczne kontra inżynier projektant naukowej przez EW Dijkstra [1]
- Podstawy inżynierii oprogramowania do zarządzania przez Toma Gilb o procesach ewolucyjnych. ISBN 0-201-19246-2
- Psychologia Computer Programming przez Geralda Weinberga . Napisany jako niezależny konsultant, częściowo o latach spędzonych w IBM. ISBN 0-932633-42-0
- Refaktoryzacja: poprawa projektu istniejącego kodu autorstwa Martina Fowlera , Kenta Becka , Johna Branta, Williama Opdyke i Dona Robertsa. ISBN 0-201-48567-2
- Programista pragmatyczny: od czeladnika do mistrza autorstwa Andrew Hunta i Davida Thomasa . ISBN 0-201-61622-X
- Ciało wiedzy inżynierii oprogramowania (SWEBOK) ISO/IEC TR 19759
Zobacz też:
Pola pokrewne
- Informatyka
- Inżynieria informacyjna
- Technologia informacyjna
- Inżynieria tradycyjna
- Inżynieria oprogramowania
- Sztuka i nauka
- Oprogramowanie
- Programowanie
- Inżynieria systemowa
Zobacz też
- Indeks artykułów inżynierii oprogramowania
- Inżynieria oprogramowania oparta na wyszukiwaniu
- SWEBOK Inżynieria oprogramowania zasób wiedzy
- Program CCSE Computing dla inżynierii oprogramowania
- Etymologia terminów komputerowych , geneza terminów komputerowych
- Złożoność lub skalowanie
- Zespół drugiego układu
- optymalizacja
- Depozyt kodu źródłowego
- Problem interakcji funkcji
- Certyfikacja (inżynieria oprogramowania)
- Katastrofy inżynieryjne#Awaria z powodu oprogramowania
- Zarys rozwoju oprogramowania
Bibliografia
Linki zewnętrzne
- System klasyfikacji obliczeniowej ACM
- Przewodnik po wiedzy z zakresu inżynierii oprogramowania (SWEBOK)
- Profesjonalna organizacja
- Brytyjskie Towarzystwo Komputerowe
- Stowarzyszenie Maszyn Komputerowych
- Stowarzyszenie Komputerowe IEEE
- Profesjonalizm
- Edukacja
- Normy
- Organizacje rządowe
- Zręczny
- Organizacja promująca rozwój oprogramowania Agile
- Rozwój oparty na testach
- Ekstremalne programowanie
- Inne organizacje
- Dane demograficzne
- Ankiety
- Inne