Czego inżynierowie oprogramowania układowego mogą się nauczyć od inżynierów oprogramowania? [zamknięte]

Sądząc po mojej wiedzy z historii narzędzi inżynierii oprogramowania, praktyk itp. Konsekwentnie pozostaje w tyle za dziedziną inżynierii oprogramowania o kilka lat. Na przykład, o ile mogę powiedzieć, nadal istnieje spora ilość dyskusji w świecie firmware, czy C++ jest rzeczywiście warto używać dla naszych aplikacji, a niektóre kompilatory C++ są zauważalnie nieobecne (microchip?!?). Wyobrażam sobie, że w dużej mierze wynika to z różnic w wymaganiach pomiędzy firmware i oprogramowanie. Ponownie, sądząc z historii, wydaje się, że to tylko kwestia czasu, zanim odpowiednio sprawdzone narzędzia i techniki wprowadzą go do świata firmware.

Jakie metody, narzędzia, najlepsze praktyki itp., z których regularnie korzystają współcześni inżynierowie oprogramowania, mogą wykorzystać również inżynierowie oprogramowania układowego do udoskonalania swojego rzemiosła?

Konkretnie myślę nad następującymi osiami (ale nie pozwól, aby cię ograniczały):

  • poprawa czystości/konserwacji kodu
  • zmniejszenie defektu wprowadzenie i poprawa wykrywania
  • poprawa dokumentacji
  • zarządzanie wymaganiami
  • poprawa możliwości ponownego użycia

Chciałbym również zobaczyć embedded shops odpowiedzi lub komentarze na odpowiedzi, aby dostarczyć informacji zwrotnej na temat teoretycznej wykonalności lub, jeszcze lepiej, osobistych doświadczeń.

UPDATE
Szczególnie interesuje mnie to, żeby trochę wyprzedzić zakręt. Więc stosunkowo nowe rzeczy, które zostały sprawdzone dość dobrze (działa dobrze dla większość ludzi), jak C++, TDD itp. Czego używasz cały czas i miłości?

UPDATE 2
Dostaję wiele dobrych ogólnych porad programistycznych w odpowiedziach do tej pory, co jest świetne, ale naprawdę szukam bardziej niekonwencjonalnych podejść, które okazały się skuteczne dla ludzi. Staram się drażnić zwinnych praktyków, Tdderów i resztę z Was, którzy próbowali rzeczy i widzieli, jak się to opłaca lub zawodzi strasznie. Jako inżynier oprogramowania zostało narzędzie lub praktyki, które przyjąłeś w ciągu ostatnich kilku lat, które miały wyjątkowo pozytywny lub negatywny wpływ?

Author: Gabe, 2009-07-24

9 answers

Czego inżynierowie oprogramowania układowego mogą się nauczyć od inżynierów oprogramowania? Mnóstwo!

Jestem zaskoczony tym, jak podobny proces tworzenia firmware jest praktykowany dzisiaj, jak to było 25 lat temu, kiedy po raz pierwszy zaczęliśmy używać C do tworzenia wbudowanego oprogramowania. C było dużym krokiem naprzód od asemblera, ale jest wiele innych wniosków, które inżynierowie oprogramowania układowego mogą i powinni wyciągnąć. Tak, niektóre narzędzia są lepsze, ale wiele praktyk utkwiło w latach 70. i 80.]}

Embedded software development does dodaj kilka dodatkowych wyzwań do wyzwań, przed którymi stoją programiści nie wbudowani. Ale wszystkie zasady i praktyki, z których korzystają wykwalifikowani programiści, mają zastosowanie do rozwoju wbudowanego. BTW: nie tylko twórcy oprogramowania wbudowanego nie są w stanie korzystać z tych najnowocześniejszych praktyk, ale także wielu programistów nie wbudowanych.

Ludzie, których znam i poznałem robiąc firmware są w zasadzie bardzo wykwalifikowaną grupą, pracującą nad rozwiązywaniem trudnych problemów. Niestety, z jakiegokolwiek powodu, wielu nie nadąża za rozwojem w świecie oprogramowania. Myślę, że ma to związek z wyimaginowaną barierą wzniesioną przez inżynierów oprogramowania.

Wbudowani i nie wbudowani Programiści mówią różnymi językami, ale rozwiązują podobne problemy. Uniezależnienie osadzonego kodu od urządzenia sprzętowego jest zasadniczo tym samym, co uniezależnienie kodu aplikacji od interfejsu użytkownika lub bazy danych. Podstawowe zasady są takie same.

Oto kilka rzeczy, na które moim zdaniem Programiści embedded powinni zwracać większą uwagę. Niektóre z tych zasad i praktyk można stosować od razu po wyjęciu z pudełka, podczas gdy inne mogą wymagać trochę dostosowania, aby poradzić sobie z osadzonymi wyzwaniami. Jeśli chcesz zastąpić słowo firmware dla oprogramowania poniżej, śmiało, naprawdę nie rozróżniam tych dwóch.

Zarządzanie Zależnościami

Zależności między modułami muszą być zarządzane. Zależność od oprogramowania do sprzętu jest szczególnym przypadkiem, który musi być aktywnie zarządzany przez twórcę oprogramowania wbudowanego. Jeśli nie zarządzasz zależnością, to ona będzie zarządzać Tobą.

W praktyce oznacza to, że tylko ograniczony podzbiór modułów oprogramowania powinien posiadać wiedzę o podstawowym sprzęcie (i systemie operacyjnym). Wraz z rozwojem sprzętu i zawsze tak się dzieje, inwestycja w niezależny od sprzętu kod może zostać zachowana. Zobacz moje ah ha!Moment.

Robert Martin napisał obszernie o solidnej konstrukcji Zasady. Programiści Embedded powinni je poznać i zastosować do swoich projektów.

  • S-Zasada Odpowiedzialności Jednostkowej
  • O-Zasady Otwarte Zamknięte
  • Zasada Substytucji L-Liskowa
  • I-Zasada Segregacji Interfejsu
  • D-Zasada Inwersji Zależności

Te zasady prowadzą do projektów, które lepiej wytrzymają próbę czasu. Solidne zasady zachęcają do tworzenia spójnych i niezależnych modułów. Są to bazują na obiektowych ideach, ale mogą być stosowane do C. musimy zatrzymać funkcję-call data-structure free-for-all, która jest zbyt powszechna w osadzonym kodzie C.

Języki C++ i oo

Dlaczego nie można używać C++ i OO? Ponieważ są zbyt wolne lub zbyt duże. Jakie są fakty? C++ to duży i tajemniczy język, ale nie musisz go używać. Spójrz na dlaczego nadal używasz C?

C++ nadrabia niektóre problemy, których C nie bardzo pomocna:

  • enkapsulacja i ukrywanie informacji
  • Programowanie interfejsów
  • Obiekty zastępowalne
  • inicjalizacja Ad-hoc

C++ może być efektywnie używany do programowania wbudowanego. Cóż, potrzebujesz kompilatora C++ i headroom. Może to nie jest możliwe w Twoim świecie, a może jest to koszt prowadzenia biznesu. Zacznij od nauki:

  • klasy - są to struktury Z FUNKCJAMI member oraz dane członków.
  • konstruktory-te umożliwiają prawidłową inicjalizację przez cały czas.
  • destruktory - jeśli nauczysz się konstruktorów, musisz również nauczyć się destruktorów, aby utrzymać równowagę we wszechświecie.
  • dziedziczenie-używaj go głównie do definiowania interfejsów, które zawierają tylko czyste funkcje wirtualne. Interfejsy zapewniają ważne przerwy w zależnościach i punkty elastyczności. Są one zazwyczaj niesłusznie zniechęcane do osadzania się. Nie powinno być żadnej tajemnicy lub tutaj uprzedzenie; funkcje wirtualne są wskaźnikami funkcji pod maską. Alternatywą dla efektywnego wykorzystania interfejsów jest złożona logika warunkowa, której wbudowane programy C mają zwykle za dużo.

Gdyby Programiści embedded korzystali z tych części C++, mogliby zbudować bardziej elastyczny projekt i nie ponosić wysokich kosztów.

Test Driven Development]}

To może być największy przełom w grze. Cieszę się, że inne posty o tym wspominają. TDD może pomóc w zapobieganiu wady teraz i w przyszłości. Aby zobaczyć, dlaczego TDD może pomóc, spójrz na fizykę TDD.

Embedded stwarza pewne unikalne wyzwania dla TDD. Na przykład, TDD wymaga bardzo szybkiego przyrostowego cyklu edycji/kompilacji/łącza / uruchomienia. Dla wielu wbudowanych programistów oznacza to ostrożne zarządzanie zależnościami i uruchomienie testu jednostkowego najpierw na obiekcie docelowym. Zobacz więcej o dostosowywanie TDD dla wbudowanego .

Z TDD tworzysz kod, który jest dokładnie sprawdzone. Kompleksowy Automatyczny zakres testów działa jak siatka bezpieczeństwa, umożliwiając bezpieczną zmianę kodu w miarę zmiany wymagań. Niezamierzone konsekwencje są natychmiast odkrywane.

Ponadto, mając testy, które dostajesz prawie za darmo , możesz bez obaw refaktorować swój kod...

Ciągła Refaktoryzacja

Kod jest pisany raz, ale czytany wiele razy. Następnie jest zmieniany i poprawiany, co prowadzi do projektów, które z czasem ulegają degradacji. Jeśli deweloperzy nie ciągłe refaktorowanie, aby utrzymać kod w czystości, zamienia się w bałagan. Może niektórzy z was mają do czynienia z tym bałaganem. Zautomatyzowane testy TDD umożliwiają refaktoryzację o niskich kosztach i niskim ryzyku.

Ciągła Integracja

Zautomatyzuj proces budowania. Sprawdźcie każdy obszar roboczy. Jest to wyzwanie z heterogenicznymi zestawami narzędzi często potrzebnymi do wprowadzenia skompilowanego kodu do celu, ale nadal jest to właściwy cel.

Im szybciej wbudowany programista wie, że a zmiana jest w jakiś sposób niezgodna z jakąś inną pracą, im szybciej można ją naprawić i tym mniej czasu będzie spędzać na bolesnych połączeniach.

Dostawa Przyrostowa

Znajdź sposoby na podzielenie pracy, aby uniknąć dużych bolesnych integracji, a pomysły projektowe można wypróbować wcześnie. Unikaj rozszczepiania wzdłuż linii architektonicznych, skup się na dostarczaniu widocznych funkcjonalności.

Współpraca

Embedded developers! wyjdź stamtąd i pracuj razem. Jak czy poprawisz się, gdy widzisz tylko własny kod? Jak możesz się poprawić, skoro jesteś ekspertem od technologii XXX, opanowałeś ją i nie masz możliwości pracy w różnych obszarach.

Jest wiele do nauczenia się tam. Czy jesteś odpowiedzialny za to, że jesteś wszystkim, co możesz

 20
Author: James Grenning,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-28 21:58:46

Pracowałem zarówno jako inżynier oprogramowania wbudowanego, jak i jako programista. Będąc w obu światach, nauczyłem się, że bez względu na to, jak mało zasobów ma Twój system i jaki język programujesz, istnieje wiele rzeczy, które mogą ułatwić Ci życie.

Pierwszą rzeczą są narzędzia, których używasz. W oprogramowaniu wbudowanym masz do czynienia tylko z kompilatorem/linkerem przez większość czasu. Jest ich więcej. Narzędzia Diff, wyrażenia regularne język skryptowy, narzędzia do dokumentacji oszczędzają dużo czasu.

Kolejną rzeczą jest jakość kodu. Trzeba przestrzegać konwencji stylów, przechodzić regularne cykle refaktoryzacji i ogólnie pamiętać, że czytanie kodu odbywa się częściej niż pisanie kodu i naprawdę opłaca się mieć bardziej czytelny kod.

Czasami w oprogramowaniu wbudowanym brakuje nam fazy projektowania. Projekty Embedded zazwyczaj nie są tak duże jak desktopowe / serwerowe, ale to nie jest usprawiedliwienie dla nie robienia WŁAŚCIWEGO design.

Oprogramowanie musi być testowane samodzielnie, a nie tylko jako część urządzenia. To naprawdę oszczędza dużo czasu, aby zbudować symulator oprogramowania systemu, tylko do testowania, że oprogramowanie spełnia wymagane specyfikacje. Jest to znacznie droższe, gdy całość, sprzęt i oprogramowanie są gotowe.

 14
Author: kgiannakakis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-24 12:10:15
  • Kontrola Źródła
  • testy jednostkowe (TDD)
  • Continuous integration (or nightly builds)
  • śledzenie błędów

Inżynierowie oprogramowania, z którymi pracowałem, nie robią żadnego z nich.

Testy jednostkowe mogą nie mieć zastosowania do wszystkich rodzajów oprogramowania układowego. Wyobrażam sobie, że trudniej jest przetestować coś, gdy działa na fizycznym sprzęcie. Zależy, czy masz dostępne emulatory.

 6
Author: Simon P Stevens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-24 11:56:58

Zakładając, że przez "inżynierów oprogramowania" masz na myśli "inżynierów oprogramowania wbudowanego", moja odpowiedź brzmiałaby: oni są inżynierami oprogramowania, więc powinni - tam, gdzie to możliwe - robić te same rzeczy, co każdy inny inżynier oprogramowania.

Oczywiście pisanie oprogramowania dla systemów wbudowanych wymaga różnych umiejętności, takich jak szczegółowa znajomość procesora docelowego i umiejętność radzenia sobie z ograniczonymi zasobami (w porównaniu z komputerem PC lub podobnym).

Jak wspomnieli inni, testowanie jednostkowe jest skomplikowane przez fakt, że może to być wykonane na symulatorze działającym na komputerze, który choć jest bardzo przydatny, nigdy nie może zastąpić dokładnego testowania rzeczywistego systemu - zwłaszcza biorąc pod uwagę asynchroniczny charakter zdarzeń, którym podlega system wbudowany.

Jednym z moich obaw, dlaczego oprogramowanie wbudowane może wydawać się "za krzywą", jest to, że inżynieria oprogramowania-a w związku z tym oprogramowanie wbudowane-nie jest ogólnie nauczane w żadnej głębi na temat dyplom inżyniera elektronika. Biorąc pod uwagę, jak wiele z kariery inżyniera elektronicznego może być spędzone kodowanie w dzisiejszych czasach, wydaje się to ogromnym niedopatrzeniem.

Na szczęście są tacy, którzy próbują to nadrobić. Polecam lekturę artykułów Jacka Ganssle ' a (na jego stronie internetowej, oraz w jego regularnej rubryce na embedded.com).

DODATKOWO, MISRA-C został stworzony jakiś czas temu, aby uniknąć typowych źródeł błędów w C oprogramowanie dla przemysłu motoryzacyjnego, a jego od tego czasu został przyjęty przez wielu w świecie oprogramowania wbudowanego. Dodaj kontroler analizy statycznej, taki jak PC-Lint , a już w jakiś sposób ulepszyłeś swój kod.

Dostawcy narzędzi również nie pomogli, w wielu przypadkach tworząc własne IDE, kiedy być może lepiej byłoby skoncentrować się na kompilatorze i debugerze, a pozostawić IDE innym, np. Eclipse.

Nawiasem mówiąc, więcej na temat nieużywania C++ w systemy wbudowane zobacz to pytanie .

Wreszcie: ponieważ inżynierowie oprogramowania układowego są inżynierami oprogramowania, mamy do czynienia z wieloma tymi samymi problemami, wyzwaniami i problemami, więc powinniśmy korzystać z tych samych zasobów; w końcu jest ich mnóstwo, a ty czytasz jedną z nich!

Niektóre z innych stron internetowych, które często zawierają:

EDIT: w odpowiedzi na komentarz Gabe 'a:" jakie narzędzia powinniśmy dostosować?", kilka przykładów nasuwa się na myśl:

IDE niezależne od kompilatora: Istnieje mnóstwo IDE dla C, ale z tego co wiem, nieliczne z nich mogą być wykorzystane do ich nielicznego potencjału bez kompatybilnego kompilatora. Chciałbym, aby zarówno Programiści kompilatora, jak i Programiści IDE zbierali się tak, aby idealnie, każdy kompilator mógł być używany z dowolnym IDE.

W przypadku braku kompatybilnego kompilatora, chciałbym móc używać PC-Lint (lub jego odpowiednika) jako mojego "oficjalnego" kompilatora z wybranym przeze mnie IDE.

Symulacja i modelowanie: narzędzia symulacyjne, takie jak Simulink umożliwiają symulację, modelowanie i testowanie oprogramowania dla komputerów PC i niektórych procesorów wbudowanych wyższej klasy. Takie narzędzia byłyby równie przydatne dla mniejszych chipów, więc miło byłoby zobaczyć je rozszerzone na ten obszar rynku.

PS: kolumna Jacka Ganssle ' a w tym tygodniu nosi tytuł: " co wyróżnia embedded?", i tak jest (luźno) związane z powyższym pytaniem.

 5
Author: Steve Melnikoff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:30:00

Nie wiem, jaki stopień oprogramowania jest uważany za oprogramowanie układowe( bios, sterownik lub narzędzia), ale standardowa skarga, którą słyszę, jest to, że interfejs jest niestandardowy. Uświadomienie sobie, że interfejs ma znaczenie i że powinien być zgodny z niektórymi standardami lub tradycją byłoby dobrą rzeczą.

Jeśli chodzi o C++, to jest zrozumiałe, aby wahać się, aby dostać się do niego, ponieważ jest dużo narzutu w porównaniu do C. C jest prawie jak język asemblacji z libc, podczas gdy w C++ nawet proste wywołanie funkcji może być wirtualne. Implementacja pełnego środowiska wykonawczego C++ nie może być tak łatwa, biorąc pod uwagę złożoność języka.

Jest zbyt wiele rzeczy, aby wymienić w kategoriach "najlepszych praktyk" rozwoju oprogramowania (nienawidzę tych słów). Dlaczego nie zacząć od The Joel Test: 12 Kroków do lepszego kodu.

Test Joela

  1. Czy używasz kontroli źródła?
  2. Czy można zbudować w jednym kroku?
  3. czy tworzysz codzienne budowle?
  4. do you have a bug baza danych?
  5. czy naprawiasz błędy przed napisaniem nowego kodu?
  6. Czy masz aktualny harmonogram?
  7. masz spec?
  8. czy programiści mają ciche warunki pracy?
  9. Czy używasz najlepszych narzędzi, które można kupić za pieniądze?
  10. Czy macie testery?
  11. Czy nowi kandydaci piszą kod podczas rozmowy kwalifikacyjnej?
  12. czy wykonujesz testy użyteczności przedpokoju?
 3
Author: Eugene Yokota,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-24 12:10:40

Inżynieria oprogramowania jest dość szeroka. Od PIC do DSP wszystkie mają różny stopień zasobów fizycznych. W dzisiejszych czasach DSP są dość potężne (porównywalne z procesorami ~5 lat), mogą obsługiwać dużą ilość pamięci itp. Ale znowu masz zdjęcia, które działają z kilkoma kilobajtami. Bardziej skromne zasoby, programista musi użyć pomysłowych hacków, aby uzyskać jak najwięcej z urządzenia. Skupiamy się na "get it to work", a nie na "write elegant code".

What I would like aby zobaczyć to dobre narzędzia do zarządzania projektami, które zawierają kod, a także dokumenty, ponieważ musisz odnosić się do wielu arkuszy danych, dokumentów projektowych, które są rozrzucone po sieci i na blobach e-mail itp..

Chciałbym również zobaczyć lepsze narzędzia dev dla DSP (ti: proszę przekazać CCS komuś, kto jest dobry w tworzeniu IDE), i więcej twórców bibliotek korzystających z C++ (patrzę na Ciebie ATEME) do budowania lepszych bibliotek.

A także inżynierowie sprzętu, aby lepiej oceniali obiekt Orientacja, a nie wygadywanie się, "jeśli to C++ to będzie wolno".

 2
Author: Indy9000,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-24 12:11:23

Pozwól, że najpierw zajmę się założeniem w twoim pytaniu. Zakłada się, że inżynierowie oprogramowania wbudowanego (ESE) nie znają lub nie są świadomi nowoczesnych praktyk inżynierii oprogramowania i muszą uczyć się nowych praktyk. To założenie powinno być odrzucone od razu. Uważam, że można znaleźć taki sam rozkład statystyczny ESE, którzy utrzymują swoje umiejętności i techniki na bieżąco, jak niezabezpieczone SEs.

Więc może twoje pytanie stanie się tablicą pytań typu:

  1. Dlaczego czy ESEs używa osobnego edytora kodu i kompilatora wiersza poleceń, a nie IDE?
  2. Dlaczego C jest preferowane od C++ w większości projektów wbudowanych?
  3. Dlaczego w świecie embedded nie ma tyle eksperymentów w praktykach programistycznych?

Poniższe akapity odpowiadają na te pytania.

  1. ESE zwykle używają określonego edytora kodu, ponieważ jest to osobiste preferencje lub to, co jest używane przez jego firmę. Idy nie są tak powszechne, ponieważ ESEs współpracuj bardzo blisko z silikonem i nie wszyscy producenci chipów opracowują IDE dla swojej linii chipów. Tylko chipy, które osiągają najwyższą penetrację rynku, takie jak ARM, mają wystarczająco dużo rozmachu, aby uzasadnić rozwój narzędzi opartych na IDE. Co więcej, IDE nie zapewnia tak dużej pomocy ESE, jak na przykład deweloperowi komputerów. Ide pomagają w tworzeniu kleju do GUI lub wypełniania kodu dla dużych interfejsów API; żaden z nich nie jest powszechnie spotykany lub tak standardowy, jak w osadzony świat.

  2. Jestem pewien, że są lepsze zapisy, dlaczego C jest preferowane niż c++ w systemach wbudowanych, niż mogę nadrobić na miejscu. Krótko mówiąc, używasz tego, co działa. C działa i jest bardziej powszechne (więcej programistów zna C niż C++). Innym powodem może być to, że metodologia OO została opracowana, aby pomóc programistom w rozwiązywaniu dużych problemów poprzez abstrakcję rozwiązania do zarządzalnych obiektów koncepcyjnych. W świecie osadzonym problemy są zazwyczaj do jak najmniejszego problemu (i rozwiązania), tak aby system wbudowany stał się bardziej niezawodny dzięki mniejszej bazie kodu.

  3. Jest mniej eksperymentów ze strony ESE, ponieważ produkt wbudowany, w ogóle, musi być znacznie mniej podatny na błędy i mieć większą niezawodność niż program komputerowy. Oznacza to sztywne stosowanie sprawdzonych praktyk i więcej czasu spędzonego na testowaniu. Dlaczego? Ponieważ często nie ma wykonalnej ścieżki do aktualizacji oprogramowania wbudowanego urządzenie; jest to albo niemożliwe ze względu na to, że system jest wdrażany poza zasięgiem, albo niewykonalne ze względu na koszt aktualizacji milionów urządzeń.

Podsumowując, ESE używają narzędzi i praktyk, które najlepiej odpowiadają ich potrzebom, tak jak nie wbudowane SEs. jako praktykujący ESE, wierzę, że dyscyplina oprogramowania wbudowanego różni się znacznie bardziej niż moi przyjaciele spoza ESE uważają, że jest. Tak więc pozorna rozbieżność praktyk programistycznych nie jest kwestią konieczności uczenia się nowoczesne praktyki, ale nie-Esy muszą zrozumieć, jak różne jest programowanie wbudowane.

 2
Author: dwhall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-26 14:43:26

Automatyczne testy
Nie skanuj wizualnie wyjść symulacji, aby sprawdzić, czy wszystko jest w porządku. Potrzebujesz kompleksowego zautomatyzowanego testu, ponieważ zawsze będziesz czegoś brakowało w tej masie przebiegów.

Kontrola Wersji
Nie będziesz pamiętał, jaka była wersja robocza. Użyj oprogramowania do kontroli wersji, aby wiedzieć, czym zaprogramować tę płytę.

Śledzenie Błędów
Prędzej czy później zapomnisz. Dziennik błędów powinien zawiera wersję (Patrz Kontrola wersji), w której problem został wykryty po raz pierwszy oraz wersję, w której został naprawiony.

UPS myślałem, że masz na myśli firmware jak w FPGA, ale to samo dotyczy oprogramowania wbudowanego. Jeśli masz już te procesy w miejscu great else zapomnij o unconventional approaches, dopóki nie uzyskać podstawy prawo.

 2
Author: Gerhard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-27 06:43:19

To chyba trochę wyrwane z kontekstu.
Krótkie odniesienie do kolumny firmware w Embedded,

Zawsze znalazłem dobre artykuły na temat inżynierii oprogramowania układowego w Embedded.
Które zapewne wielu zainteresowanych tym pytaniem również...

 0
Author: nik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-27 18:20:35