두 번째 회의는 온라인으로 이루어졌다!
개발을 본격적으로 시작하기 전,
'Agile(애자일) '과 E-Pub 파일에 대해
다 같이 공부하기로 했다!
앞으로 애자일 방법론을 토대로 프로젝트를 진행하기 위해서는
모두가 애자일 방법론이 무엇인지 알아야 하기 때문에 함께 영상을 공유하며 공부하기로 했다!
그리고 E-Pub 파일의 경우, 현 프로젝트의 정당성을 확보하기 위한 조사가 필요했다
- epub이라는 포맷에 대한 이해를 위한 조사
(👉 epub의 포맷에 특정 부분에 추가 혹은 제거를 위해 " 밑줄 긋는"기능을 구현할 수 있는지 여부 확인) - Readium이라는 오픈소스 프로젝트에 대한 조사
(👉 현재 이 프로젝트는 어떤 것을 추구하고 있고 우리 프로젝트와의 연관성과 기여 가능성에 대해)
그리고 프로젝트에 흥미를 가진 멘토님의 동료 한 분이 합류하게 되었다.
총 개발자 6명과 디자이너 1명이 같은 배에 타게 되었다!!!!!!!!!!
먼저, 애자일 방법론은 사전에 멘토님으로부터 공유된 영상을 통해 공부했다!
영상 시리즈 주소 👉👉 https://www.youtube.com/watch?v=EDT0HMtDwYI&list=RDCMUCkcSqKNo-_hBeknZEhsIRng&index=9
영어로 구성되어 있지만 쉬운 영어로 구성되어 있고 자막이 있어서 보기에는 괜찮았다!!
해당 시리즈에 있는 영상들을 보다 보면 애자일 원칙에 대해서 어느 정도 이해가 가능하다 👍
그럼 이제 위의 영상들과 추가적으로 찾아본 개념들을 토대로
애자일 방법론에 대해 설명해보고자 한다!! 😊😊
Agile Principles 은?
- Deliver software frequently 소프트웨어를 자주 제공한다.
- Strive for simplicity 단순성을 중요시한다.
그렇다면,
👆 How to slice work?
-> how to slice our work into valuable user stories that are small enough that they can be completed in a reasonable amount of time while still being valuable enough that they represent progress to user.
정해진 시간 동안 사용자에게 충분하게 진행상황을 보여줄 수 있도록 작은 user story로 나누어서 작업하는 것이다!!!
Developer, 즉 개발자는 무언가 새로운 것을 볼 때
'user의 시각'을 생각해야 한다!!!
Developer가 application을 만들 때 생각하는 스택은 여러 개의 레이어 층으로 이루어져 있다
하지만, 사용자가 생각하는 application은 피자를 여러 조각으로 나눈 형태로, 기능별로 나누어져 있다
그렇기 때문에 사용자가 현재 진행 상황을 받아들이고 잘 알기 위해서는
개발자가 생각하는 레이어들을 쌓을 때 사용자 입장에서의 스토리를 보여줘야 한다는 것!!
그리고 하나의 Big 스토리를 몇 개의 짧은 스토리들로 나눠서 보여준다는 것이 핵심 포인트다
Several Shorter stories
- small size
- prioritize the stories differently.
- user는 investment 하도록 higher value에 포커스를 맞출 수 있다.
👉 user로부터 feedback을 받고 소통할 수 있다!!!
그렇다면 어떻게 Big 스토리를 나눌 수 있을까?
사실 생각해 보면 간단하다
가장 중요한 기능 순으로 가장 핵심 기능을 먼저 개발한다고 생각하면 된다
그리고 살을 붙여 넣는 것이다 이건 글을 쓸 때와 비슷하다
그렇게 나누어진 스토리들은 options를 추가하여 관리한다
여기서 option은 next thing to do 우선순위를 의미한다
이를 통해 만들어진 Full size of functionality
story를 작게 만들면 레이어들을 많이 쌓아가야 때문
Spliting the story include options(piriority) next thing to do.
✌ Agile User Stroies
사실 User Stroies는 애자일 하지는 않다
하지만 이를 통해 애자일 하게 개발할 수 있도록 도와준다!!
(유저 관점에서 생각하게끔 도와준다는 뜻이다)
그렇다면 애자일 하다는 것은 무엇일까?
예를 들어 3가지의 애자일 원칙을 보자.
- Working software is the primary measure of progress.
- Our highest priority is to satisfy the customer though early and continuous delivery of valuable software.
- Simplicity - the art of maximizing the amount of work not done - is essential.
working software를 통해 우리는 작업 과정을 고객에게 보여주고자 한다!
그러기 위해 작업을 쪼개서 tracking 할 수 있어야 하고
우선순위(작업의 중요도)에 따라 작업을 정렬할 수 있어야 한다
그리고 아직 끝나지 않은 부분이라도 최대한 많이 심플하게 보여줘야 한다
실제로 이렇게 하기 위해 많은 팀에서는 To-Do/Doing/Done 포스트잇을 붙이고 그 밑에 작업을 정렬하는 것처럼
가시화하여 현재 작업 과정을 보여줄 수 있는 working software를 사용한다!!
그렇다면 이때 작업을 정렬할 때,
작업 대신에 사용할 User Story에 대해 알아보자!!
User Story의 기본적인 형태는 다음과 같다
(Who) As a user ~ ,
(What) I want to ~ ,
(Why) so that I can ~.
사용자의 입장에서 who, what, why의 형태로 구성되기 때문에
사용자의 요구사항에 대해 내가 제대로 이해하고 있는 지를 서로 확인할 수 있다!
만약 올바르지 않은 user story를 만들었다면, 개발 방향이 다른 곳으로 향하고 있다는 것을 알 수 있다
결국 퀄리티 좋은 user stories를 사용함에 따라 개발 과정을 좀 더 효율적으로 만들 수 있다
🤟 What is Agile?
사실 애자일은 방법론도 SW를 개발하는 특별한 방법이나 프레임워크도 아니다!
Agile is a set of Values and Principles.
애자일은 4개의 가치와 12개의 원칙으로 이루어진 집합이다
즉, 팀원들과의 신뢰를 통해 좀 더 좋은 개발을 하기 위한 지침서에 가깝다
실제로 어떻게 사용할지는 유연하게 사용가능하다!
4개의 가치
- 개인과 상호 작용은 프로세스와 도구를 사용합니다.
- 작업 소프트웨어는 광범위한 문서화 작업을 수행합니다.
- 계약 협상보다 고객과의 협업이 더 중요합니다.
- 변화에 대한 대응은 계획을 따르는 것보다 중요합니다.
12개의 원칙
애자일 원칙을 개발에서 사용하는 프레임워크로 우리가 사용한 것은
스크럼 Scrum이다
👀 About Scrum 👀
The Scrum lifecycle
한 스프린트를 기준으로 이어지는데, 보통 2~4주이다
(우리는 일주일을 하기로 했다! 왜냐하면 짧은 주기 개발이니까)
개발 주기마다 실제 동적할 수 있는 결과 제공 (데모 제공)
Scrum Roles
- Product Owner
- keeping the backlog up - to date and in priority order.
- Scrum Master
- part coach
- part team member
- part cheerleader
- Scrum Team
팀원 모두가 Product Owner로서 개발에 임하고,
Scrum Master는 멘토분을 시작으로 어느 정도 익숙해지면 돌아가면서 하기로 했다
Product Backlog == A Priority List
솔루션에 포함하는 기능/ 개선점에 대한 우선순위 부여
Sprint Planning and Sprint Backlog
매 스프린트 미팅 때마다 백로그를 함께 갱신했다
Sprint Execution and Daliy Scrum
- Daliy Scrum : limited to 15 mins
The Task Board
- To-Do / In progress / Done
추가적으로 우리는 Blocked를 추가하였다
👉 '오류가 생기거나 고민이 있어 진행이 불가한 경우'에 사용
Sprint Review and Sprint Restrospective
매 스프린트 미팅 이후에는 익명의 회고 미팅 진행하기로 했다
그리고 이를 적용한 도구로는 Azure에서 제공하는 Azure DevOps를 통해 관리하기로 했다
추가 개념 정리
3 - ARCHITECTURE
- Presentation tier
- Logic tier
- Data tier
Data Access Layer (DAL)
데이터 접근 계층. 데이터 입출력 계층
데이터 저장장치의 입출력을 담당하는 계층
3 계층 아키텍처의 데이터 계층
MVC 패턴 (Model - View - Controller)
As a developer I want a service layer, so the app logic is separated from the GUI.
logic과 GUI를 분리하면 관리하기가 쉽다.
mainpulates
Controller에서 사용자가 요청한 웹페이지 서비스를 하기 위해 모델을 호출한다.
updates
Model에서 제어 후 결과를 받아 뷰에 반영한다.
참고 자료
https://learn.microsoft.com/ko-kr/devops/plan/what-is-agile
Agile이란? - Azure DevOps
Agile은 증분 전달, 협업 및 지속적인 학습을 강조하는 소프트웨어 개발에 대한 접근 방식을 설명하는 용어입니다.
learn.microsoft.com
https://business.adobe.com/kr/blog/basics/agile-vs-scrum-project-management
애자일 vs. 스크럼
애자일은 광범위한 프로젝트 관리 방법론이고, 스크럼은 애자일을 실행 가능하게 하는 프레임워크입니다.
business.adobe.com
'프로젝트 > 2020 한이음 프로젝트' 카테고리의 다른 글
200418) 한이음 첫 번째 공식 회의 - 2 (0) | 2020.06.29 |
---|---|
200418) 한이음 첫 번째 공식 회의 - 1 (0) | 2020.06.27 |
2020 한이음 프로젝트 - 산업체연계형 (0) | 2020.05.11 |