Zapobiegawcza konserwacja oprogramowania

https://aie24.pl/

Zapobiegawcza konserwacja oprogramowania to proces wyszukiwania problemów w oprogramowaniu i naprawiania ich, zanim staną się błędami lub usterkami. Podczas gdy konserwacja naprawcza jest reaktywna, konserwacja zapobiegawcza jest proaktywna. Największą zaletą konserwacji zapobiegawczej jest to, że w przeciwieństwie do konserwacji naprawczej można ją zaplanować z wyprzedzeniem. Przykłady zadań, które można wykonać podczas konserwacji zapobiegawczej, obejmują aktualizację dokumentacji, refaktoryzację kodu i optymalizację wydajności kodu.

Doskonała konserwacja oprogramowania

https://aie24.pl/

Gdy Twoje oprogramowanie zostanie udostępnione użytkownikom, będą oni mieli mnóstwo pomysłów, jak można je ulepszyć lub uczynić bardziej pomocnym. Te sugestie często przybierają formę raportów o błędach. Jeśli jednak raport o błędach lub sugestia opisuje funkcjonalność wykraczającą poza wymagania oprogramowania, jej wdrożenie mieści się w kategorii doskonałej konserwacji. Podczas gdy doskonała konserwacja oprogramowania jest często procesem ulepszania istniejącego systemu, obejmuje ona również proces usuwania kodu lub funkcji, które nie są przydatne lub stały się przestarzałe.

Adaptacyjna konserwacja oprogramowania

https://aie24.pl/

Adaptacyjna konserwacja oprogramowania to proces modyfikowania oprogramowania w odpowiedzi na zmiany w środowisku, w którym działa. Środowisko aplikacji oprogramowania obejmuje sprzęt, system operacyjny, zależności oprogramowania oraz zasady i polityki biznesowe, od których zależy aplikacja. W nowoczesnej aplikacji internetowej tysiące zależności może się zmieniać i wymagać pewnego rodzaju adaptacyjnej konserwacji oprogramowania. Na przykład biblioteki oprogramowania używane w aplikacji mogą wymagać uaktualnienia, usługi stron trzecich, takie jak procesory płatności lub interfejsy API sieci Web, mogą ulec zmianie, a sprzęt i oprogramowanie używane przez aplikację będą nadal ulepszane po uruchomieniu produktu. Adaptacyjna konserwacja jest wykonywana w celu zapewnienia, że ​​oprogramowanie nie stanie się przestarzałe. Często adaptacyjna konserwacja ma efekt uboczny w postaci naprawiania zgłoszonych błędów i usterek. Na przykład błąd, który pojawia się w programie po jego wdrożeniu, może być wynikiem czegoś, na co nie masz wpływu, takiego jak zmiana zewnętrznego interfejsu API, od którego zależy program.

Naprawcza konserwacja oprogramowania

https://aie24.pl/

Bez względu na to, jak dokładnie testujesz oprogramowanie, będzie ono miało błędy i usterki, które nie zostaną znalezione, dopóki nie zostanie wdrożone i nie zacznie być używane. Naprawcza konserwacja oprogramowania, powszechnie znana jako naprawa oprogramowania, to proces naprawiania tych błędów i usterek, aby nie wpływały już na wrażenia użytkownika, bezpieczeństwo ani logikę aplikacji. Naprawcza konserwacja jest zawsze wykonywana w odpowiedzi na problem zgłoszony przez wewnętrznych testerów lub użytkowników końcowych. Przykłady problemów, które mogą pojawić się po wdrożeniu oprogramowania, obejmują błędy logowania, literówki, uszkodzone łącza i niezgodności z innym oprogramowaniem lub sprzętem. Naprawcza konserwacja oprogramowania jest często wyzwalana przez zgłoszenia błędów. Jednak wiele zgłoszeń błędów przesyłanych przez użytkowników to w rzeczywistości sugestie ulepszeń, a nie błędy.

Znajomość czterech typów konserwacji

https://aie24.pl/

Przewidywalnym rezultatem braku rutynowej konserwacji samochodu jest to, że rzeczy zaczną się pogarszać, aż do momentu wystąpienia poważnego problemu. Przewidywalnym rezultatem braku konserwacji oprogramowania jest to, że ostatecznie ulegnie awarii. Typy awarii aplikacji oprogramowania obejmują błędy, usterki, problemy z bezpieczeństwem i niezadowolenie użytkownika. Istnieją cztery typy konserwacji oprogramowania:

»»Konserwacja naprawcza oprogramowania

»»Adaptacyjna konserwacja oprogramowania

»»Doskonała konserwacja oprogramowania

»»Zapobiegawcza konserwacja oprogramowania

Prawidłowo i w połączeniu cztery typy konserwacji pomogą utrzymać oprogramowanie w dobrym stanie i stale je ulepszać. Przybliżony procent czasu, jaki programiści poświęcają na każdy z czterech typów konserwacji oprogramowania, pokazano na rysunku.

Utrzymywanie kodu

https://aie24.pl/

Oprogramowanie nigdy nie jest skończone. Po przejściu przez procesy planowania, kodowania, testowania, dokumentowania i wdrażania aplikacji rozpoczyna się proces konserwacji. Konserwacja stanowi dużą część pracy programisty oprogramowania. W jednym z badań przeprowadzonych przez Stripe programiści stwierdzili, że spędzają prawie połowę dnia na konserwacji (https://stripe.com/files/reports/the-developer-coefficient.pdf). Konserwacja również nie jest popularnym zadaniem. Badanie przeprowadzone przez Rollbar (www.businesswire.com/news/home/20210216005484/en/Rollbar-Research-Shows-That-raditional-Error-Monitoring-Is-Missing-the-Mark) wykazało, że 21 procent programistów wolałoby pójść do dentysty niż naprawić błędy.

Tue dowiesz się, co obejmuje konserwacja oprogramowania i w jaki sposób narzędzia AI mogą pomóc w skróceniu tego procesu i (mam nadzieję) uczynieniu go przyjemniejszym.

Tworzenie chatbota dokumentacji API

https://aie24.pl/

Dodatek Owlbot AI firmy ReadMe wykorzystuje sztuczną inteligencję, aby zapewnić czytelnikom Twojej dokumentacji interfejs czatu, w którym mogą zadawać pytania na temat Twojej dokumentacji. Możesz jednak również zbudować własny, korzystając z API asystentów OpenAI lub tworząc własny GPT w ChatGPT Plus. W poniższej demonstracji używam ChatGPT Plus, ale jeśli chcesz użyć API asystentów, możesz uzyskać do niego dostęp, korzystając z instrukcji w sekcji „Budowanie własnego bota dokumentacji”. Jeśli jesteś subskrybentem ChatGPT Plus, możesz uzyskać dostęp do ekranu konfiguracji niestandardowego GPT, klikając ikonę użytkownika w lewym dolnym rogu i wybierając Moje GPT, jak pokazano na rysunku.

Wykonaj następujące kroki, aby utworzyć chatbota dokumentacji API.

  1. Na ekranie My GPTs (https://chat.openai.com/gpts/mine) kliknij Create a GPT. Pojawi się ekran New GPT.
  2. Kliknij przycisk Configure, aby uzyskać dostęp do formularza konfiguracji GPT.

3. Wpisz nazwę i opis swojego GPT. Nazwa i opis, których użyłem, są pokazane na rysunku

  1. Wprowadź instrukcje dla GPT. Oto instrukcje, których użyłem:

Jesteś pomocnym i eksperckim botem wsparcia technicznego, który biegle posługuje się wieloma językami programowania i jest dostępny, aby pomóc każdemu z pytaniami dotyczącymi REST API dla serwera mediów społecznościowych o nazwie „Soliloquy”. Konsultując plik OpenAPI w swojej wiedzy, możesz udzielić odpowiedzi na temat wykonywania zadań, takich jak rejestrowanie użytkowników, logowanie użytkowników, tworzenie nowych postów, edytowanie postów, usuwanie postów i pobieranie postów. Możesz również odpowiedzieć na pytania dotyczące pisania programów, które wykorzystują API.

  1. W sekcji Knowledge formularza wybierz i prześlij swój plik OAS. Jest to plik YAML utworzony w sekcji „Documenting a REST API”.
  2. W sekcji Capabilities formularza wybierz Web Browsing and Code Interpreter. Możesz również wybrać dodatkowe opcje, jeśli chcesz (takie jak DALL-E Image Generation).
  3. Zapisz swój GPT, klikając Save w prawym górnym rogu i wybierając opcję w menu Publish To. Na rysunku wybrałem Anyone with a Link.

Po zakończeniu konfiguracji GPT możesz go przetestować! W pierwszym teście dałem mu następujący monit:

Jak mogę utworzyć nowego użytkownika?

Chatbot zastanowił się przez chwilę, a następnie udzielił idealnej odpowiedzi, jak pokazano na rysunku .

W moim drugim teście postanowiłem spróbować szczęścia. Poprosiłem mojego chatbota o napisanie programu JavaScript i strony HTML, która mogłaby posłużyć do utworzenia użytkownika. Oto prośba, której użyłem:

Czy potrafisz napisać stronę internetową i program JavaScript, aby utworzyć nowego użytkownika?

Jego odpowiedź była świetnym początkiem. Jednak popełnił kilka błędów i podjął nieidealne decyzje. Na przykład dodał dodatkowe pole (nazwa użytkownika) do formularza rejestracyjnego, którego serwer nie obsługuje, a kilka rzeczy w kodzie (takich jak użycie słowa kluczowego var zamiast nowocześniejszego let lub const) można by poprawić. Oto pełny program, który stworzył chatbot:

<!DOCTYPE html>

<html lang=”en”>

<head>

<meta charset=”UTF-8″>

<meta name=”viewport” content=”width=device-width, initial-scale=1.0″>

<title>Create New User</title>

<script>

function signupUser() {

var xhr = new XMLHttpRequest();

var url = “https://api.soliloquy.com/user/signup”; // Replace with

your API’s URL

xhr.open(“POST”, url, true);

xhr.setRequestHeader(“Content-Type”, “application/json”);

xhr.onreadystatechange = function () {

if (xhr.readyState === 4 && xhr.status === 200) {

var jsonResponse = JSON.parse(xhr.responseText);

console.log(“User created: “, jsonResponse);

alert(“User successfully created!”);

}

};

var username = document.getElementById(“username”).value;

var password = document.getElementById(“password”).value;

var email = document.getElementById(“email”).value;

var userData = JSON.stringify({

“username”: username,

“password”: password,

“email”: email

});

xhr.send(userData);

}

</script>

</head>

<body>

<h2>Create New User</h2>

<form onsubmit=”event.preventDefault(); signupUser();”>

<label for=”username”>Username:</label><br>

<input type=”text” id=”username” name=”username” required><br>

<label for=”password”>Password:</label><br>

<input type=”password” id=”password” name=”password” required><br>

<label for=”email”>Email:</label><br>

<input type=”email” id=”email” name=”email” required><br><br>

<input type=”submit” value=”Create User”>

</form>

</body>

</html>

Przetestowałem program na moim serwerze i próbował wysłać żądanie HTTP POST. Żądanie zostało zablokowane z powodu polityki cross-origin resource sharing (CORS) przeglądarki. Po skonfigurowaniu serwera tak, aby zezwalał na żądanie POST z mojego komputera deweloperskiego i wprowadzeniu kilku dodatkowych poprawek program zadziałał!

Gdyby Soliloquy był prawdziwym produktem, a ja tworzyłbym chatbota API, dopracowałbym instrukcje Soliloquy i przesłałbym próbkę aplikacji klienckiej, która używa API. Spodziewam się, że znacznie zwiększyłoby to dokładność asystenta. Ogólnie rzecz biorąc, w tym momencie generatywne systemy AI całkiem nieźle radzą sobie z tworzeniem dokumentacji oprogramowania i mogą być ogromną oszczędnością czasu podczas generowania dokumentacji API. Jednak, jak w przypadku każdego zastosowania generatywnej AI, ważne jest, aby nie zakładać, że jakakolwiek wygenerowana treść jest dokładna lub tak dobra, jak ta, którą można by utworzyć ręcznie.

Dokumentowanie interfejsu API REST

https://aie24.pl/

Interfejsy API REST można dokumentować przy użyciu specyfikacji OpenAPI (OAS), formatu niezależnego od języka programowania, służącego do opisywania, tworzenia, korzystania i wizualizacji interfejsów API. Narzędzia do dokumentowania interfejsów API i tworzenia pliku OAS obejmują Postman (https://www.postman.com), Swagger (https://swagger.io) i ReadMe (https://readme.com). W idealnym przypadku dokumentacja interfejsu API powinna zostać utworzona przed lub w trakcie opracowywania serwera definiującego interfejs API. Jednak nie zawsze tak to działa. W takim przypadku dokumentację interfejsu API należy utworzyć, wykonując inżynierię wsteczną kodu. To zadanie jest często wykonywane ręcznie, poprzez wprowadzenie informacji o interfejsie API w narzędziu online lub poprzez ręczne napisanie pliku OAS. Narzędzia generatywnej sztucznej inteligencji, które mają dostęp do Twojego kodu, mogą być pomocne w tym procesie. Wykonaj następujące kroki, aby utworzyć plik OAS dla serwera przy użyciu GitHub Copilot:

  1. W VS Code otwórz folder o nazwie /soliloquy w folderze /chapter10 kodu pobranego ze strony internetowej tej książki (pod adresem www.dummies.com/go/codingwithaifd). Ten folder zawiera aplikacje serwerowe i klienckie dla prostej aplikacji mediów społecznościowych o nazwie Soliloquy. Nadałem jej taką nazwę, ponieważ obecnie pozwala ona na rozmowę tylko ze sobą.
  2. Otwórz dwa pliki z folderu server/routes (user.js i posts.js). Pliki te definiują punkty końcowe API.
  3. Mając otwarte dwa pliki trasy, wprowadź następujący monit w GitHub Copilot (lub innym wybranym przez siebie chatbocie):

@workspace Wygeneruj plik OAS dla tego serwera REST.

Gdy wypróbowałem ten monit w programie Copilot, wygenerował on (na pierwszy rzut oka) plik OAS, który wyglądał na poprawny i dokładny w języku YAML, jak pokazano na rysunku

YAML to skrót od YAML Ain’t Markup Language. Jest powszechnie używany w plikach konfiguracyjnych w dowolnym języku programowania. Aby dowiedzieć się, czy ten plik jest prawidłowy i dokładny, mogłem dokładnie przeczytać cały plik i porównać go z kodem mojego programu. Albo spróbować zaimportować go do narzędzia do testowania i wizualizacji interfejsów API i zobaczyć, co się stanie. Druga opcja wydaje się łatwiejsza i przyjemniejsza, więc tak właśnie zrobiłem. Jednym z narzędzi do tworzenia dokumentacji interfejsu API jest ReadMe. Bezpłatna wersja ReadMe może być używana do tworzenia interaktywnego odniesienia do interfejsu API. Wykonaj następujące kroki, aby zaimportować wygenerowany plik YAML OAS do ReadMe:

  1. Zarejestruj konto na stronie https://www.readme.com.
  2. Kliknij przycisk Nowy projekt.
  3. Kliknij Szybki start na pasku bocznym po lewej stronie , aby rozpocząć tworzenie odniesienia do interfejsu API.

Zobaczysz stronę, na której możesz przesłać plik OAS, jak pokazano na Rysunku

  1. Kliknij OAS Upload.

Pojawi się okno dialogowe Describe Your API. To okno zawiera opcje przesyłania pliku OAS, w tym użycie wiersza poleceń, przesłanie z GitHub lub przesłanie pliku ręcznie.

  1. Wybierz opcję przesyłania.

Użycie wiersza poleceń lub metody przesyłania GitHub jest najlepszą opcją, ponieważ utrzymuje ona dokumentację zsynchronizowaną ze zmianami, które wprowadzasz. Jednak w tym pierwszym eksperymencie zdecydowałem się wybrać metodę przesyłania pliku dla uproszczenia, jak pokazano na rysunku

6. Zapisz kod OAS wygenerowany przez Copilot w pliku o nazwie soliloquy.yaml i prześlij go do ReadMe. Po chwili ReadMe wyświetli okno Następne kroki, jak pokazano na rysunku

To okno zawiera łącze do podglądu mojego odwołania do API. 7. Kliknij łącze Preview API Reference i przejdź do dokumentacji punktu końcowego Get All Posts, która jest pokazana na rysunku

Będę musiał napisać i uruchomić testy, zanim będę mógł stwierdzić, czy dokumentacja API wygenerowana przez Copilot jest całkowicie dokładna, ale jak dotąd wygląda świetnie i jej utworzenie było znacznie szybsze, niż zrobiłbym to ręcznie.

Automatyzacja dokumentacji API za pomocą AI

https://aie24.pl/

Jedną z najczęstszych form wewnętrznej i zewnętrznej dokumentacji oprogramowania jest dokumentacja API. Dokumentacja API określa sposoby, w jakie programiści mogą pisać oprogramowanie do interakcji z Twoim oprogramowaniem. Aplikacje internetowe, które wchodzą w interakcję z serwerem, zwykle używają interfejsu API RESTful lub po prostu REST (representational state transfer), który jest stylem architektonicznym wykorzystującym żądania HTTP do tworzenia, aktualizowania, odczytywania i usuwania danych. Dostęp do interfejsów API REST można uzyskać, używając prostych adresów URL opisujących cel interfejsu API. Adresy URL używane przez interfejs API REST są nazywane punktami końcowymi. Na przykład serwer, który używa architektury REST, może mieć punkt końcowy o nazwie /user. Aby utworzyć rekord użytkownika, aplikacja kliencka może wykonać żądanie HTTP POST do punktu końcowego /user z wymaganymi danymi. Aby pobrać określony rekord użytkownika z serwera, aplikacja kliencka może wykonać żądanie HTTP GET do punktu końcowego. Aby zaktualizować istniejący rekord, aplikacja kliencka może wykonać żądanie HTTP PUT, a aby usunąć rekord, aplikacja kliencka może wykonać żądanie HTTP DELETE.

Generowanie diagramu wymagań

https://aie24.pl/

Diagram wymagań oprogramowania wizualizuje wymagania w systemie, a także relacje między wymaganiami. Może być przydatnym narzędziem do lepszego zrozumienia wymagań, a także do ustalania priorytetów pracy. Rozpoczęcie pisania diagramu wymagań może być jednak trudne, a generatywna sztuczna inteligencja może być pomocna. Na początku może się wydawać, że model generatywnej sztucznej inteligencji tworzy wymagania, ponieważ (przynajmniej w idealnym przypadku) wymagania są określane przez klienta, właściciela produktu i analityka biznesowego. Jednak większość projektów oprogramowania ma podobne cechy i funkcje. Niektóre elementy aplikacji internetowej są tak powszechne, że klient lub właściciel produktu może zapomnieć, że muszą zostać zbudowane przed częściami aplikacji, które czynią ją wyjątkową. Przykłady takiej funkcjonalności obejmują funkcje uwierzytelniania użytkownika i wyszukiwania. Aby dowiedzieć się, czy model generatywny może zapisać podstawowe wymagania i przedstawić je jako dokument wymagań, pomyślałem o projekcie i wymyśliłem krótki opis:

Aplikacja internetowa dla pisarzy do zarządzania wszystkimi aspektami projektu pisania książki.

Otworzyłem Draw.io, wybrałem Requirement Diagram Smart Template, wpisałem swój opis w polu tekstowym monitu i kliknąłem Generate. Powstały diagram, pokazany na rysunku , był porażką.

W mojej drugiej próbie użyłem następującego monitu:

Utwórz wymagania, określone w postaci historii użytkowników, dla aplikacji internetowej dla autorów, która pomoże im zarządzać projektami pisarskimi.

Wynik pokazany na rysunku  był o wiele gorszy od poprzedniego i nie miał nic wspólnego z moją prośbą.

W trzeciej próbie wypróbowałem następujący monit:

Wymagania dotyczące aplikacji internetowej ułatwiającej pisarzom organizowanie i śledzenie projektów pisarskich.

Używając słów „organizuj” i „śledź”, dałem modelowi wystarczająco dużo wskazówek, aby mógł powiązać to, czego chciałem, z wymaganiami dowolnego narzędzia do zarządzania projektami. W końcu dało mi coś, z czym mogłem pracować.

Rysunek  pokazuje zbliżenie części diagramu.

Należy zauważyć, że model napisał wymagania jako historie użytkownika i że są to pomyślnie napisane wymagania, które mogą być częścią dowolnego narzędzia do zarządzania projektami.