Um produto de software
O exemplo desenvolvido que o Eidos distribui: um subconjunto do YouTube: assistir a um vídeo, retomá-lo, publicar em um canal, se inscrever em um. Produto o bastante para ser real, pequeno o bastante para ler de uma sentada.
A árvore
Seção intitulada “A árvore”DirectoryBlueprints/
- README.md
Directory_eidos/
Directoryshapes/
- frame.architecture.md
- frame.audience.md
- frame.criteria.md
- frame.market.md
- spec.full.md
- spec.micro.md
Directoryroles/ framework-owner, developer, designer, project-manager, stakeholder
- …
- Framework.md
- me.md pessoal, no gitignore
Directoryframes/
- index.md
- architecture.md
- audience.md
- criteria.md
- market.md
Directoryspecs/
- index.md
Directoryplayback/
- watch-a-video.md
- resume-playback.md
Directorychannels/
- upload-a-video.md
- subscribe-to-a-channel.md
- roadmap.md um documento de nível superior
- blueprint-map.canvas gerado
O que o Framework declara
Seção intitulada “O que o Framework declara”### specs
The product's units, one per blueprint, grouped by domain.
- **Leaf:** [specs/index.md](../specs/index.md)- **Flavors:** - [full](shapes/spec.full.md) — the complete spec shape (default). - [micro](shapes/spec.micro.md) — Intent, Open Questions, ACs, Out of Scope.- **Canvas:** card from `## Intent`- **Domains:** - **playback** — watching a video, and picking up where you left off. - **channels** — publishing to a channel, and following one.Dois domínios, então specs/ tem duas subpastas e cada spec carrega
domain: playback ou domain: channels coincidindo exatamente com a pasta dela.
O shape de spec
Seção intitulada “O shape de spec”spec.micro |
spec.full |
|---|---|
## Intent |
## Intent |
### Assumptions |
### Assumptions |
| — | ### Implementation Notes |
## Open Questions |
## Open Questions |
## Behaviors & Acceptance Criteria |
## Behaviors & Acceptance Criteria |
| — | ### Functional · ### Performance · ### Design · ### External interface · ### Quality attributes |
## Out of Scope |
## Out of Scope |
| — | ## Dependencies · ## Testing · ## Constraints & Decisions |
As propriedades personalizadas dele
Seção intitulada “As propriedades personalizadas dele”| Nome | Tipo | Applies To | Significado |
|---|---|---|---|
status |
Text | all | Draft / Intake / In Progress / Done / Archived / Deprecated |
date_created · date_modified |
Date | all | YYYY-MM-DD |
tags |
List | all | Tags livres |
domain |
Text | specs |
O agrupamento, coincidindo com a subpasta |
depends_on |
List | specs |
Blueprints de que este precisa, cada um um link |
type |
Text | specs |
Rótulo leve: feature, capability, integration |
Um Blueprint real
Seção intitulada “Um Blueprint real”---id: watch-a-videotitle: Watch a Videosummary: play a video reliably, signed in or not, adapting to the connection.type: featuredomain: playbackstatus: Intakedepends_on: [video-catalog, cdn-delivery]tags: [playback]---
# Watch a Video
## Intent
A view is the core action of the whole product. If a video is slow to startor stalls, the viewer leaves — so what "playing a video" means, and what aviewer can count on, is the first thing to pin down. It must hold whether theviewer is signed in or arrived from a shared link.
### Assumptions
Assuming adaptive-bitrate delivery over the CDN is available and affordableat launch scale — if it isn't, the whole playback approach changes.
## Open Questions
- How long should a signed playback URL stay valid before it has to refresh?- Does a view count on play start, or only after a watch-time threshold?
## Behaviors & Acceptance Criteria
### Functional
- **AC1:** A viewer opens a video and the player loads with its title, channel, and controls.- **AC3:** A signed-out viewer who opens a shared link can still watch.
### Quality attributes
- **AC7:** A stalled segment recovers by dropping quality rather than stopping playback.- **AC8:** A view is counted at most once per viewer per video within a window — replays and seeks don't inflate it.
## Out of Scope
- No comments, ratings, or next-up recommendations on the watch page.O que os não-objetivos estão fazendo
Seção intitulada “O que os não-objetivos estão fazendo”A spec irmã, resume-playback.md, carrega uma linha:
## Out of Scope
- Cross-account resume. A shared TV is one device, not one person.Doze palavras que impedem que um pedido de funcionalidade plausível seja registrado como bug, registram o raciocínio para que um leitor futuro consiga ver se ele ainda vale, e encerram uma discussão antes que ela aconteça. Por que os não-objetivos são os que mais pesam →
Leia por completo
Seção intitulada “Leia por completo”A raiz inteira está no repositório:
examples/Blueprint/.
A seguir
Seção intitulada “A seguir”- Um programa de pesquisa: a mesma máquina, outras palavras.
- Um livro