Project Bootstrapping
Behavior Driven Dev. (BDD)
@[https://en.wikipedia.org/wiki/Behavior-driven_development]

BDD suggests that unit test names be whole sentences starting with a 
conditional verb ("should" in English for example) and should be 
written in order of business value.

Acceptance tests should be written using the standard agile 
framework of a user story:
   """
Oº Being a [role/actor/stakeholder] º
Oº I want a [feature/capability]    º
Oº yielding a [benefit]             º
   """
Work Package
Work package:
- sub-project grouping the smallest-set-of-related-task
  that a project can be split into.

   PROJECT:
   ───────────┬───────────────────┬──────────
     PHASE    │     TASK          │ WORK 
              │                   │ PACKAGE
   ───────────┼───────────────────┼──────────
     Phase 1  │ Deliverable 1.1 ┐ │ WP_1
              │ Deliverable 1.2 │ │ WP_1
              │ Other tasks     ┘ │ WP_1
              │ Deliverable 1.3 ┐ │ WP_2
              │ Deliverable 1.4 │ │ WP_2
              │ Other tasks     ┘ │ WP_2
   ───────────┼───────────────────┼──────────
     Phase 2  │ Deliverable 2.1 ┐ │ WP_3
              │ Deliverable 2.2 │ │ WP_3
              │ Deliverable 2.3 ┘ │ WP_3
   ───────────┼───────────────────┼──────────
     Phase 3  │ Deliverable 3.1 ┐ │ WP_4
           3  │ QA Testing      │ │ WP_4
           3  │ Marketing tasks ┘ │ WP_4
   ───────────┴───────────────────┴──────────
     └─────┘    └──────┬──────┘     └┬─┘ 
                       └───────┬─────┘ 
     Ordered       Tasks grouped in WP by:
     in time        - knowledge/discipline.
                    - time needed
                    - Shared resouces
                      - geographical area.
                      - Shared knowledge.
                      - ...
                





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: @[https://blog.bradfieldcs.com/you-are-not-google-84912cf44afb]

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

  - 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 
    one.
  - 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?
"""
Agile
  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 
  timeframes.  

• "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
diagrams            
                    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, ,,,
                    ChemEng
                    Chronogram
                    Circuit
                    Civil
                    Cybernetics
                    Database
                    Electric
                    ER        : Entity  Relantionship
                    Flowchart
                    FS
                    Gane and Sarson
                    GRAFCET
                    Jigsaw
                    Ladder
                    Lights
                    Logic
                    Map,Isometric
                    MES
                    Network (Cisco Network)
                    Pneumatic/Hydraulic
                    RE-i*
                    RE-Jackson
                    RE-KAOS
                    SADT/IDEF0
                    SDL

Graph Diagrams      (Hyper)relational models.
                    Show entities as "circles" connected by arrows representing
                    relationships among them.

Diagram Software
           
- UML: sequence diagrams, components, state-machine, ...
  - https://mermaid-js.github.io/mermaid-live-editor/
    - Diagrams: Sequence, ER,Class, State, Flow Chart, User Journey,
    - Charts  : Gantt Charts, Pie Charts.
    - Syntax: 
      https://mermaid-js.github.io/mermaid/#/
  - https://www.planttext.com/
    -  allows ASCII art output (C⅋P as text, git friendly, ...)
  - https://www.websequencediagrams.com/
    - 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:
    https://github.com/amotzg/dia-postgresql : convert diagrams to PostgreSQL SQL syntax.
    https://github.com/chebizarro/postdia    : Convert PostgreSQL diagram to/from  (tedia2sql) UML dia diagram
    https://launchpad.net/diascla/           : 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).

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

- http://asciiflow.com/: 
  Extremely simple but very power editor to include text-based diagrams
  in mail, chats, working documentaion, ...
 
- http://www.umldesigner.org/
  Graph. tool to edit/visualize UML models based on Eclipse Sirius.
i
- Gliffy  : General Purpose on-line (web). Non-free for commercial use.
Agile concepts, Nomenclature
@[http://www.dummies.com/how-to/content/agile-project-management-for-dummies-cheat-sheet.html]
@[ttp://www.agilemanifesto.org]
@[http://www.scrummanager.net/files/sm_proyecto.pdf]
@[http://www.jandwyer.com/wp-content/uploads/2012/09/Lean-Primer-Article.pdf]
@[https://www.infoq.com/minibooks/scrum-xp-from-the-trenches-2]
@[http://www.scrumprimer.org/]
@[https://www.infoq.com/minibooks/kanban-scrum-minibook]
@[http://leankanban.com/wp-content/uploads/2016/06/Essential-Kanban-Condensed.pdf]

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

- 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.

SCRUM vs KANBAN: 
  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

  Kanban:
   * 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. 
     PLAN MODE:
   * Do NOT uses a PLAN MODE
Why I hate Scrum
https://dzone.com/articles/why-i-hate-scrum?edition=618291
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.

  Conclusion:
  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
Features:
- Jira Issues and Dashboards
- Agile concepts
- Jira Agile Plan, Work, Track

JIRA WORKFLOW SUMMARIZED:
  - 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.


JIRA ISSUES and DASHBOARDS:
   - Dashboards allows for example to follow  others people work.

JIRA E-R Diagram
REF: @[https://www.communardo.de/wp─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 @[https://dac-lf.prod.atl-paas.net/server/jira/platform/attachments/4227160/45525621.pdf]
PROJECT        ISSUE                  RESOLUTION
-------        --------------------   ----------
ID             ID                     ID
PNAME          PKEY                   SEQUENCE
URL            ISSUENUM               PNAME
LEAD           PROJECT                DESCRIPTION
DESCRIPTION    REPORTER               ICONURL
PKEY           ASSIGNEE
PCOUNTER       CREATEOR
ASSIGNEETYPE   ISSUETYPE
AVATAR         SUMMARY
ORIGINALKEY    DESCRIPTION
PROJECTTYPE    ENVIRONMENT
               PRIORITY
               RESOLUTION                   
               ISSUESTATUS                  
COMPONENT      CREATED                      
---------      UPDATED                      
ID             DUEDATE                      
PROJECT        RESOLUTIONDATE               
CNAME          VOTES                        
DESCRIPTION    WATCHES
URL            TIMEORIGINALESTIMATE
LEAD           TIMEESTIMATE
ASSIGNEETYPE   TIMESPENT
               WORKFLOW_id
               SECURITY

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

- CreateºEpicsº

NOTE: ºCOMPONENT vs EPICº
┌──────────────────────────────────────────────────────────────────────────────┐
│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".                     │                                   │
└──────────────────────────────────────────────────────────────────────────────┘
@[https://www.linkedin.com/pulse/stories-vs-epics-components-modelling-product-jira-piotr/]


- 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. 
Documentation
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
diagrams            
                    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, ,,,
                    ChemEng
                    Chronogram
                    Circuit
                    Civil
                    Cybernetics
                    Database
                    Electric
                    ER        : Entity  Relantionship
                    Flowchart
                    FS
                    Gane and Sarson
                    GRAFCET
                    Jigsaw
                    Ladder
                    Lights
                    Logic
                    Map,Isometric
                    MES
                    Network (Cisco Network)
                    Pneumatic/Hydraulic
                    RE-i*
                    RE-Jackson
                    RE-KAOS
                    SADT/IDEF0
                    SDL

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 @[https://www.planttext.com/]

             Quickly generate sequence diagrams from text. 
             Ex: (Using  https://www.planttext.com/)

             ──────────────────  -→  ─────────────────────────────
             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, ...
            http://asciiflow.com/

- Web Sequence Diagram: On-line, free.

- http://www.umldesigner.org/
  Graph. tool to edit/visualize UML models based on Eclipse Sirius.

- Gliffy  : General Purpose on-line (web). Non-free for commercial use.
Reference Classification
- Next generic categorization can be use to label content in CMS
 (See section in Confluence), JIRA, Git/Git-Commits, email and of cours in
 single page book projects.

  CLASSIFICATION   labels ("Coordinates in dimension)                         
  DIMMENSION                                                                  

  Generic          gen.TODO
                   gen.important

  - soft_arch:     soft_arch.AAA
                   soft_arch.API
                   soft_arch.secrets
                   soft_arch.performance
                   soft_arch.scalability
                   soft_arch.standards
                   soft_arch.security
                   soft_arch.devops
                   soft_arch.infrastructure.
    
  
  QA) qa.unitests , qa.functionalTests, qa.IntegrationTest

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

  Environment     DEV, INT, ACC/PRE, PRO                                          

  Component       component1, 2,...

  Service          diploma , notarization , essif                              
  (Solution/Product)

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


  documentType:  dataflow, deliverable, analysis,
                 functional, must-read, tutorial, dataflow, configuration, procedure, 
                 minutes, reference,  comparative, code_snippet,
                 software, news, report,  trace(log), code, apendix, diagram
                 template, draft, 
                 meeting.input, meeting.output
                 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, ...                    
  Language                                                                    

  difficulty  : level0 → ... → level10                                      
                (Reader-expected-expertise)

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

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

  PM            - PM.stackholder
 (Project       - PM.funding
  Management):  - PM.planning
                - PM.estimate
                - PM.TODO
                - PM.TODO.DEADLINE
                - PM.DONE
                - PM.sprint
                - PM.WorkPackage
                - PM.urgent
                - PM.blocking
                - PM.task
                - PM.task.state
                  → PM.task.state.backlog
                  → PM.task.state.in_progess
                   → PM.task.state.review
                    → PM.task.state.aproved
                     → PM.task.state.published     (doc related)
                      → PM.task.state.closed
                      → PM.task.state.deprecated   (doc related, Outdated/Deprecated/Replaced)

  HHRR (Human Resources)
  - HHRR.expenses
  - HHRR.Teleworking
  - HHRR.timelabor
  - HHRR.TimeLavor
  - HHRR.travel
  - HHRR.who_is_how
  - HHRR.WhoIsWho
  - HHRR.bill
  - HHRR.delivery_note

Confluence Notes
Advanced Search (CQL)
@[https://developer.atlassian.com/server/confluence/advanced-searching-using-cql/#cql-operators]
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="$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 

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

AND|NOT: combine multiple clauses

Exs: 
              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
  favorite

Dates:
   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
    yyyy/MM/dd
    yyyy-MM-dd
    now("-4w")
    endOfDay()
    endOfMonth()
    endOfWeek()
    endOfYear()
    startOfDay()
    startOfMonth()
    startOfWeek()
    startOfYear()

Ex:
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
@[https://confluence.atlassian.com/doc/add-remove-and-search-for-labels-136419.html]
- 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
  - ...
Peer to peer template
┌─────────────────────────────────────────────────────────────────────
│ Introduction:
│ 
│  Peer Review process for its internal quality assurance for 
│ deliverables to assure consistency and high standard for documented 
│ project results.
│ 
│ - Instructions:
│     The Peer Review is processed individually by selected reviewers. 
│   The allocated time for the review is about two weeks. The author of 
│   the document has the final responsibility to collect the comments and 
│   suggestions from the Peer Reviewers and decide what changes to the 
│   document and actions are to be undertaken.
│   Reviewers:
│ 
│ - [Mr./Ms. NAME] – [ORGANISATION]
│ 
│ 
│ - Overall Peer Review Result:
│   - Deliverable is:
│     o Fully accepted
│     o Accepted with reservation
│     o Rejected unless modified as suggested
│     o Fully rejected
│   
│   - Please give an overall rating of this deliverable in a scale from 
│     (1: very poor to 5: very good) : _______
│ 
│ - Suggested actions:
│   1. The following changes should be implemented ...
│   2. Specify missing chapters / subjects ...
│   3. Required changes on deliverable essence and contents ...
│   4. Further relevant required improvements ...
│ ===========================================================
│ - Comments of Mr/Ms X
│   - GENERAL COMMENT 
│     These refer to:
│     • Deliverable contents thoroughness
│     • Innovation level
│     • Correspondence to project and programme objectives
│ 
│     (...comments...)
│   - SPECIFIC COMMENTS
│ 
│     - Topic A: Relevance
│       - Reviewer comment
│         ...
│       - Author response
│         ...
│     - Topic B: Relevance
│       - Reviewer comment
│         ...
│       - Author response
│         ...
│     - Topic C: Methodological framework soundness
│       - Reviewer comment
│         ...
│       - Author response
│         ...
│     - Topic D: Quality of achievements
│       - Reviewer comment
│         ...
│       - Author response
│         ...
│     - Topic E: Quality of presentation of achievements
│       - Reviewer comment
│         ...
│       - Author response
│         ...
│     - Topic F: Deliverable Layout / Spelling / Format
│       - Reviewer comment
│         ...
│       - Author response
│         ...
└─────────────────────────────────────────────────────────────────────
(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]
              Ex:
              - 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, ...
Requirements
              - 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 
100% 

Qualitative Data Analysis Soft (QDAS)
@[https://en.wikipedia.org/wiki/Computer-assisted_qualitative_data_analysis_software]
- 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
Templates
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 ·················· │            │

Rº*1 WARN, WARN,  WARN:º
  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
  estimations.
CalVer.org
- 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
- IDC
- Everest Group Research, ...
- Google Scholar (academic articles). 
- ...
H2020 Expected Project Results
https://ec.europa.eu/info/funding-tenders/opportunities/portal/screen/support/glossary

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     │
                                 \   /
                                  \ /
                                   v

- 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 
      stakeholders.
    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" 
      community.
    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
EazyBI
- Easy Business Intelligence for Project Teams
- eazyBI cloud
- eazyBI for Jira
- eazyBI for Confluence
- Private eazyBI
Decision Model and Notation
@[https://en.wikipedia.org/wiki/Decision_Model_and_Notation]

See also Goldman Sach implementation in Java:
@[https://github.com/goldmansachs/jdmn]

- 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
MatterMost/Discourse
- Used by CERN.
- Replacement for Facebook Workplace, ...
Twake: OOSS Kanban Prj Mgn
@[https://itsfoss.com/twake-app/]
- 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
https://en.wikipedia.org/wiki/ISO_9000
- 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