본문 바로가기

SW

소프트웨어 엔지니어링 #3

Agile software development engineering

-1990년도부터 시작된 방식으로 delivery time을 획기적으로 줄이기 위해 고안되었다.

-근본적으로 requirements engineering과 design and implementation의 cycle을 반복하는 방식이다. 

agile

특징:
- 설계보다는 코드에 집중
- 소프트웨어 개발에 대한 반복적인 접근 방식을 기반으로 한다.
- 작동 중인 소프트웨어를 신속하게 제공하고 과도한 재작업 없이 변화하는 요구 사항을 충족하기 위해 신속하게 진화하려는 의도 

-> 목적은 소프트웨어 프로세스의 오버헤드를 줄이고,  (예: 문서화를 제한한다. ) 다음 사항에 신속하게 대응하는 것이다.  

-> 에자일 선언문이 존재한다. 

 

장점:

1.  More Flexible

보다 유연하다

Agile is more flexible, adapting to changes much more rapidly than other project management approaches. A customer can add, delete or change requirements or shift priorities at the beginning of each cycle, guiding the project team on the work for the next iteration.

에자일은 다른 프로젝트 관리 접근 방식보다 유연하여 휠씬 더 빠르게 변화에 적응할 수 있다. 고객은 각 주기가 시작될 때 요구 사항을 추가, 삭제, 또는 변경하거나 우선 순위를 변경하여 프로젝트 팀의 방향을 바꿀 수 있다.

2.  Rapid and Tangible Result

신속하고 가시적인 결과가 나온다.

Agile's focus is on working deliverables, not perfect deliverables, so product gets to market faster. The product meets the requirements that were defined during a particular iteration.

Agile은 완벽한 결과물이 아닌 실제 결과물에 중점을 두고 있으므로 제품이 더 빨리 시장에 출시된다제품은 특정 (주기) 반복 중에 정의된 요구 사항을 충족한다.

Thanks to the Sprint-based Agile project development life cycle, you get deliverable by the end of each sprint, which usually takes around 2 weeks to complete. By the end of each sprint, you get reports on the project’s progress and deliverables that correspond to the current stage of development. As a client, you will know exactly what is going on with your project every step of the way, and you can be as involved in the process as you want. Each sprint ends up with a clear and tangible result, so you know what is going on and where you are moving to.

스프린트 기반 애자일 프로젝트 개발 수명 주기 덕분에, 각 스프린트가 끝날 때 결과물을 얻을 수 있으며 일반적으로 완료하는 데 약 2주정도 걸린다. 각 스프린트가 끝날 때, 현재 개발 단계에 해당하는 프로젝트 진행 상황 및 결과물에 대한 보고서를 받는다고객은 프로젝트의 모든 단계에서 무슨 일이 일어나고 있는지 정확히 알게 되며 원하는 만큼 프로세스에 참여할 수 있다각 스프린트는 명확하고 가시적인 결과로 끝나므로 현재 진행 중인 일과 이동 중인 위치를 알 수 있다.

3.  Better Communication

더 나은 커뮤니케이션이 가능하다.

Agile methods have better communication because the project team works closely with the customer to revisit requirements and priorities. Continual feedback driven by the cyclic nature of project work provides better communication.

에자일 방식은 프로젝트 팀이 고객과 긴밀하게 현력하여 요구 사항과 우선순위를 다시 검토하기 때문에 더 나은 의사소통이 가능하다. 프로젝트 작업의 주기적인 특성으로 인한 지속적인 피드벡은 더 나은 의사소통을 제공한다.

 

 

단점:

1.  Hard to predict

예측하기 어렵다.

Because Agile is based on the idea that teams won’t know what their end result (or even a few cycles of delivery down the line) will look like from day one, it’s challenging to predict efforts like cost, time and resources required at the beginning of a project (and this challenge becomes more pronounced as projects get bigger and more complex).

Agile은 팀이 첫날부터 최종 결과(또는 몇 차례의 전달 주기)가 어떻게 보일지 모른다는 아이디어에 기반하기 때문에 프로젝트를 시작할 때(이 문제는 프로젝트가 커지고 복잡해짐에 따라 더욱 뚜렷해진다) 비용, 시간 및 리소스와 같은 노력을 예측하는 것이 어렵다.

Accepting the uncertainty is the key here, but many companies fail to do so and stumble upon this problem not knowing what to make of their project. If we are talking about a long-term project, the one that would take anywhere from 6 to 12 months or more to finish, this kind of uncertainty might cause much anxiety, especially if you and your business rely on the successful completion of the project. This lack of precise vision and proper planning is one of the primary reasons why some agile projects fail to accomplish their goals. That is exactly why you must embrace the uncertainty rather than push it and cause chaos in your development cycle.

 불확실성을 수용하는 것이 여기서 핵심이지만 많은 기업이 그렇게 하지 못하고 프로젝트를 어떻게 해야 할지 모르는 상황에서 이 문제에 부딪힌다장기 프로젝트는 완료하는 데 6개월에서 12개월 또는 그 이상이 소요되고, 이러한 불확실성은 특히 귀하와 귀하의 비즈니스가 프로젝트의 성공적인 완료에 의존하는 경우 많은 불안을 유발할 수 있다정확한 비전과 적절한 계획의 부족은 일부 애자일 프로젝트가 목표를 달성하지 못하는 주된 이유 중 하나이다.

2.  Fragmented output

Incremental delivery may help bring products to market faster, but it’s also a big disadvantage of Agile methodology. That’s because when teams work on each component in different cycles, the complete output often becomes very fragmented rather than one cohesive unit.

점진적인 완성은 제품을 더 빨리 시장에 출시하는 데 도움이 될 수 있지만 애자일 방법론의 큰 단점이기도 하다팀이 서로 다른 주기로 각 구성 요소에 대해 작업할 때 전체 출력이 하나의 응집력 있는 단위가 아니라 매우 파편화되는 경우가 많기 때문이다.

3.  Documentation gets left behind

In Agile, documentation happens throughout a project, and often “just in time” for building the output, not at the beginning. As a result, it becomes less detailed and often falls to the back burner.

애자일에서 문서화는 프로젝트 전반에 걸쳐 발생하며, 프로젝트 초기가 아니라 출력을 빌드할 때에 종종 진행한다결과적으로 문서는 덜 상세해지고 종종 뒷전으로 밀린다.

 

에자일 소프트웨어의 개발 사이클

techtarger - https://www.techtarget.com/searchsoftwarequality/definition/agile-software-development

에자일 소프트웨어 개발 사이클의 쉽게 6단계로 나눠진다.

Concept

각 잠재적 프로젝트의 비즈니스 기회 파악.
프로젝트를 완료하는 데 필요한 시간과 작업의 견적을 낸다.
정보를 사용하여 프로젝트의 우선순위를 정하고 기술, 경제성에 따라 어떤 프로젝트가 추구할 가치가 있는지 파악한다.

 

Inception

팀원이 확인되고 자금을 확보한다.
초기 요구 사항에 대해 고객과 논의.
팀의 책임을 요약하고 각 스프린트별 작업이 완료되는 시기를 정의하는 타임라인을 작성.

 

Iteration / Construction

요구사항 및 피드백을 기반으로 작업 소프트웨어를 만들기 시작.
개발 주기 전반에 걸쳐 여러 번 반복되며 각각 워크플로우가 존재.

 

Release

최종 품질 보증 테스트 시행.
남은 결함의 해결, 시스템 및 사용자 문서 작성.
최종 반복을 프로덕션으로 릴리스한다.

 

Production

소프트웨어를 유지관리하는 데 필요한 지속적인 지원에 집중.
개발 팀은 소프트웨어를 계속 실행하는 동시에 사용자에게 소프트웨어 사용 방법을 교육한다.
(지원이 종료되거나 제품이 폐기될 때까지 생산 단계는 계속된다)

 

Retirement

고객에게 알림 및 최종 마이그레이션과 같은 종료 작업 수행
시스템 릴리스는 프로덕션에서 제거한다.
폐기 작업은 일반적으로 시스템이 구식이거나 불필요하여 새 버전으로 교체해야 할 때 수행된다.

 

대표적인 에자일 개발 방식으로는 2가지가 있다. scrum, xp

Scrum

프로젝트 관리자가 전유형의 반복 및 증분 프로젝트를 제어하는 데 사용할 수 있는 경량 Agile 프레임워크다.
제품 소유자가 팀과 협력하여 시스템 기능을 정하고 우선 순위를 지정할 수 있는 제품 백로그를 생성한다.
우선 순위를 설정한 후, 교차 기능 팀이 개입하여 각 스프린트 동안 소프트웨어의 작업 증가량을 제공하기로 합의한다.

AgileArea- https://www.agilearena.net/what-is-scrum/

XP

XP는 속도와 지속적인 제공에 초점을 맞춘 절제된 접근 방식으로, 목표는 변화하는 고객 요구사항에 직면했을 때 소프트웨어 품질과 대응력을 향상시키는 것이다.
고객 참여 증가, 빠른 피드백 루프, 지속적인 계획 및 테스트, 긴밀한 팀워크에 중점을 두고 있다.

wiki- https://ko.wikipedia.org/wiki/%EC%9D%B5%EC%8A%A4%ED%8A%B8%EB%A6%BC_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D