2. 제품을 올바르게 만드는 것과
올바른 제품을 만드는 것은 다른 문제다.
성공을 위해서는 둘 다 필요하다.
고코 아지치
영국 애자일 테스팅 사용자 그룹
“
3. 좋은 제품은 모든 기초 중의 기초다.
제품의 품질이 1이라면,
브랜드 마케팅은 그 뒤에 따라 붙는 0과 같다.
앞에 1이 없다면, 뒤에 아무리 많은 0이 붙어도 소용없다.
리완창
“
샤오미 공동창립자
4. 기능적, 비기능적 요구사항을 올바르게
구현한 동작하는 소프트웨어
기능적 요구사항(functional requirement)
사용자가 직접적으로 이용하는 개별적인 기능에 대한 요구사항
비기능적 요구사항(non-functional requirement)
성능, 신뢰성, 가용성 등과 관련된 요구사항
45. 사람들이 서재에서 보고 싶지 않은 작품을
삭제하고 싶어 합니다.
그 기능이 왜 필요한 거에요?
내서재에서 작품을 삭제할 수 있게 해주세요!
46. 사람들이 서재에서 보고 싶지 않은 작품을
삭제하고 싶어 합니다.
그 기능이 왜 필요한 거에요?
내서재에서 작품을 삭제할 수 있게 해주세요!
그렇군요, 문제를 해결할 또 다른 방법이 떠오르진
않네요. 알겠습니다.
47. 문제를 공유하면
그렇군요, 문제를 해결할 또 다른 방법이 떠오르진
않네요. 알겠습니다.
사람들이 서재에서 보고 싶지 않은 작품을
삭제하고 싶어 합니다.
그 기능이 왜 필요한 거에요?
내서재에서 작품을 삭제할 수 있게 해주세요!
48. 사람들이 서재에서 보고 싶지 않은 작품을
삭제하고 싶어 합니다.
그 기능이 왜 필요한 거에요?
내서재에서 작품을 삭제할 수 있게 해주세요!
문제를 해결할 더 좋은 방법을 함께
고민해 볼 수 있어요.
그렇군요, 문제를 해결할 또 다른 방법이 떠오르진
않네요. 알겠습니다.
50. 「사용자는 / 보고 싶지 않은 작품을 제거하기 위해 /
내서재를 삭제할 수 있다」
스토리는 「주체 / 목적 / 행위」로 정리할께요.
51. 잠깐만요. 내서재를 삭제한다는 말은 오해할 수
있겠어요. 내서재의 작품을 삭제할 수 있다가 어때요?
스토리는 「주체 / 목적 / 행위」로 정리할께요.
「사용자는 / 보고 싶지 않은 작품을 제거하기 위해 /
내서재를 삭제할 수 있다」
52. 「사용자는 / 보고 싶지 않은 작품을 제거하기 위해 /
내서재의 작품을 삭제할 수 있다」
잠깐만요. 내서재를 삭제한다는 말은 오해할 수
있겠어요. 내서재의 작품을 삭제할 수 있다가 어때요?
스토리는 「주체 / 목적 / 행위」로 정리할께요.
「사용자는 / 보고 싶지 않은 작품을 제거하기 위해 /
내서재를 삭제할 수 있다」
53. 「사용자는 / 보고 싶지 않은 작품을 제거하기 위해 /
내서재의 작품을 삭제할 수 있다」
잠깐만요. 내서재를 삭제한다는 말은 오해할 수
있겠어요. 내서재의 작품을 삭제할 수 있다가 어때요?
스토리는 「주체 / 목적 / 행위」로 정리할께요.
「사용자는 / 보고 싶지 않은 작품을 제거하기 위해 /
내서재를 삭제할 수 있다」
목적은 어떤 기능을 왜 제공해야하는지
행위의 목적성을 나타내요.
54. 오우! 정확히 짚어주셨네요! 음... 현재 내서재
페이지에서 삭제를 바로 제공하긴 힘들 것 같고
편집 모드로 전환해야 할 거 같아요. 어떤가요?
55. 오우! 정확히 짚어주셨네요! 음... 현재 내서재
페이지에서 삭제를 바로 제공하긴 힘들 것 같고
편집 모드로 전환해야 할 거 같아요. 어떤가요?
크게 상관없어요. 추후 다양한 편집 기능이 추가될
수도 있으니 그편이 좋은 거 같습니다.
56. 「사용자는 / 작품을 제거하기 위해 /
내서재에서 편집 버튼을 선택해 편집 모드로 전환할 수 있다」
크게 상관없어요. 추후 다양한 편집 기능이 추가될
수도 있으니 그편이 좋은 거 같습니다.
오우! 정확히 짚어주셨네요! 음... 현재 내서재
페이지에서 삭제를 바로 제공하긴 힘들 것 같고
편집 모드로 전환해야 할 거 같아요. 어떤가요?
57. 아직 단순한 버튼으로 할지, 라디오 버튼으로 할지
결정하지 않았어요. 지금 UI에 관한 요소가 결정 돼야
하나요?
58. 앗! 제가 너무 구체적인 내용까지 서술했네요. UI에
관한 부분은 추후 다시 논의하는 게 맞는 거 같네요.
아직 단순한 버튼으로 할지, 라디오 버튼으로 할지
결정하지 않았어요. 지금 UI에 관한 요소가 결정 돼야
하나요?
59. 「사용자는 / 작품을 제거하기 위해 /
내서재에서 편집 모드로 전환할 수 있다」
앗! 제가 너무 구체적인 내용까지 서술했네요. UI에
관한 부분은 추후 다시 논의하는 게 맞는 거 같네요.
아직 단순한 버튼으로 할지, 라디오 버튼으로 할지
결정하지 않았어요. 지금 UI에 관한 요소가 결정 돼야
하나요?
60. 앗! 제가 너무 구체적인 내용까지 서술했네요. UI에
관한 부분은 추후 다시 논의하는 게 맞는 거 같네요.
「사용자는 / 작품을 제거하기 위해 /
내서재에서 편집 모드로 전환할 수 있다」
전문 용어(예: 개발 용어)나 구체적인 UI 구현
고민 없이 짧고 간결하게 스토리 작성
아직 단순한 버튼으로 할지, 라디오 버튼으로 할지
결정하지 않았어요. 지금 UI에 관한 요소가 결정 돼야
하나요?
62. 혹시 삭제 시 작품을 여러 개 선택하여 일괄 삭제
할 필요가 있을까요?
많은 작품을 가지고 있는 기존 사용자는 여러
작품을 한 번에 삭제하고싶어 할 거 같네요!
63. 「사용자는 / 1개 이상의 작품을 제거하기 위해 /
삭제하고 싶은 작품을 여러 개 선택할 수 있다」
많은 작품을 가지고 있는 기존 사용자는 여러
작품을 한 번에 삭제하고싶어 할 거 같네요!
혹시 삭제 시 작품을 여러 개 선택하여 일괄 삭제
할 필요가 있을까요?
64. 자, 사용자가 내서재의 작품을 삭제하기 위해 편집
모드로 전환하고, 삭제하고 싶은 작품을 여러 개
선택했습니다. 그다음은 어떻게 이뤄지는 게
좋을까요?
65. 자, 사용자가 내서재의 작품을 삭제하기 위해 편집
모드로 전환하고, 삭제하고 싶은 작품을 여러 개
선택했습니다. 그다음은 어떻게 이뤄지는 게
좋을까요?
음... 확인 버튼을 두고 그 버튼을 선택하면 최종적으로
삭제할 수 있도록 하죠?
66. 「사용자는 / 선택한 작품을 제거하기 위해 /
확인 버튼을 선택해 삭제 작업을 완료할 수 있다」
음... 확인 버튼을 두고 그 버튼을 선택하면 최종적으로
삭제할 수 있도록 하죠?
자, 사용자가 내서재의 작품을 삭제하기 위해 편집
모드로 전환하고, 삭제하고 싶은 작품을 여러 개
선택했습니다. 그다음은 어떻게 이뤄지는 게
좋을까요?
67. 음... 확인 버튼을 두고 그 버튼을 선택하면 최종적으로
삭제할 수 있도록 하죠?
자, 사용자가 내서재의 작품을 삭제하기 위해 편집
모드로 전환하고, 삭제하고 싶은 작품을 여러 개
선택했습니다. 그다음은 어떻게 이뤄지는 게
좋을까요?
이 말 속에는 어떠한 기술 용어도, 구체적인 UI
상태도 담고 있지 않아요.
「사용자는 / 선택한 작품을 제거하기 위해 /
확인 버튼을 선택해 삭제 작업을 완료할 수 있다」
68. 음... 확인 버튼을 두고 그 버튼을 선택하면 최종적으로
삭제할 수 있도록 하죠?
자, 사용자가 내서재의 작품을 삭제하기 위해 편집
모드로 전환하고, 삭제하고 싶은 작품을 여러 개
선택했습니다. 그다음은 어떻게 이뤄지는 게
좋을까요?
관례적, 패턴적으로 나타나는 UI 요소는
스토리에 담아도 큰 문제 없어요.
「사용자는 / 선택한 작품을 제거하기 위해 /
확인 버튼을 선택해 삭제 작업을 완료할 수 있다」
70. 음, 사용자가 실수로 삭제할 수도 있지 않을까요?
아! 그렇네요. 삭제 전에 확인받는 절차를 둬야
할 거 같습니다.
71. 「사용자는 / 잘못된 삭제를 피하기 위해 /
작품이 삭제 되기 전 확인 받을 수 있다」
아! 그렇네요. 삭제 전에 확인받는 절차를 둬야
할 거 같습니다.
음, 사용자가 실수로 삭제할 수도 있지 않을까요?
72. 「사용자는 / 잘못된 삭제를 피하기 위해 /
작품이 삭제 되기 전 확인 받을 수 있다」
음, 사용자가 실수로 삭제할 수도 있지 않을까요?
아! 그렇네요. 삭제 전에 확인받는 절차를 둬야
할 거 같습니다.
시스템 관점이 아닌 사용자 관점에서
요구사항을 분석하면 누락할 수 있는 중요한
행위를 쉽게 발견할 수 있어요.
74. 사용자는 / 보고 싶지 않은 작품을 제거하기 위해 /
내서재의 작품을 삭제할 수 있다.
• 사용자는 / 작품을 제거하기 위해 /
내서재에서 편집 모드로 전환할 수 있다.
• 사용자는 / 1개 이상의 작품을 제거하기 위해 /
삭제하고 싶은 작품을 여러개 선택할 수 있다.
• 사용자는 / 선택한 작품을 제거하기 위해 /
확인 버튼을 선택해 삭제 작업을 완료할 수 있다.
• 사용자는 / 잘못된 삭제를 피하기 위해 /
작품이 삭제 되기 전 확인 받을 수 있다.
76. 사용자는 / 보고 싶지 않은 작품을 삭제하기 위해 /
내서재의 작품을 삭제할 수 있다.
• 사용자는 / 작품을 삭제하기 위해 /
내서재에서 편집 모드로 전환할 수 있다.
• 사용자는 / 1개 이상의 작품을 삭제하기 위해 /
삭제하고 싶은 작품을 여러개 선택할 수 있다.
• 사용자는 / 선택한 작품을 삭제하기 위해 /
확인 버튼을 선택해 삭제 작업을 완료할 수 있다.
• 사용자는 / 잘못된 삭제를 피하기 위해 /
작품이 삭제 되기 전 확인 받을 수 있다.내서재의 작품 삭제를 요청하기 위한
API가 필요하네요.
77. 사용자는 / 보고 싶지 않은 작품을 삭제하기 위해 /
내서재의 작품을 삭제할 수 있다.
• 사용자는 / 작품을 삭제하기 위해 /
내서재에서 편집 모드로 전환할 수 있다.
• 사용자는 / 1개 이상의 작품을 삭제하기 위해 /
삭제하고 싶은 작품을 여러개 선택할 수 있다.
• 사용자는 / 선택한 작품을 삭제하기 위해 /
확인 버튼을 선택해 삭제 작업을 완료할 수 있다.
• 사용자는 / 잘못된 삭제를 피하기 위해 /
작품이 삭제 되기 전 확인 받을 수 있다.
그 API는 복수의 작품을 삭제할 수 있도록
디자인돼야 하는군요.
79. 스토리 분석
스토리 분석
스토리 분석
스토리 분석
스토리 분석
기획자
디자이너
백엔드
프론트엔드
마크업
API 디자인
API 디자인 모델 구현
디자인
마크업 개발
UI 개발
API 및 비즈니스 로직 구현
개발 시작 지점
스토리를 기반으로 병렬로 구현을 진행하여
개발 기간을 단축 시킬 수 있어요.
81. 기능, “내서재의 작품 삭제 기능”
스토리, “사용자는 / 1개 이상의 작품을 제거하기 위해 /
삭제하고 싶은 작품을 여러개 선택할 수 있다.”
• Given : 사용자가 내서재 페이지에 방문한다.
• And : 사용자가 내서재 페이지에서 편집 모드로 전환한다.
• When : 사용자가 삭제하고 싶은 작품을 선택한다.
• Then : 삭제 대상이 되는 작품이 선택된다.
스토리, ...