Pular para o conteúdo

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.

  • 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
_eidos/Framework.md
### 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.

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
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
specs/playback/watch-a-video.md
---
id: watch-a-video
title: Watch a Video
summary: play a video reliably, signed in or not, adapting to the connection.
type: feature
domain: playback
status: Intake
depends_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 start
or stalls, the viewer leaves — so what "playing a video" means, and what a
viewer can count on, is the first thing to pin down. It must hold whether the
viewer is signed in or arrived from a shared link.
### Assumptions
Assuming adaptive-bitrate delivery over the CDN is available and affordable
at 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.

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 →

A raiz inteira está no repositório: examples/Blueprint/.