Okiem JellyTech -> Analiza wymagań - wprowadzenie

Wymagania w projektach IT. Tutaj się wszystko zaczyna 🙂 Tzn. zaczyna się w głowie pomysłodawcy zmiany, ale w wymaganiach jest to wszystko spisane. A przynajmniej być powinno. Pracując w innych branżach zazdrościłam zawsze IT, że tam jest wszystko tak dobrze opisane i zaplanowane. Pracując w tej branży już kilka lat, rozumiem, dlaczego musi takie być. Oczywiście w praktyce, nie wszystko jest takie różowe 😉 I nie zawsze przystępuje się do projektu z gotową analizą wymagań. Ale jest duży poziom zrozumienia potrzeby ich spisania.

Chyba każdy w IT zna ten rysunek. Osobiście uwielbiam go 🙂 Mało co pokazuje jak złożone jest tworzenie projektów i rozumienie perspektywy innych.

Czym jest zatem analiza wymagań? Dziś mamy dla Was mały skrypcik z tego tematu.

Trochę teorii.

Analiza wymagań, to mówiąc najprościej, uzgodnienie wymagań klienta i ich analiza. Celem jest określenie przede wszystkim zakresu prac, czasu wykonania, kosztów danego projektu.

Wyróżniamy 3 rodzaje wymagań. Przywołując definicję BABOK mamy: 

1) Wymagania biznesowe

2) Wymagania interesariuszy

3) Wymagania rozwiązania

Przyjrzyjmy się im zatem po kolei.

1) Wymagania biznesowe (Business requirements) – stanowią podstawę i wypadkową zainicjowanej zmiany. 

Są  związane z potrzebami i celami organizacji. Zatem dowiemy się z nich co firma chce osiągnąć za pomocą nowego systemu lub produktu, jakie są oczekiwane korzyści i jakie problemy są do naprawienia. Wymagania biznesowe mogą obejmować:

- zwiększenie efektywności operacyjnej, 

- poprawę obsługi klienta, 

- redukcję kosztów, zwiększenie zysków, 

- zautomatyzowanie procesów biznesowych,

- i wiele, wiele innych.  

2) Wymagania interesariuszy (Stakeholder requirements) – są to wymagania stakeholderów, które muszą zostać spełnione, aby osiągnąć wymagania biznesowe.

Są czymś na kanwę pomostu pomiędzy wymaganiami biznesowymi, a wymaganiami rozwiązania (opis poniżej). Muszą wspierać wymagania biznesowe. Co istotne, często ich spisanie odbywa się razem ze spisaniem wymagań biznesowych. Wszystko zależy bowiem od złożoności struktury i liczby interesariuszy.

Kto może być interesariuszem? Klienci, zarząd czy zespół projektowy.

Photo from https://unsplash.com/


3) Wymagania rozwiązania (Solution requirements) – to dużo bardziej szczegółowo opisane wymagania pozwalające opowiedzieć o możliwościach i cechach rozwiązania. Dzielą się one na:

  • Wymagania funkcjonalne 
  • Wymagania niefunkcjonalne 

Wymagania funkcjonalne (Functional Requirements) – odpowiadają na pytanie co w efekcie działania danego systemu/aplikacji dostaniesz? Czyli jak funkcjonalność będzie się zachowywać? Jakie procesy będzie realizować? Jakimi informacjami będzie zarządzać? Wymagania funkcjonalne opisują, co system powinien umożliwiać użytkownikom. 

Ważna uwaga

Dobra dokumentacja wymagań nie powinna narzucać konkretnego rozwiązania architektonicznego. Analityk powinien w taki sposób opowiedzieć o systemie i go opisywać, by zaprezentować dostępne funkcje i możliwości aplikacji bez zbędnego wnikania w technikalia.


Wymagania niefunkcjonalne (Non – Functional Requirements) – te wymagania nie opisują, co będzie robił system, ale jak będzie robił. Pod jakimi warunkami będzie działał efektywnie? Jakie standardy ma spełniać?

Przykłady wymagań niefunkcjonalnych obejmują np. czas odpowiedzi systemu, skalowalność, łatwość obsługi, bezpieczeństwo danych, kompatybilność z innymi systemami, dostępność na różnych platformach itp.

Dodatkowo...

Oprócz wymagań funkcjonalnych i niefunkcyjnych możemy też trafić np. na wymagania:

- technologiczne - są to wymagania związane z wykorzystywanymi technologiami, platformami, językami programowania, bazami danych itp. Wymagania technologiczne określają, jakie technologie należy użyć do budowy rozwiązania. Podając przykład wymaganie technologiczne może wskazywać dyrektywnie wykorzystanie języka programowania Java, frameworka Spring i bazy danych MySQL.

-  integracyjne - są to wymagania dotyczące integracji z innymi systemami, usługami lub zasobami. Wymagania integracyjne opisują, jak system powinien komunikować się i współpracować z innymi systemami. Mogą obejmować integrację z systemami zewnętrznymi za pomocą interfejsów API, wymianę danych w określonym formacie, synchronizację danych itp.

-  wydajności - są to wymagania dotyczące wydajności systemu, takie jak czas odpowiedzi, przepustowość, obsługa dużej liczby użytkowników itp. Wymagania dotyczące wydajności określają zatem oczekiwane parametry wydajnościowe, które system powinien spełniać.

Jak widać, przed przystąpieniem do prac developerskich dłuuuuuuuuuuuuuuuga droga 🙃 Zderzenie oczekiwań i weryfikacja możliwości następuje prawie na każdym etapie projektu, niemniej to co zbierzemy na początku jest naszą bazą, punktem wyjścia.

Business-Analyst-Plan.mmap - 17/10/2011 - Mindjet

I obiecana praktyka 🙂

Tak prezentuje się teoria. A co mówią praktycy? Co naprawde jest ważne przy zbieraniu wymagań biznesowych? Oto kilka wskazówek:

  1. Komunikacja.

Wypracuj atrakcyjny i zrozumiały dla wszystkich proces komunikacji i przekazywania informacji. Mowa tu zarówno o narzędziach (możesz używać Murali, Miro i innych), czyli układzie przekazywanych informacji, sekcjach dla odbiorców, ale też kanałach komunikacji. Ważne jest aby dostęp do wymagań był szeroki, by interesariusze mogli je przeglądać,, “odbić swoje myśli”.

  1. Mapy procesów

Wypadkową tego pierwszego mogą być mapy procesów. Wiadomo, że ludzie są wzrokowcami. Pokazanie czegoś na grafie, mapie myśli, często pozwala lepiej zrozumieć potrzeby, kontekst, zależności i wpływy.

  1. Model.

A jak szczegółowo pisać? To oczywiście zależy nad jaką funkcją/systemem mamy pracować. Czasem wystarczy, że napiszemy/rozrysujemy coś na mapie na poziomie danego systemu, czasem trzeba będzie spojrzeć na problem szerzej, patrząc na system jakby z zewnątrz. 

  1. Wiedzieć dokąd się zmierza.

Warto zbudować poczucie, że to co teraz spisujemy i o czym rozmawiamy wpłynie na powodzenie całego przedsięwzięcia. Celem tworzenia systemów i aplikacji jest zbudowanie działającego oprogramowania, które odpowie na wymagania Klienta (czyt. osób, które będą z tego korzystać). Nie znasz potrzeb, nie stworzysz dobrego dla klienta produktu. 

  1. Jeszcze nie czas na technikalia, ale…

Wymagania mogą być niezależne od wskazówek technologicznych. Niemniej trzeba pamiętać, iż każda sytuacja jest inna. Może zdarzyć się tak, że system lub jego część funkcjonuje już w jakimś ekosystemie. Wtedy założenie, że wymagania mogą być zebrane bez benchmarku technologicznego jest błędem. Niemniej co do zasady wymagania mają odpowiadać na pytanie jakie funkcje ma dostarczyć nowy system, zatem w zupełności wystarczy by było to opisane zrozumiałym dla biznesu językiem.

  1. Słuchanie. 

Brzmi jak banał? Niekoniecznie. Nowy system, aplikacja ma być wypadkową potrzeb wielu osób i grup. Stąd jeśli ma spełniać wielorakie oczekiwania, trzeba wsłuchać się w potrzeby interesariuszy. Co to znaczy? Należy upewnić się to co usłyszeliśmy, jest tożsame z wyobrażeniem drugiej strony. Możemy w tym celu zadawać pytania pomocnicze lub sparafrazować wypowiedzi drugiej strony. Bo rzecz nie jest w spisaniu dokumentacji, ale w zrozumieniu problemu przed którym stoi Klient. 

  1. Im prościej tym lepiej. 

No właśnie. Spisane wymagania nie muszą otrzymać literackiej nagrody Nobla. Ale mają być proste, spójne, dawać odpowiedź na najważniejsze pytania. Ważny jest ich układ i ciąg logiczny. Zbyt duża szczegółowość może zakłócić uchwycenie priorytetów. 

  1. Jedyna stała to zmiana. 

Niestety. Jak wiemy - wszystko płynie. Niemniej nie ma co się na to obrażać. Będą pewne ustalenia, które trzeba ustalić jako relatywnie niezmienne, by proces szedł do przodu, osadzić go w czasie, niemniej czasem retrospekcja, czy takie przysłowiowe przespanie sie z tematem, może dać naprawde dobre nowe spojrzenie. Poza tym świat, zewnętrzny ciągle się zmienia, konkurencja nie śpi. Czasem trzeba po prostu podjąć decyzje o zmianie kursu - warto być na to gotowy. 

Tyle tytułem wstępu. W kolejnych artykułach pochylimy się nad szczegółami opisanego procesu. Śledźcie naszego bloga koniecznie...

I mamy nadzieje, że przedostatni obrazek, nie będzie się wydarzał 😆

wykop.pl

Galeria zdjęć

Wideo

Requirements analysis - introduction

Requirements in IT projects. It all starts here 🙂 it starts in the head of the originator of the change, but it is all written down in the requirements. Or at least it should be. Working in other industries, I have always envied IT that everything is so well described and planned there. Having worked in this industry for several years now, I understand why it has to be like this. Of course, in practice, not everything is so rosy 😉 And you don't always start a project with a ready analysis of requirements. But there is a high level of understanding of the need to write them down.

I think everyone in IT knows this drawing. Personally, I love it 🙂 Few things show how complex it is to create projects and understand the perspective of others. So what is requirements analysis? Today we have a small script for you on this topic.

A bit of theory.

Analysis of requirements, to put it simply, agreeing on customer requirements and their analysis. The goal is to determine, above all, the scope of work, execution time, and costs of a given project.

There are 3 types of requirements. Referring to the BABOK definition, we have:

1) Business requirements

2) Stakeholder requirements

3) Solution requirements

Let's look at them one by one.

1) Business requirements - are the basis and the resultant of the initiated change. They are related to the needs and goals of the organization. Therefore, we will learn from them what the company wants to achieve with the new system or product, what are the expected benefits and what problems are to be fixed.

Business requirements may include:

- increasing operational efficiency,

- improving customer service,

- reducing costs, increasing profits,

- automating business processes,

- and many, many more.

2) Stakeholder requirements – these are stakeholder requirements that must be met to achieve business requirements. They are something like a bridge between business requirements and solution requirements (description below). They must support business requirements. Importantly, they are often written together with the writing of business requirements. Everything depends on the complexity of the structure and the number of stakeholders.

Who can be a stakeholder? Clients, management or project team.

Photo from https://unsplash.com/

3) Solution requirements - these are requirements described in much more detail that allow you to talk about the possibilities and features of the solution.

They are divided into:

- Functional requirements

- Non-functional requirements

Functional requirements - they answer the question of what will you get as a result of the operation of a given system/application? So how will the functionality behave? What processes will it implement? What information will it manage? The functional requirements describe what the system should enable users to do.

Important note

Good requirements documentation should not impose a specific architectural solution. The analyst should talk about the system and describe it in such a way as to present the available functions and capabilities of the application without undue technicalities.

Non-Functional Requirements - these requirements do not describe what the system will do, but how it will do it. Under what conditions will it work effectively? What standards should it meet?

Examples of non-functional requirements include, for example, system response time, scalability, ease of use, data security, compatibility with other systems, availability on different platforms, etc.

Additionally...

In addition to functional and non-functional requirements, we can also find, for example, the following requirements:

- technological - these are requirements related to the technologies used, platforms, programming languages, databases, etc. Technological requirements specify which technologies should be used to build the solution. To give an example, a technological requirement may indicate the use of the Java programming language, the Spring framework and the MySQL database.

- integration - these are requirements for integration with other systems, services or resources. Integration requirements describe how a system should communicate and interact with other systems. They may include integration with external systems using APIs, data exchange in a specific format, data synchronization, etc.-

performance - these are system performance requirements, such as response time, throughput, support for a large number of users, etc. Performance requirements therefore specify the expected performance parameters that the system should meet.

As you can see, there is a long way to go before starting development work 🙃 The clash of expectations and verification of possibilities takes place at almost every stage of the project, but what we collect at the beginning is our base, the starting point.

Business-Analyst-Plan.mmap - 17/10/2011 - Mindjet

And promised practice 🙂

This is how the theory looks like. And what do practitioners say? What is really important when collecting business requirements? Here are some tips.

1) Communication.

Develop an attractive and understandable communication and information process. We are talking about both tools (you can use Murals, Miro and others), i.e. the layout of the information provided, sections for recipients, but also communication channels. It is important that access to the requirements is wide, so that stakeholders can view them, "reflect their thoughts".

2) Process maps.

The result of the former may be process maps. It is known that people are visual creatures. Showing something on a graph, a mind map, often allows you to better understand the needs, context, dependencies and influences.

3) Model. And how to write in detail? This of course depends on what function/system we are working on. Sometimes it is enough to write/draw something on the map at the level of a given system, sometimes it will be necessary to look at the problem more broadly, looking at the system as if from the outside.

4) Know where you are going.

It is worth building a feeling that what we are writing down and talking about now will affect the success of the entire project. The purpose of creating systems and applications is to build working software that will respond to the requirements of the client (i.e. people who will use it). You do not know the needs, you will not create a good product for the customer.

5) It's not time for technicalities yet, but ...

Requirements may be independent of technological guidelines. However, it is important to remember that every situation is different. It may happen that the system or part of it already functions in some ecosystem. Then the assumption that requirements can be collected without a technology benchmark is a mistake. However, as a rule, the requirements are to answer the question of what functions the new system is to provide, so it is enough to describe it in a language understandable for business.

6) Listening.

Sounds like a cliché? Not necessarily. The new system, the application is to be the result of the needs of many people and groups. Therefore, if it is to meet multiple expectations, it is necessary to listen to the needs of stakeholders. What does it mean? Make sure what you hear is the same as what the other party thinks. For this purpose, we may ask auxiliary questions or paraphrase the statements of the other party. Because the thing is not in writing the documentation, but in understanding the problem facing the client.

7) The simpler the better.

Exactly. Written requirements do not necessarily win the Nobel Prize in Literature. But they are supposed to be simple, consistent, and answer the most important questions. Their arrangement and logical sequence are important. Too much detail can interfere with the capture of priorities.

8) The only constant is change.

Unfortunately. As we know, everything flows. However, there's nothing to be offended by. There will be some arrangements that need to be established as relatively unchanging in order for the process to move forward, set in time, but sometimes a flashback, or the proverbial sleep on the subject, can give a really good new perspective. Besides, the outside world is constantly changing, the competition never sleeps. Sometimes you just have to make a decision to change course - it's worth being ready for it.

So much for the introduction. In the following articles, we will go into the details of this process. Be sure to follow our blog.

... And we hope that the penultimate picture won't happen 😆

wykop.pl

Gallery

Wideo