Pagbabalik-tanaw sa AWS re:Invent

Spec-Driven Development kasama si Kiro (DEV314)

Serye ng Pagbabalik-tanaw

Mga Tala ng Sesyon

Panimula sa Kiro at Spect Driven Development

Pangkalahatang-ideya

  • Ang Kiro ay isang bagong agentic IDE na inilabas kamakailan, na nagbibigay-diin sa Spect Driven Development.
  • Nilalayon nitong pahusayin ang kalidad ng code at suriin ang mga proseso sa pamamagitan ng mga structured na daloy ng trabaho.
  • Naging tanyag ang mga IDE para sa mga pinagsama-samang tool tulad ng mga compiler at debugging.
  • Lumitaw ang mga editor ng AI, na nagsimula sa mga pagkumpleto ng code at umuusbong sa mga karanasang ahente.
  • Pinangangasiwaan na ngayon ng mga developer ang mga ahente ng AI para sa paggawa ng code at pagsusuri, pagpapanatili ng kontrol.
  • Vibe Coding vs. Spect Driven Development:
  • Ang vibe coding ay nagsasangkot ng mabilis na prototyping ngunit kulang sa tradisyonal na SDLC lifecycle.
  • Ang Spect Driven Development ay nagpapakilala ng isang structured na daloy ng trabaho mula sa mga kinakailangan hanggang sa output, na tumutuon sa paunang pagpaplano upang mapabuti ang focus ng modelo at kalidad ng output.
  • Spect Driven Development Workflow:
  • Nagsisimula sa mga kinakailangan, na sinusundan ng disenyo, listahan ng gawain, at pagpapatupad.
  • Nagbibigay-daan sa umuulit na pagpipino hanggang sa makamit ang ninanais na output.
  • May kasamang mga hook para sa pagpapatunay ng mga pagbabago, tulad ng pagsuri sa pagbabaybay at pagpapatupad ng mga prinsipyo ng coding.

AI Mga Editor at ang Ebolusyon ng Software Development

AI Mga editor

  • Ebolusyon tungo sa mas maaayang karanasan kung saan ang mga developer ay naglalagay ng natural na wika, at AI nag-e-edit ng maraming file.
  • Pangunahing pagbabago: Ang mga developer ay nagtuturo ng mga ahente sa may-akda at suriin ang code, na pinapanatili ang kontrol sa daloy ng trabaho.
  • Vibe Coding:
  • Sikat na daloy ng trabaho kung saan nagsusulat ang mga developer ng mga prompt, AI ay bumubuo ng code, at umuulit ang cycle.
  • Epektibo para sa mabilis na prototyping ngunit walang tradisyonal na SDLC lifecycle, na humahantong sa mga hamon sa konteksto at paggawa ng desisyon.
  • Pagbuo ng Spec Driven:
  • Ipinakilala upang tugunan ang mga hamon ng vibe coding sa pamamagitan ng pagbibigay-diin sa paunang pagpaplano.
  • Structured workflow mula sa mga kinakailangan hanggang sa output, na nakatuon sa mas mahusay na focus ng modelo at kalidad ng output.
  • Kasama sa daloy ng trabaho ang mga kinakailangan, disenyo, listahan ng gawain, at pagpapatupad, na nagpapahintulot sa umuulit na pagpipino.
  • Tinutugunan ang isyu ng "AI" sa pamamagitan ng pagsasama ng mga kawit para sa pagpapatunay ng mga pagbabago, na tinitiyak ang kalidad ng code.

Spect Driven Development

Hooks para sa Pagpapatunay ng Mga Pagbabago

  • Ang Kiro ay nagsasama ng mga kawit upang patunayan ang mga pagbabago sa panahon ng proseso ng pagbuo.
  • Kasama sa mga halimbawa ang mga spell checker para sa dokumentasyon, mga pagsusuri sa tono at istilo, at pagpapatupad ng mga prinsipyo ng coding tulad ng isang prinsipyo ng responsibilidad para sa mga bahagi ng UI.
  • Konsepto ng App ng Naghahanap ng Trabaho:
  • Pangunahing ideya: Tugunan ang mas malawak na aspeto ng paghahanap ng trabaho na higit pa sa paghahanda sa pakikipanayam, kabilang ang istilo, tono, at aktwal na pagganap ng pakikipanayam.
  • Elevator pitch: Ang mga user ay nag-log in, nag-set up ng isang profile, at nakikibahagi sa paghahanda sa pakikipanayam na may daloy ng tanong-sagot, na tumatanggap ng parehong qualitative feedback at isang quantitative na marka sa dulo.

Pangkalahatang-ideya ng Kiro Interface at Mga Tampok

Kiro Interface

  • Pangkalahatang-ideya ng isang bagong app na may naka-install na Tailwind CSS.
  • Kiro Menu:
  • Mga kawit ng ahente: Mga proseso sa background na na-trigger ng mga kaganapan tulad ng pag-save o pagtanggal ng file, kapaki-pakinabang para sa pag-update ng dokumentasyon o lokalisasyon.
  • Pagpipiloto ng ahente: Mga file ng panuntunan para sa mga pamantayan sa coding at disenyo, na awtomatikong nabuo batay sa kasalukuyang estado ng application.
  • Mga Detalye: Structured workflow mula sa mga kinakailangan hanggang sa output, na tinitiyak ang isang malinaw na landas mula sa ideya hanggang sa pagpapatupad.
  • MCP: My Code Partner server, na nagbibigay-daan sa pagsasama sa iba't ibang AWS na serbisyo at produkto, na may mga kamakailang pagpapahusay para sa mas madaling pag-install.
  • Mga Ahente Hooks:
  • Available ang mga pre-built hook para sa mga karaniwang sitwasyon, na may kakayahang umangkop upang tukuyin ang ilang uri ng file.
  • Pagpipiloto ng Ahente:
  • Awtomatikong nabuo ang mga steering file batay sa kasalukuyang estado ng application.
  • Halimbawa: Mga produkto at tech na file na ginawa para sa isang Vite web application na may TypeScript at Vite.
  • MCP Mga Server:
  • Patuloy na pagpapalawak ng listahan ng mga MCP server para sa iba't ibang serbisyo at produkto.
  • Kamakailang karagdagan: One-click na pag-install para sa MCP server sa pamamagitan ng kiro.dev.

Spect Driven Development sa Kiro

Pangkalahatang-ideya

  • Ang Spect Driven Development ay ang pangunahing pokus ng usapan, na nagbibigay-diin sa isang structured na daloy ng trabaho mula sa mga kinakailangan hanggang sa output.
  • Sinusuportahan ng Kiro ang iba't ibang AI na modelo (Sonnet 4.5, 4.4, Opus, Haiku) na may feature na awtomatikong pagpili upang piliin ang pinakamahusay na modelo.
  • Paglikha ng App ng Naghahanap ng Trabaho:
  • Gamit ang isang diagram bilang input ng disenyo, sinenyasan si Kiro na gumawa ng app ng naghahanap ng trabaho.
  • Ang proseso ay nagsisimula sa pagbuo ng isang dokumento ng mga kinakailangan batay sa ibinigay na disenyo.
  • Dokumento ng Kinakailangan:
  • Inalis ni Kiro ang paunang prompt sa isang hanay ng mga kinakailangan na tinukoy bilang mga kwento ng user na may pamantayan sa pagtanggap.
  • Nagbibigay ang mga kwento ng user ng format na nababasa ng tao para sa mga kahulugan ng feature, habang ang mga pamantayan sa pagtanggap ay nagdedetalye ng mga detalyeng kailangan para sa pagpapatupad.
  • Mga Kwento ng User at Pamantayan sa Pagtanggap:
  • Kasama sa mga halimbawang kwento ng user ang pag-log in, pamamahala sa profile, at sesyon ng paghahanda sa pakikipanayam.
  • Ang proseso ay nagsasangkot ng pagsusuri sa mga kwento ng user upang matiyak na naaayon ang mga ito sa mga gustong feature bago suriin ang pamantayan sa pagtanggap para sa detalyadong pagpapatupad.

Mga Kinakailangan sa Pagpino at Paglipat sa Yugto ng Disenyo

Mga Kinakailangan sa Pagsusuri at Pagpino

  • Ang Kiro ay nagbibigay-daan para sa umuulit na pagpipino ng mga kinakailangan. Sa halimbawa, ang ilang mga kinakailangan (1, 2, state persistence) ay inalis, at ang iba (3, 4, 5, 6, 7, 8) ay pinanatili para sa MVP scope.
  • Pagbibigay-diin sa kahalagahan ng pagbalik-balik sa proseso upang matiyak na ang mga kinakailangan ay naaayon sa nais na resulta.
  • Flexibility ng Daloy ng Trabaho:
  • Sinusuportahan ng Kiro ang iba't ibang mga daloy ng trabaho, kabilang ang vibe coding para sa mabilis na prototyping at Spect Driven Development para sa structured na pagpaplano.
  • Maaaring mas gusto ng mga developer ang vibe coding para sa paunang interface at mga pagsasaalang-alang sa feature bago lumipat sa isang mas structured na diskarte.
  • Yugto ng Disenyo:
  • Kapag natapos na ang mga kinakailangan, bubuo si Kiro ng isang dokumento ng disenyo batay sa umiiral nang codebase.
  • Kasama sa yugto ng disenyo ang paglikha ng mga diagram ng arkitektura at mga pagsubok sa ari-arian upang matiyak na natutugunan ng system ang mga tinukoy na kinakailangan.
  • Paulit-ulit na Proseso:
  • Ang proseso ay umuulit, na nagpapahintulot sa mga developer na pinuhin ang mga kinakailangan at disenyo ng mga dokumento hanggang sa sila ay nasiyahan sa kinalabasan.
  • Ang nabuong dokumentasyon ay nagsisilbing mahalagang sanggunian para sa pag-unlad at pagpapanatili sa hinaharap.

Pagsusuri at Pagpapahusay sa Dokumento ng Disenyo

Pangkalahatang-ideya ng Dokumento ng Disenyo

  • Bumubuo si Kiro ng isang dokumento ng disenyo batay sa mga pinong kinakailangan, kabilang ang isang mataas na antas na arkitektura at pangkalahatang-ideya ng bahagi.
  • Gumagamit ang dokumento ng disenyo ng mga diagram ng sirena at markdown para sa malinaw na visualization at dokumentasyon.
  • Mataas na Antas na Arkitektura:
  • Kasama sa arkitektura ang screen ng pagsisimula, screen ng tanong, screen ng mga resulta, lokal na storage para sa pagtitiyaga ng data, at ang audio sa web API para sa pagre-record ng mga tugon sa audio.
  • Component Breakdown:
  • Natukoy ang mga pangunahing bahagi: view ng panimulang screen, view ng screen ng tanong, pagkuha ng estado ng session (mga tanong at tugon), bank ng tanong (MVP), at session ng storage.
  • Pagkilala sa mga Gaps:
  • Natukoy ang mga nawawalang feature: transkripsyon ng audio mula sa mga tugon ng user at detalyadong pagsusuri ng mga resulta.
  • Ang dokumento ng disenyo ay walang mga detalye sa kung paano isa-transcribe ang audio at kung paano bubuo at ipapakita ang mga resulta.
  • Pagpapahusay ng Disenyo:
  • Idinagdag ang mga karagdagang kinakailangan: transkripsyon ng teksto habang nagsasalita ang user at karagdagang pagsusuri para sa mga resulta.
  • Ang kadalian ng pagdaragdag ng mga bagong kinakailangan gamit ang natural na mga senyas ng wika ay naka-highlight, na nagbibigay-diin sa kaginhawahan ng AI-assisted na dokumentasyon.

Pagpapahusay sa Disenyo at Paglipat sa Listahan ng Gawain

Pag-update ng Dokumento ng Disenyo

  • Ang mga karagdagang feature ay idinagdag sa dokumento ng disenyo, kabilang ang transkripsyon ng audio gamit ang Cloud SDK at detalyadong pagsusuri ng mga resulta.
  • Ipinakilala ang checkpoint at restore na functionality upang payagan ang madaling pag-revert sa mga nakaraang estado nang hindi umaasa sa mga version control system.
  • Mga Update sa System Diagram:
  • Na-update ang system diagram upang isama ang serbisyo ng transkripsyon (speech-to-text gamit ang Cloud SDK).
  • Pagbuo ng Listahan ng Gawain:
  • Ang daloy ng trabaho ay gumagalaw sa pagbuo ng isang listahan ng gawain batay sa na-update na dokumento ng disenyo.
  • Kasama sa mga gawain ang paggawa ng mga modelo ng data, pagpapatupad ng serbisyo sa pag-record ng audio, pag-imbak ng pagpapatunay ng tugon, at pagsasama ng AI.
  • Flexibility at Refinement:
  • Ang daloy ng trabaho ay nagbibigay-daan para sa mga manu-manong pag-edit at pagpipino na maisama sa dokumento ng disenyo.
  • Ang mga gawain ay maaaring muling ayusin o bigyang-priyoridad upang tumuon sa mabilis na pagkamit ng isang saklaw na MVP.
  • Mga Opsyonal na Gawain:
  • Ang mga gawain sa pagsubok na nakabatay sa ari-arian ay itinakda bilang opsyonal bilang default, na nagbibigay-daan sa mga developer na tumuon sa mga pangunahing feature bago tugunan ang mga karagdagang pagsubok.
  • Ang listahan ng gawain ay maaaring pinuhin upang unahin ang mga tiyak na gawain para sa mas mabilis na pag-unlad ng MVP.

Pagpapauna at Pagpapatupad ng Listahan ng Gawain

Flexibility ng Listahan ng Gawain

  • Ang listahan ng gawain ay maaaring pinuhin at muling ayusin upang tumuon sa pagkamit ng isang MVP saklaw nang mabilis.
  • Maaaring pagsama-samahin ang mga gawain upang bawasan ang bilang ng mga gawain, na ginagawang mas madaling pamahalaan ang daloy ng trabaho.
  • Pagsubok-Unang Pagbuo:
  • Maaaring piliin ng mga developer na magsulat muna ng mga pagsubok kung mas gusto nila ang diskarte sa pag-develop na batay sa pagsubok.
  • Sinusuportahan ng workflow ang iba't ibang istilo ng pag-develop, na nagbibigay-daan para sa pag-customize batay sa mga kagustuhan ng team.
  • Mga Pangunahing Gawain:
  • Natukoy ang isang pangunahing MVP na may limang gawain: mag-set up ng mga dependency, gumawa ng mga pangunahing uri ng data, magpatupad ng pamamahala ng estado ng aplikasyon, magpatupad ng audio recording, at mga pagsubok sa pagsasalita.
  • Kasama sa mga karagdagang gawain ang pagpapatupad ng storage validation ng tugon at paggawa ng bahagi ng start screen.
  • UI Pagsasama:
  • Maaaring hindi kasama sa paunang yugto ang mga bahagi ng UI, ngunit maaari itong isaayos upang isama ang UI para sa visual na pagsubok at pakikipag-ugnayan.
  • Pagpapatupad ng Gawain:
  • Maaaring simulan ang mga gawain sa pamamagitan ng UI clicks o sa pamamagitan ng chat commands.
  • Ang Kiro ay nagsasagawa ng mga gawain sa pagkakasunud-sunod, nagpapatakbo ng mga terminal command upang mag-install ng mga dependency at lumikha ng mga kinakailangang file.
  • Ang proseso ay umuulit, na nagbibigay-daan para sa mabilis na pagsasaayos at pagpipino batay sa nagbabagong mga kinakailangan at disenyo.

Pangkalahatang-ideya ng Pagsusulit na Batay sa Ari-arian

Mga Structured na Kinakailangan

  • Tinutukoy ang mga kinakailangan sa isang format ng pamantayan sa pagtanggap ng kwento ng user.
  • Nagbibigay-daan para sa lohikal na pagkakapareho at pormal na pangangatwiran sa mga kinakailangan.
  • Mga Katangian at Pormal na Pangangatwiran:
  • Ang mga katangian ay mga katangian o pag-uugali na dapat maging totoo sa lahat ng execution ng isang system.
  • Kinukuha ng Kiro ang mga property mula sa mga kinakailangan sa format ng Gherkin at gumagamit ng framework na tinatawag na Fast Check para sa pagsubok na nakabatay sa property.
  • Gherkin
  • Ay isang plain-text na wika na ginagamit sa Behavior-Driven Development (BDD) upang magsulat ng mga senaryo ng pag-uugali ng software sa isang structured, nababasa ng tao na format, lalo na gamit ang Given-When-Then structure.
  • Tampok: Inilalarawan ang functionality na sinusuri.
  • Scenario: Isang partikular na halimbawa ng feature na gumagana.
  • Ibinigay: Itinatakda ang paunang konteksto o estado bago maganap ang pagkilos.
  • Kailan: Inilalarawan ang pagkilos na ginagawa ng user o system.
  • Pagkatapos: Tinutukoy ang inaasahang resulta o resulta ng aksyon.
  • At/Ngunit: Ginagamit upang magdagdag ng higit pang mga hakbang sa parehong keyword (Ibinigay, Kailan, o Pagkatapos) nang hindi ito inuulit.
  • Fast Check Framework:
  • Nagbibigay-daan ang Fast Check para sa fuzz testing sa pamamagitan ng pagbuo ng isang hanay ng mga value na susuriin laban sa mga property.
  • Hindi tulad ng unit testing na may limitadong inputs, ang property-based na pagsubok ay nagbibigay ng higit na ebidensya na ang nabuong output ay nagmamapa sa kinakailangan.
  • Halimbawa ng Property-Based Testing:
  • Ginawa ang isang chess app gamit ang Kiro, at ginamit ang mga pagsubok na nakabatay sa ari-arian upang matiyak na gumagana ang app gaya ng inaasahan.
  • Kasama sa mga pagsubok ang pagsuri na ang anumang hakbang na ginawa ng AI ay wasto laban sa pagpapatala ng paggalaw.
  • Pinapatakbo ng Fast Check ang mga pagsubok nang maraming beses na may mga random na pagbabago upang matiyak ang tibay at mabawasan ang mga bug.
  • Pinapahusay ng pagsubok na nakabatay sa ari-arian ang kalidad ng code at binabawasan ang posibilidad ng mga bug.

Tool sa Diagnostics

  • Nakakatulong ang diagnostics tool ng Kiro na matukoy at malutas ang mga isyu sa panahon ng pagpapatupad ng gawain.
  • Nagbabasa ito ng mga isyu sa linting mula sa editor at nagbibigay ng feedback upang mapabuti ang proseso ng pagbuo.
  • Binawasan ng tool ang bilang ng mga isyu na nakatagpo sa pagkumpleto ng gawain.
  • Pagpapatupad ng Gawain:
  • Kasama sa app ang mga tanong sa pag-uugali, teknikal, at pamumuno para sa paghahanda ng pakikipanayam.
  • Nakakonekta ang app sa isang modelong Sonnet 3.7 para sa pagbuo ng mga tugon.
  • Na-optimize na Demo:
  • Ang panghuling app ay nagpapakita ng pagsasanay sa paghahanda sa pakikipanayam na may mga tanong at tugon.
  • Binibigyang-daan ng app ang mga user na magsanay sa pagsagot sa mga teknikal na tanong at makatanggap ng feedback.
  • Itinatampok ng demo ang functionality ng app, kabilang ang kakayahang mag-record at mag-transcribe ng mga tugon.