Introdução

Este livro tem como objetivo reunir/compilar os fragmentos de conhecimento/sabedoria utilizados pela profissão de Craftsman - Construtor de Software.

Os temas serão pragmaticamente voltados para o ramo Sistema de Computação, principalmente abordando a disciplina de Arquitetura de Software e Testes com foco nos dialetos da tecnologia Lisp.

Os capítulos descrevem as etapas marco de um fluxo de desenvolvimento de software, considerando uma base sólida como também os aspectos filosóficos e científicos do processo.

A Base

As tecnologias para a construção de software são divididas em: mainstream e acadêmica.

As tecnologias mainstream, tais como Java, .NET, C++, JavaScript, Python, dentre outras..., ditam o mercado de desenvolvimento de software com uma grande variedade de plataformas e ferramentas (tooling), voltadas para os requisitos de desempenho e adaptação para as máquinas atuais - são as linguagens primárias, geralmente utilizadas para a resolução de problemas.

As tecnologias acadêmicas, tais como Haskell, C, dentre outras..., ditam a evolução da tecnologia e possuem uma comunidade especializada e voltada a aprendizagem - são as linguagens secundárias, geralmente utilizadas para a prototipação, prova de conceito e experimentação de ideias.

A base do livro utiliza os dialetos Racket, Clojure e Emacs da tecnologia Lisp através dos livros texto:

  • How to Design Programs (HtDP); e
    • Program
    • Component; e
    • System
  • Structure and Interpretation of Computer Programs (SICP).

=> complemento com os materiais do curso 6.005: Software Construction do Massachusetts Institute of Technology (MIT).

=> todos os livros estão no capítulo Referências.

Dentre os dialetos Lisp estão:

  • Racket;
  • Clojure (JVM, CLR e JS);
    • Clojerl (Erlang);
  • Emacs Lisp;
  • Common Lisp;
  • Guile (Unix);
  • Kawa (JVM);
  • Fennel (Lua);
  • Ferret (Embedded Control Systems);
  • uLisp (Embedded Control Systems);
  • Cloe (Go);
  • Carp (Haskel);
  • Picolisp;
  • Lux (JVM);
  • Hy (Python);
  • Gambit (C);
  • Chicken (C);
  • Bigloo;
  • Shen;
  • ...

Filosofia

A filosofia da construção de software é composta por:

  • Desenvolvimento Guiado por Testes - Test Driven Development (TDD): é uma técnica de desenvolvimento de software da XP, em que os testes são criados antes do código de produção;

  • Desenvolvimento Guiado por Comportamento - Behavior Driven Development (BDD): é uma técnica de desenvolvimento de software da XP, em que os testes são criados em paralelo ao código de produção; e

  • Projeto Orientado a Domínio - Domain Driven Design (DDD): aborda um compilado de experiências aplicadas ao desenvolvimento de software.

Essas ideias são aplicadas como base para as modernas arquiteturas baseadas no Ports-And-Adapters, tais como: Hexagonal, Onion e Clean Architecture.

Ciência

A ciência da construção de software é composta por:

  • Systematic Program Design - SPD: técnica de desenvolvimento de software geral para múltiplos paradigmas, recomendado para grupos com expertise;

  • Visão 4+1: modelagem das visões da arquitetura de software em análise e projeto na Linguagem de Modelagem Unificada - Unified Modeling Language (UML), com aspectos científicos para grupos médios e grandes - definida por Philippe Kruchten no artigo Architectural Blueprints - The "4+1" View Model of Software Architecture em 1995;

  • Metodologia Clean: metodologia apresentada por um conjunto de livros e materiais multimídia com as experiências do autor Robert Cecil Martin - conhecido por Uncle Bob;

  • Effective: representado pelos livros com abordagem semântica e dialética das tecnologias; e

  • Documentação: os famosos docs apresentados pelos desenvolvedores da tecnologia, geralmente no formato online.

Guia

O guia da construção de software são divididas em: individual e grupo.

Individual

  • GTD: em breve;

  • Writer: em breve;

  • Mind Maps: em breve; e

  • Sketch Notes: em breve.

Grupo

  • XP: metodologia ágil de desenvolvimento de software de proposta geral para grupos pequenos e médios;

  • Scrum: em breve;

  • Kanban: em breve; e

  • Lean: em breve.

Fluxo

O livro percorre as atividades da construção de software através de:

Requisitos | Arquitetura | Testes | Código | Metodologia Científica | Referências


Atualização de 12/01/2019

Página: mdssjc.github.io | Repositório: github.com/mdssjc


JVM: Java Virtual Machine.

CLR: Common Language Runtime.

JS: Java Script.

XP: Extreme Programming (Programação Extrema).

results matching ""

    No results matching ""