Project Bootstrapping
Describing/Modeling systems
- Describe system as a graph.
  Nodes are components/actors then:
  - graph 1: Arrows are relations. 
  - graph 2: Arrows are data flows. (map to sequence diagrams).

- Describe actors (components, users, roles..) and the frequent task
  each actor will be in charge of. 

- Classify entities in model according to:
  -ºactive entitiesº: entities that initiate a new work flow that acts as
     "beeings with own will". In software those entities are related to human 
     users, IoT devices, ... 
     In general, they must registrer and authenticate "shomehow" to the 
     system, have a set of assigned secrets/signature keys/... and represent
     natural/legal entities. Ex:
  -ºreactive-entitiesº: entities that react to external orders/requests.
     The mostly corresponds to software modules like daemons, 
     modules exposing REST APIs, ...
  -ºdata entitiesº: persistence data representing the status of the software model.
    They can be subdivided in:
    - Business entities: entities modeling the "Happy path" in a business workflow.
    - Error control : entities modeling the "Non-Happy path" when workflow
                      is stuck pending some data/event or must rollback due to
                      some non-contemplated/non-fixable error/condition.
      They can be subdivided in:
      - Error origin     : Explain where or why the error originated
      - Error destination: Explains who must fix the error.
      - Error metadata   : Extra information about the error that can
                           help to fix/audit/trace the error.
Choosing a Tech. Stack
REF: @[]

   Next time you find yourself Googling some cool new technology to 
   (re)build your architecture around, I urge you to stop and follow 

  - Don't even start considering solutions until you Understand the 
    problem. Your goal should be to "solve" the problem mostly within the 
    problem domain, not the solution domain.
  - eNumerate multiple candidate solutions. Don't just start prodding 
    at your favorite!
  - Consider a candidate solution, then read the Paper if there is 
  - Determine the Historical context in which the candidate solution 
    was designed or developed.
  - Weigh Advantages against disadvantages. Determine what was 
    de-prioritized to achieve what was prioritized.
  - Think! Soberly and humbly ponder how well this solution fits your 
    problem. What fact would need to be different for you to change your 
    mind? For instance, how much smaller would the data need to be before 
    youd elect not to use Hadoop?
  MoSCoW Task Prioritization
  MoSCoW method  is  one  of  the  most  used  prioritization  
techniques  in  the  project  management  and software development 
and for this reason it was selected in the current deliverable. 

  Its primary role is to define a common baseline with partners on how 
they evaluate (e.g. most important/important/least important/etc.) 
each defined requirement. 

The acronym, MoSCoW, stands for 4 categories of prioritizations:
• "Must  have" requirements are considered vital/critical for the partner in order 
  to obtain a successful  outcome.  As  a  result,  these  are  
  considered  non-negotiable  and  mandatory. Furthermore,  any 
  solution delivered withouta requirement tagged as a must is not 
  considered viable.  If a workaround can be found for a requirement, 
  then this is not considered as “Musthave”. 

• "Should have" requirements:
  This  type comprises   all requirements that are not considered vital 
  but are important for the partner. The solution is considered viable 
  even if the requirement is not met. A workaround can be employed and 
  the solution will remain viable.

• "Could have" :
  contains all the  desired  features  that  could improve  the  
  functionality/work  experience  of the  solution  but  do  not  
  affect  the  result.  These  requirements have a minimum impact on 
  the end goal and are usually firstlyremoved in case of limited 

• "Won’t have" : (this time)
  requirements that are not needed at the current time or which do not 
  bring any addition to the value of the desired solution. Such 
  requirements do not have priority at the current moment of time. 

BºAccording  to  literature,  this prioritization  method  is        º
Bºefficient  and  offers  better  results  when  compared  to simplerº
Bºprioritizations approaches like high/medium/low prioritization or  º
Bºsequential prioritization.                                         º
Use case diagram    Diagram representing the actors outside of a system 
                    capable of interacting with the system itself. It represents the highest 
                    level view of a system.  
                    Shows the system as a whole and its input and output to and from external elements.

Vertical industry   Sybase
                    AADL     : Soft. Architecute Analysis and Design Language
                               (Memory, Processor, Thread, Data, Bus, System, Subprogram,
                                Thread Group, Device, Package)
                    BPMN     : Business Process Model and Notation
                               Start Event Message, Timer, Rule, Link, Multiple,
                               Intermediate Event, ,,,
                    ER        : Entity  Relantionship
                    Gane and Sarson
                    Network (Cisco Network)

Diagram Software
- UML: sequence diagrams, components, state-machine, ...
    -  allows ASCII art output (C⅋P as text, git friendly, ...)
    - Better styling but no support for ASCII output 
  - PlantUML:
    - Offline Desktop java application.
    - Supports ASCII art output

- GNU Dia:
  Complete, light, easy to use, Windows/Linux/Mac. Can export to web format standards
  like Scalable Vector Graphics (SVG),  png, gif, ...
  - Extensions can be created through Python scripts:
    Example extensions include: : convert diagrams to PostgreSQL SQL syntax.    : Convert PostgreSQL diagram to/from  (tedia2sql) UML dia diagram           : Launch a customizable list of shell script from Dia
    - Define a list of scripts that will be launched from a dialog in 
      Dia. Scripts will be executed as typed in a shell; full output and 
      standard error of execution will be printed in dialog. It is possible 
      to choose the directory where to execute the script.
    - Scripts can use some template strings that will be raplaced 
      with active diagram full path, or active layer name or number, or 
      space separated list of ids of selected objects in diagram (id values 
      as in Dia xml file for objects. es. O1 O3 O92 ...).
    - Can prepend or append additional parameters to each script 
      (template string expansion will be done on these additional 
      parameters too).

  Online professional Diagram software. Free for individual use.
  (some menus views indicate it could be "inspired/based" in GNU Dia?)
  Supports BPMN 

  Extremely simple but very power editor to include text-based diagrams
  in mail, chats, working documentaion, ...
  Graph. tool to edit/visualize UML models based on Eclipse Sirius.
- Gliffy  : General Purpose on-line (web). Non-free for commercial use.
Agile concepts, Nomenclature

- Projects takes too much (1 year taking requirements, 10 months

- Agile applies to project, people relationships,...
  prioritization of tasks, ...  better visibility,
  better prioritization, less downtime between tasks,
  Improved teamwork

- What's a task:
  A case study / promo-video / market-research /... ? NO. Too long.
  A task in agile is something that takes more than 30 minutes and less 
  than 3 days.

- How to estimate the time?
  Estimating is hard.
  Use story points (vs hours):
      1, 2, 4, 8, 16, 32, 48
      This could map (not necesarely) to:
      30min, 1hour, 2hours, 4hours, 1day, 2days, 3days.

  Both are subsets of Agile.
  SCRUM targets dead-lines. (fixed dates)
   * Releases are more important that "what's in".
   * Delay release or drop feature?
   * Uses a PLAN MODE

   * Service team. new tickets  always comming in.
   * Prioritazing the tickets (tasks) and doing in the right order
     is more important than how many are done in a week.
   * No Plan mode, no Sprints. 
   * Do NOT uses a PLAN MODE
Why I hate Scrum
By Gerhard Beck

I’ll define Scrum as the methodology developed by Ken Schwaber and Jeff Sutherland and documented in “The Scrum Guide.”

opinion: Scrum is not agile and, in practice, not very flexible. 

- Let’s take a look at the basic terminology:
  - "daily scrum"
    (less sporty and a lot less aggressive: a daily standup)
    - what you did.
    - what you are going to do
    - blockers. 
  - "sprints": management metaphor  to pressure to work un-paid hours.
    - 2 hours "sprints": "Put more pressure"

  - "Done" Scrum meaning.
     It starts with requiring those “performing the work and those inspecting
     the resulting increment must share a common definition of ‘Done’."
     - Problem: "done" depends:
                - on the task to be accomplished. 
                - on customer acceptance.
                -Dificult to figure out.
     - going to "done" must NOT be "insane"
     - ‘Done’ increment required at the Sprint Review. (just another way
       to put more preassure).

  - Time box: (2 weeks)
    Idea   : fit everything into "time box" so we all finish together.
    Reality: some things go faster, some others go slower.
           - Scrum is not agile, it’s a two-week waterfall from hell.

  - Scrum Master:
    Idea   : servant-leader for the Scrum Team.
    Reality: project manager stripped of the ability to manage the project.
     - "something needs to be done and a project manager can make the changes
        and get it done".
     - Scrum Master has to meekly explain to leadership that the next
       opportunity to save the ship will come in a week-and-a-half at
       the next sprint review
  - four formal events defined:
    - Sprint Planning
    - Daily Scrum:  replace with daily standup
    - Sprint Review
    - Sprint Retrospective: Do when needed, not at sprint plans.

    Reality: Waste of time for non-productive meeting. 

  - "team": 
     well-performing team members covering for poor performing team members
     is a guarantee that those will performing team members will soon be 
     working for a different company and you will have self-selected
     poor-quality team members. 
     Theory: 1-vote-per-team member:
     Reality: seasoned expert with thirty years of experience 
              outvoted by the novices.

  Perhaps as an industry we should work more on what a good leader looks like
  than trying to invent methodologies that deliberately remove leaders and 
  leadership as a quality. To me it seems entirely rudderless. 
  Scrum is Not a Team Player 

  Scrum is based around dropping working software every two weeks. 
  For some projects (web front ends) a short identical cadence works 
  well. For other projects (avionics) it doesn’t work at all.

Avoid "Product Owner" role - product owner role: proxy in between people doing the work and people needing the job done, and this causes delays, misunderstandings and bloat in our software engineering process. Poppendieck, author of many books on Lean in Software - there is an emerging theme in the literature, namely that the original balance of scrum master, product owner and team roles are being adapted, conflated, and possibly corrupted, to suit the needs of Bºorganizations transitioning from waterfall...º - Summarising ... as we scale Agile and its usage becomes the norm, the product owner role may not be such an obvious need or an obvious fit to the situation.
JIRA Summary
- Jira Issues and Dashboards
- Agile concepts
- Jira Agile Plan, Work, Track

  - We have a team of developers than pass the work to the QA Team that
  pass the work back to the developers or forwards it to the client,...
  - There can be "millions" of different workflows.

   - Dashboards allows for example to follow  others people work.

JIRA E-R Diagram
REF: @[─content/blogs.dir/2/files/2012/04/JIRA_Concepts.pdf]

                             │Issue Type│←────┐
                             │__________│     │
                             │Standard  │     │
                             │Sub─task  │     │
                             └──────────┘     │
   ┌──────────┐                  ^            │
   │Workflow  │                  │       ┌───────────┐              ┌───────┐
   │transition│                  │       │Issue Type │┌─────────────┼Context│
   └──────────┘←─♦┌────────┐  ┌────────┐ │Screen Sch.││             └───────┘
                  │Workflow│←─│Workflow│ └───┴───────┘│                 ^
   ┌────────┐←───♦└────────┘  │Scheme  │   │          │                 │
   │Workflow│                 └────────┘   │          │                 │
   │Step    │                  ^           │          │                 │
   └────────┘                  │           │          v          ┌─────────────────┐
       │                       ┌─────────────────────┐           │Global Context   │
    ┌──v──┐                    │ Project             │           │(in all projects)│
    │State│                    │                     │           └─────────────────┘
    └─^───┘                    │                     │                                     ┌─────────┐
      │                        │                     │        ┌──────────────────────┐     │Security │
      │                        │                     │───────→│Issue Security Scheme │────→│Level    │
      │                        │                     │        └──────────────────────┘     └─────────┘
      │                        │                     │
      │                        ┼─────────────────────┘────────────────┐             ┌────────────────┐
      │                        1♦   ♦1         │   │                  │             │User/Groups/    │
      │                   ┌─────┘   │          │   │                  │             │Proj.Roles      │
      │                  N│         │N         │   │   ┌────────┐   ┌─v────────┐───→│───────────     │
      │               ┌───────┐   ┌─────────┐  │   └──→│Project │   │Permission│    │Reporter        │
      │               │Version│   │Component│  │       │Category│   │Scheme    │    │Group           │
      │               └───────┘   └─────────┘  │       └────────┘   └──────────┘    │Single User     │
      │                ^           ^           │                        │           │Project Lead    │
      │                │     ┌─────┘           │                   ┌──────────┐     │Current Assignee│
      │                │     │                 │                   │Permission│     │User custom     │
      │                └┌──────┐───────────────┘                   └──────────┘     │Prj. Role       │
      └─────────────────│Issue │N                                       │           └────────────────┘
                        │      │           ┌───────┐                    │                    │
                        └──────┘←─────────→│ Issue │                    │                    │
                         │    │            │ Link  │                    │    ┌─────────┐     │
                         v    v            └───────┘                    │    │ Project │     │
                   ┌──────────┐    ┌──────────┐                         └───→│ Role    │←────┘
                   │Resolution│    │ Priority │                              └─────────┘
                   └──────────┘    └──────────┘

E-R:  REF @[]
PROJECT        ISSUE                  RESOLUTION
-------        --------------------   ----------
ID             ID                     ID
PNAME          PKEY                   SEQUENCE
URL            ISSUENUM               PNAME
LEAD           PROJECT                DESCRIPTION
COMPONENT      CREATED                      
---------      UPDATED                      
ID             DUEDATE                      
PROJECT        RESOLUTIONDATE               
CNAME          VOTES                        

SCRUM FullJourney
ºPRE-SETUP (Initially and on-demand) )º

- CreateºEpicsº

│COMPONENT:                                │ EPIC:                             │
│ - COMPONENT = ºproduct categoryº         │  - EPIC = ºgroupings for storiesº.│
│ - single project, timeless and kind of   │  - can go cross project           │
│   endless in scope and can be divided in │  - should have an end in time.    │
│   in "sub─products".                     │                                   │

- CreateºIssue listº ← STEP 1 - organize via EPICs. ← Optional - Move list to backlog ("future TODO list") ← STEP 2 (TODOs planned, some of them can start two years from now) - Decide if we need EPICs. (Team of work/tasks) ← STEP 3 - Create newºSPRINTº(batch of tasks) and decide ← STEP 4 which tasks to move from the backlog to the SPRINT TODO (ussually two weeks dead-line). For every sprint we can decide to move forward one or more epics. - create versions. ← STEP 5 Optional
BURNDOWN CHART - chart showing the progress for the sprint. linear progress vs real progress
Xray for Jira
- Manage Tests as Jira issues
- Plan, Execute and Integrate
- Reports and Requirement Coverage
- Manage manual and automated tests as Jira issues, customize 
  screens, fields and workflows.
- Specify tests in cucumber language and integrate with test 
  automation frameworks.
- Organize tests in folders and test sets.
- Create test plans for tracking a set of tests and planned or ad hoc 
  test executions.
- Execute tests on different environments and consolidate results.
- Use your CI tool to report test results using the included REST API. 
Diagram Types
Term                Meaning
Functional diagram  Structured representation of the functions (activities,
                    actions, processes, operations) within the system or one of its parts.
                    The model aims at facilitating the identification of 
                    information needs and helping to recognize opportunities.
                    Amongst other funct. diagrams include:
                    - Data Flow Diagram
                    - Sequence  Diagram

Component diagram   Diagram which has the purpose of representing the 
                    internal structure of the software system modeled in terms of its main 
                    components and the relationships between them. 
                    A component is a software unit with a distinct 
                    identity, as well as a distinct responsibility and 
                    well-defined interfaces.

Deployment diagram  Diagram which describes a system in terms of hardware 
                    resources, nodes, and relationships between them.
                    Often there is a diagram showing how the software 
                    components are distributed in the available hardware resources on the system.
                    In essence, it shows the physical location (deployment) of components of the architecture

Activity diagram    The process view is a way of showing what the system does at a high level 
                    from a process prospective, explaining how the small 
                    steps within the process fit together, in terms of 
                    order and information flow.

Use case diagram    Diagram representing the actors outside of a system 
                    capable of interacting with the system itself. It represents the highest 
                    level view of a system.  
                    Shows the system as a whole and its input and output to and from external elements.

Vertical industry   Sybase
                    AADL     : Soft. Architecute Analysis and Design Language
                               (Memory, Processor, Thread, Data, Bus, System, Subprogram,
                                Thread Group, Device, Package)
                    BPMN     : Business Process Model and Notation
                               Start Event Message, Timer, Rule, Link, Multiple,
                               Intermediate Event, ,,,
                    ER        : Entity  Relantionship
                    Gane and Sarson
                    Network (Cisco Network)

Tools for Diagram design
- PlantUML : text to UML (a Local Java version exists, as well as online
             - zero install versions -)
              To generate text diagram (Asci-art) use the flag -txt or -utxt in the
              local plantuml or one online version with text output support. For
              example @[]

             Quickly generate sequence diagrams from text. 
             Ex: (Using

             ──────────────────  ->  ─────────────────────────────
             INPUT                           OUTPUT 
             ──────────────────  ->  ─────────────────────────────
                                     ┌─┐          ┌─┐          ┌─┐
             @startuml           ->  │A│          │B│          │C│
                                     └┬┘          └┬┘          └┬┘
             participant A       ->   │ message 1  │            │ 
             participant B            │───────────>│            │ 
             participant C       ->   │            │            │ 
                                      │            │ message 1  │ 
             A -> B: message 1   ->   │            │───────────>│ 
             B -> C: message 1        │            │            │ 
             C -> B: reply 1     ->   │            │  reply 1   │ 
             B -> A: reply 1          │            │<───────────│ 
                                 ->   │            │            │ 
             @enduml                  │  reply 1   │            │ 
                                 ->   │<───────────│            │ 
                                     ┌┴┐          ┌┴┐          ┌┴┐
                                 ->  │A│          │B│          │C│
                                     └─┘          └─┘          └─┘

- GNU Dia: Complete, light, easy to use, Windows/Linux/Mac. Can export to web format standards
           like Scalable Vector Graphics (SVG),  png, gif, ...

- AscciFlow: Extremely simple but very power editor to include text-based diagrams
            in mail, chats, working documentaion, ...

- Web Sequence Diagram: On-line, free.

  Graph. tool to edit/visualize UML models based on Eclipse Sirius.

- Gliffy  : General Purpose on-line (web). Non-free for commercial use.
Reference Classification
Can be use to label content in CMS (See section in Confluence), JIRA, Git/Git-Commits, ....

  CLASSIFICATION   labels ("Coordinates in dimension)                         

  Generic         TODO, important, urgent, blocking,                       
                        (algún proceso está bloqueado por lo documentado aquí), ?

  soft_architecture    : soft_architecture.AAA:

  Life─cycle      0) Governance
                  1) planing        
                  2) Tools          
                  3) documentation  
                  4) development     
                  5) debugging      
                  6) qa.unitests , qa.functionalTests, qa.IntegrationTest
                  7) deployment                            
                  8) monitorization                        
                  9) ticketing
                 10) deprecation                           
                 11) close
                 12) alerting

  Environment     DEV, INT, ACC/PRE, PRO                                          

  Component       component1, 2,...

  Service          diploma , notarization , essif                              

  Tool            Jira, SonarQube, Jenkins, npm, swagger, ...                 

DocType       :                                 
                               ? (factura, 
                albarán, presupuesto, DATAFLOW ?)
                configuration, deliverable
                planning, funding, comparative

  documentType    must-read, tutorial, dataflow, configuration, procedure, minutes, reference,     
                  software, news, report,  trace(log), code, apendix
                  Others: ( budget, gant, ...)                                
  diagram     : functional,component,deployment,activity,use_case

   audience   : (what-roll this-document is intended for) developer, stackholder, ...
   Roll       : (What roll is related to this document) PROGRAMADOR, ANALISTA, ... ?

  Programming :   javascript, typescript, ruby, shell, ...                    

  dificulty   :   level0 → ... → level10                                      

  publish_flow:   template → draft → in_progess → review → ended → deprecated 

  Intended    :   developer, business_analist, operator, stackholder, ...     

  Lecture Time:   7min → 15min → 30min → 1h → 4h → 1d → 1w → 1m               

Confluence Notes
Advanced Search (CQL)
CQL stands for Confluence Query Language (CQL)

Simple CQL:  $field $operator (value|function)1+ 

Ex.: space = "TEST" ← find all content in "TEST" space. 

Rº:It is not possible to compare two fieldsº

Content API REST Resource Ex:
AAA="-u username:password"
curl $AAA    "$BASE_URL/rest/api/content/search?cql=space=TEST" ← Simple query

COMPLEX_QUERY="$COMPLEX_QUERY cql=(type=page and space=DEV) OR"
COMPLEX_QUERY="$COMPLEX_QUERY (creator=admin and type=blogpost)"
curl $AAA -G "$BASE_URL/context/rest/api/content/search" \      ← Complex query
  --data-urlencode "$COMPLEX_QUERY" \
  | python -m json.tool 

CONTAINS: UsesºLucene's text-searchingº on fields:
          - title
          - text
          - space.title

AND|NOT: combine multiple clauses

              type  = "blogpost"      and    ← page|blogspot|attachment
             label  = "performance"   and 
           creator  = currentUser()   and
             space  = DEV             and
  not( lastModified ˂ startOfYear() ) order by created desc, title
           mention IN (alice,bob)     and
              ºtextº~ "http win* api" 
       └───────↑──┘ ^
┌──────────────┘    =  ··· EQUALS
│                  !=  NOT EQUALS
│                   ˃  GREATER THAN
│                  ˃=  GREATER THAN OR EQUALS
│                  ˂      LESS THAN
│                  ˂=     LESS THAN OR EQUALS
│                  IN
│              NOT IN  ← equivalent to multiple "!=" statements,
│                        but shorter. That 
│       title|text  ~  ········ CONTAINS ← exact/ºfuzzyº match
│       title|text !~  DOES NOT CONTAINS ← Ex:
│                                          ~ run matches running,ran
Field is one of:
- Ancestor      - ID             - Space        -ºTextº ("document content")
- Container     - Label          -  " category  - Title
- Content       - Last modified  -  " key       - Type
- Created       - Macro          -  " title     - Watcher
- Creator       - Mention        -  " type
- Contributor   - Parent
- Favourite

   results will be relative to configured time zone 
   (default to Confluence server time zone).
   Ex Dates:
    yyyy/MM/dd HH:mm
    yyyy-MM-dd HH:mm

macro = jira            ← Find content that has the JIRA issue macro.

macro in (jira, toc, widget)  ← content that hash JIRA-issue macro or
                                            Table-of-content macro or
                                                      widget macro.
Space category

space.category in (planning, development) 
space.key      in (MKT, OPS, DEV)
space.title     ~ "Development Team"
space.type      = personal  ← Find personal spaces
space.type      = global    ← Find site / global spaces

Confluence, Using lables
- Labels can be used to create content classification in N dimensions, versus 1-dimensional folder classification.

  labelText:'tutorial' AND labelText:'componentes?
- Visually:
  root ·············· │                               class2 
   │                  │                          label2.4┼
   ├ folder1_1 ······ │ x1                               │
   │ │                │                          label2.3┼
   │ ├ folder1_1_1 ·· │ x2                               │
   │ │ │              │                          label2.2┼       Bºdoc2º
   │ │ └ Gºdoc1º····· ┼ x3                               │          · 
   │ │                │                          label2.1┼···Gºdoc1º·
   │ └ folder1_1_2 ·· │ x4                               │      ·   · 
   │                  │                                  └──────┴───·─────┴──...  class1
   ├ folder1_2 ······ │ x5                              ╱ label1.1  ·   ·label1.2
   │                  │                                ╱            ·  ·
   ├ folder1_3 ······ │ x6                            ╱             · ·
   │ │                │                              ╱              ··             
   │ └ Bºdoc2º·····   ┼ x7                          ╳················ 
   ·                  ·                            ╱ label3.1  
   ·                  ·                           ╱ 
                      ^                          .   
                    1-Dimension               class 3

List existing labels
${CONFLUENCE_BASE_URL}/labels/listlabels-alphaview.action?key=${SPACE}  ← All labels
${CONFLUENCE_BASE_URL}/labels/listlabels-heatmap.action?key=${SPACE}    ← Hot labels
Meeting report Template
- Date 
- Title     
- Atendees:
  - Atendee 1
  - Atendee 2
  - ...

- Discusion Points:
  - Topic 1.
  - Topic 2.
  - ...

- Agreed Actions:
  - Action 1: ...        Deadline: YYYY/mm/dd 
  - Action 2: ...    First Review: YYYY/mm/dd
  - ...
(Sofware Component Spec Template)
Category   : front-end | back-end | Middleware | Service | ...

Description: List of Main responsibilies (features) of this component

Constrains : The list of consraints applying to this component:

Composition: This component reuses/integrates the following building
             blocks / products:
             - Commercial Product Name, including version
             - Open Source project name, including version

Licensing  : "Enumerate licensing options for building blocks/ libs:
             - Commercial/Open-source; Needed to assess if any OOSS
               license prohibtis commercialization of final product

Inputs     : - Raw data files (e,g CSV, DBF,...)
             - Online data streams (e.g, Twitter API)
             - Structured data (JSON, XML, protobuff,...)
             - ...

Outputs    : - Structured data (e.g, JSON, XML,...)
             - Unstructured data (Doc, image, pdf,...)
             - ...

Interactions: [Enumerate expected interactions with other components]
              - Receive stream of events from Kafka hub
              - Store "XXX" data in DDBB

Sofware     : Ex: this components requires the following base-software
Requirements      to operate:
              - GNU/Linux AMD64 ....
              - Docker/Swarn (min.version)

Hardware    : - Recomented: 16 Gb RAM, ...
              - Minimal:     2 GB RAM ,...
Error Management
- Define generic "messages" to indicate "throws".
- Classify errors by:
  - Retry now   (weird conditions,...).
  - Retry later.
  - Do not retry.
- Classify errors by:
  - Internal to be fixed by Admins
  - Internal to be developers ("asserts in code")
  - External (to be fixed by users -or software-) sending 
    the input. In this case, most probably retry doesn't
    makes sense until client fixes its issues.
Taxonomy/Research methodology
Extraced from "A systematic literature review of blockchain-based
applications:Currentstatus,classification and open issues"
Fran Casinoa, ThomasK. Dasaklisb,Constantinos Patsakisa,

To provide a transparent, reproducible and scientific literature 
review of blockchain-based applications, the process suggested by 
Briner and Denyer (2012)as well as some features of the PRISMA 
statement (Moher et al., 2009) have been adopted. 
The overall methodological approach includes the following steps:
1. Identify the need for the review, prepare aproposal for the review, and develop the review protocol.
2. Identify the research, select the studies, assess the quality, take notes and extract data, synthesise the data.
3. Report the results of there view.
3.1. Locating studies 
  To address our primary research question, a systematic literature search 
  was carried out during January 2018 without time frame restrictions 
  and the results were subsequently updated during April 2018.
     Scopus was used as the main scientific database in which the term 
  “blockchain” was searched in all articles’titles. Additional 
  searches using the referenced works of relevant articles were also 
  conducted (snowball effect). Relevant “grey literature”, 
  including unpublished research commissioned by governments or 
  private/public institutions was also identified through electronic 
  searches. To identify the published grey literature, we evaluated the 
  first 200 hits from Google. Alternate terms for “blockchain” and 
  “application” were used during the search. The hand-search 
  reference list in several reports resulted in additional grey 
  literature, particularly research and committee reports or policy 
  briefs from both private and public sector 
  institutions/organizations. A flowchart of the strategy implemented 
  is presented inFig. 2. In addition, several refinement features of 
  Scopus were extensively used (multiple refinements of results  
  following the context of specific articles,related documents search, 
  etc.). When the abstract of a particular study was not available, the 
  full article was retrieved and assessed for relevance.All potentially 
  relevant articles were retrieved in fulltext.

3.2. Study selection and evaluation
      The eligibility of the retrieved literature was evaluated  
   independently by the authors based on a set of 
      predefined exclusion and inclusion criteria (seeTable 2). Some 
   exclusion criteria were used before introducing the literature in the 
   bibliographic manager(language, subject area and document type 
   restrictions). Initially, the abstracts of all research papers and 
   introductory sections of grey literature were assessed. Articles 
   meeting one of the exclusion criteria were excluded and sorted by 
   reason of exclusion. Afterwards,a full-text review also took place, 
   and some additional articles were excluded from the study documenting 
   the reasons for exclusion. Any discrepancy with respect to the 
   relevance of reviewed articles was resolved through discussion until 
   consensus was reached. Overall, several studies were excluded because 
   they were focused primarily on the technical aspects of blockchain 
   tech-nology and/or blockchain architecture. Articles not fitting the 
   inclusion criteria were set aside and consequently used in the 
   in-troduction of this article.

   3.3. Analysis and synthesis
   All articles and reports meeting the inclusion criteria were 
entered into a qualitative analysis software (MAXQDA11), and data 
were analysed in emerging themes. The reviewers independently carried 
out the thematic content analysis. Afterwards, the three clusters of 
coded segments were compared(rate of consensus was approximately 
75%), agreed upon for all articles and summarised in one set of 
themes and sub-themes

                      Bibliographic database search                                     +       Grey Literature
+------------+    +------------------------------+                                      |
|            |    |Records retreived. (568)      |                                      |     +-----------+
|Identifi-   |    |                              |                                      |     |Records    |
|cation      |    |Additional articles included  |       +----------------+             |     |retrieved  |
|            |    |through bibliographic trail   |       |Exclusion of NOn|             |     |from other |
|            |    |search and reference list (37)+-----˃ |English language|             |     |source(170)|
+------------+    +------------------------------+       |literature(39)  |             |     +-----------+
                                                         +----------------+             |
+------------+    +-------------------------------+     +----------------------+        |
|Screening   |    |Records imported into          +----˃+ Duplicates removed(9)|        |     +-------------+      +--------------+
|            |    |citation manager (566)         |     +----------------------+        |     |Records      |      |Records       |
|            |    +------------+------------------+                                     |     |screened with+-----˃+excluded based|
|            |                 |                        +------------------------+      |     |check-list 2 |      |on ...(116)   |
|            |                 v                    --˃ | Articles excluded based|      |     |(170)        |      +--------------+
|            |    +------------+-----------------+  |   | on Title(22)           |      |     +-------------+
+------------+    |Title and Abstract screening  +--+   +------------------------+      |
                  |(557)                         |      +-------------------------+     |
                  |                              +-----˃+ Articles excluded based |     |
                  +------------------------------+      | on Abstract(42)         |     |
                                                        +-------------------------+     |
+------------+    +-------------------------------+                                     |
|Eligibility |    |Full-text articles             |     +-------------------+           |
|            |    |assesed for eligibility        |     | Full-text articles|           |     +------------------------------+
|            |    |(292)                          +----˃+ exclude(32)       |           |     |Number of reports included(54)|
+------------+    +-------------------------------+     +-------------------+           |     +--+---------------------------+
                                                                                        |        |
 Inclusion                                                                              |        |
                  +-------------------------------+                                     |        |
                  |Number of articles included    |                                     +        |
                  |(260)                          |                                              |
                  +------------+------------------+                                              |
                               |                                                                 |
                               |                                                                 |
                               v                                                                 v
                     |Total records included in qualitative analysis (314): 260 articles and 54 report|

˂  ˃

* MAXQDA is a world-leading software package for qualitative and 
mixed methods research. Analyze all kinds of data – from texts to 
images and audio/video files, websites, tweets, focus group 
discussions, survey responses, and much more. Developed by and for 
researchers, MAXQDA is at once powerful and easy-to-use, innovative 
and user-friendly, as well as the only leading QDA software that is 

Qualitative Data Analysis Soft (QDAS)
- Computer-assisted (or aided) qualitative data analysis software 
  (CAQDAS) offers tools that assist with qualitative research such as 
  transcription analysis, coding and text interpretation, recursive 
  abstraction, content analysis, discourse analysis,[1] grounded theory 
  methodology, etc. 

- CAQDAS is used in psychology, marketing research, ethnography, public 
  health and other social sciences. The CAQDAS networking project[2] 
  lists the following tools a CAQDAS program should have:
  - Content searching tools
  - Coding tools
  - Linking tools
  - Mapping or networking tools
  - Query tools
  - Writing and annotation tools
User Store classification:
Classify project stories according detailing what is
provided by the solution in terms of:
- Operational Efficiency 
  - Current Problems solved
  - savings:
  - proffits:
  - Time 
  - Resources:
    - Staff:
    - Others:
  - Automation gain
  - Security gain
  - Simplification gain
- Adaptation to current context
- Information gain:
  - trust-gain
  - transparency-gain
  - Risk-reduction

- Resilience

Soft.Development Estimation Template
                                     │ estimated  │
                                     │ Hours/Days │ Risks(Rº*1 WARN, WARN,  WARN:º)
                                     │────────────│ ─────────────
  Functional Analysis ·············· │            │
  └ User Stores / Sequence Diagrams· │            │
  └ GUI definition ················· │            │
  └ Privacy/Security Definition ···· │            │
                                     │            │
  Module 1: Middleware API           │            │
  └ API Swagger Definition ········· │            │
  └ Implementation                   │            │
    └ Core REST API Server ········· │            │
      └ Logic ······················ │            │
      └ Error Control, filters ····· │            │
  └ Documentation ·················· │            │
                                     │            │
  Module 2: Front-End:               │            │
  └ Control cli Shell ·············· │            │
  └ Async notification system ······ │            │
  └ Documentation ·················· │            │
                                     │            │
  Module 3: BackEnd                  │            │
  └ Development                      │            │
    └ Functional Analysis ·········· │            │
    └ Functional Tests    ·········· │            │
    └ Java Development ············· │            │
  └ Documentation ·················· │            │
                                     │            │
  Infrastructure:                    │            │
  └ CI Environment ················· │            │
    └ Git ·························· │            │
    └ Build Pipelines ·············· │            │
    └ Backups ······················ │            │
    └ Basic Monitoring ············· │            │
  └ Cloud Environment ·············· │            │
    └ Admin tasks ·················· │            │
    └ Deployment Module 1 ·········· │            │
    └ Deployment Module 2 ·········· │            │
      ...                            │            │
  └ Documentation ·················· │            │

  NOTE that the Risk column can weight more than the Estimation column
  in context with high uncertainty as we switch from industrialized
  (automated repetitive tasks) to development of new Software Solutions
  with non-scoped definition about Use-stories, technology stack,...
  Since software is easy to industrialize, many projects fall under the
  second alternative and so Risks must be taken as reference over
- CalVer is a versioning convention based on your project's release 
  calendar, instead of arbitrary numbers.

_ Versioning gets better with time.

- For maintainers, versioning allows us to specify precise dependencies 
  within an ever-expanding ecosystem. For sellers and promoters, a 
  project's version is a dynamic part of a brand. For all of us, 
  versioning lets us reference the past while upgrading to the future.

- Different projects use different systems for versioning, but common 
  practices have emerged. For instance, point-separated numbers (e.g., 
  3.1.4) are all but given. Another common versioning pattern 
  incorporates a time-based element, usually part of the release date.

- This date-based approach has come to be called Calendar Versioning, 
  or CalVer for short.
Business Management
Business Research sources
- Gartner
- Forrester
- Oxford Economics
- Euromonitor International
- Everest Group Research, ...
- Google Scholar (academic articles). 
- ...
H2020 Expected Project Results

H2020 Result: Communication / Dissemination / Explotation
European Commision Project Results
                                  / \
                                 /   \
      │Research   │             Research          │  MS, EU     │
      │Communities│             Roadmaps          │policiymakers│
                                 │   │                
                  Data           │   │          Policy
                     ┌───────────┘   └─────────┐recommendations   
                     │                         │
                     │                         │
              Publications                     │  Reports
                     │                         │
                     │                         │
     ┌───────────────┘                         └───────────────┐
    { Software                          (Collaboration)platforms}
     \───────────────┐                         ┌───────────────/
                     │                         │
                     │                         │
              Prototypes                    Skills,
                     │                      Knowledge
                     │                         │
                     └───────────┐    ┌────────┘
                   Pre─standards │    │     Educational
                                 │    │      Materials
      │Industry, │               Code Of         │Civic society,│
      │innovators│               Conduct         │ citizens     │
                                 \   /
                                  \ /

- Exploitation: The utilisation of results in further research activities 
  other than those covered by the action concerned, or in developing, 
  creating and marketing a product or process, or in creating and 
  providing a service, or in standardisation activities.*

  - But why does Dissemination/Explotation not always happen? 
    or barriers to effective D&E in projects
    o Perceiving dissemination and exploitation as "tick boxes", not 
      important for the "real work" of the project
    o Confusion between communication, dissemination, 
      exploitation. Focusing on implementing and validating technical 
      objectives instead of aligning work with the needs of users and 
    o Limited considerations of what can be valuable key results of 
      the project.
    o Lack of skills (or interest) to effectively consider the value 
      and possible benefits of the key results outside "typical" 
    o Lack of knowledge of dissemination and exploitation risks and 
      opportunities, alternative channels and routes, stakeholders, 
      competing solutions.
    o Lack of reflection and joint discussions within the consortia
- Easy Business Intelligence for Project Teams
- eazyBI cloud
- eazyBI for Jira
- eazyBI for Confluence
- Private eazyBI
Decision Model and Notation

See also Goldman Sach implementation in Java:

- Decision Model and Notation (DMN) is a standard published by the 
  Object Management Group.[1] It is a standard approach for describing 
  and modeling repeatable decisions within organizations to ensure that 
  decision models are interchangeable across organizations.

- The DMN standard provides the industry with a modeling notation for 
  decisions that will support decision management and business rules. 
  The notation is designed to be readable by business and IT users 
  alike. This enables various groups to effectively collaborate in 
  defining a decision model:

- the business people who manage and monitor the decisions
- the business analysts or functional analysts who document the 
  initial decision requirements and specify the detailed decision 
  models and decision logic,
- the technical developers responsible for the automation of systems 
  that make the decisions.

- The DMN standard can be effectively used standalone but it is also 
  complementary to the BPMN and CMMN standards. BPMN defines a special 
  kind of activity, the Business Rule Task, which "provides a mechanism 
  for the process to provide input to a business rule engine and to get 
  the output of calculations that the business rule engine might 
  provide"[2][3] that can be used to show where in a BPMN process a 
  decision defined using DMN should be used.

- DMN has been made a standard for Business Analysis according to BABOK v3.[4][5] 
Bitergia (Dev.Analysis)
Bitergia helps you in your understanding, reporting, and decision 
making process regarding community health, project sustainability, 
development efficiency, talent retention and acquisition, content 
creation, developer audience analysis, and more. 
Team tools
- Used by CERN.
- Replacement for Facebook Workplace, ...
Twake: OOSS Kanban Prj Mgn
- focus on Kanban project management methodology.
- Can be used on-line or hosted on premise.
Online Suvey Tools
- SurveyGizmo: 
- Doodle     :
Quality Assurance
ISO 9001,20000-1 families
- quality management systems (QMS) set of standards 
- Aim: Help organizations ensure they meet customer and 
  other stakeholder needs within statutory and regulatory requirements 
  related to a product or service.
- ISO 9000:  fundamentals of quality management systems
  7 quality management principles:

- ISO 9001:  requirements that organizations need to fulfil.
  (certified by 3rd parties)
RºCritics about usefulness exists.º

Non classified