먼저 개발 솔루션을 설계/스케치/그리기 한 다음 개발합니까? 그렇다면 어떻게? [닫은

StackOverflow https://stackoverflow.com/questions/155948

  •  03-07-2019
  •  | 
  •  

문제

저는 의사 결정자들이 비즈니스에서 기술을 더 잘 사용하려는 의사와 많은 일을합니다. 나는 그것을 발견했다 그림은 천 단어의 가치가 있습니다 그리고 어떤 종류의 다이어그램으로 시스템을 프로토 타이핑하는 것은 항상 토론에 많은 적합성을 제공합니다. 나는 Visio, UML (다소), 마인드 맵, 흐름도를 사용하고 Winforms를 조롱 하여이 스폰서의 비전을 시작하여 모든 사람이 같은 페이지에 있는지 확인했습니다. 나는 항상 공통 프로세스를 사용하여 개발 프로세스에 비즈니스 비전을 짜는 데 사용될 수있어서 우리 모두가 같은 끝이되도록합니다. "문제를 해결하는 기능적인 것".

디자인 프로세스에 접근하는 방법에 대한 제안 또는 Cliff 메모를 찾고있어 개발에 1 주일 밖에 걸리지 만 더 큰 프로젝트를 포함하는 데 사용될 수 있습니다.

나는 이것이 UML 영역을 탐구한다는 것을 알고 있지만, 나는 비즈니스 사용자가 다이어그램을 이해하고 그들과 관련시키는 데 도움이되는 다양한 다이어그램 유형을 적절하게 사용하기위한 안내서를 찾는 데 어려움을 겪고 있음을 발견했습니다.

시스템/애플리케이션의 비전을 포착하여 프로젝트의 후원자에게 제공하는 데 무엇을 사용하십니까? (한 줄의 코드를 작성하기 전에 모두) ...

도움이 되었습니까?

해결책

종이 또는 화이트 보드!

고독한 탈취관에게는 종이를 추천합니다. 적어도 처음에는 결국 UML과 함께 공식화하고 싶을 수도 있지만 필요하다고 생각하지 않습니다.

(물리적으로) 함께 일하는 개발자 그룹의 경우 화이트 보드를 추천합니다. 그렇게하면 모든 사람과 모든 사람이 개선하고 기여할 수 있습니다. 다시 말하지만, 당신은이 시점에서 공식화하고 싶을 수도 있지만, 나는 아직도 그 필요성을 생각하지 않습니다.

처음 OOP (또는 알고리즘 디자인)를 시작했을 때 코딩하는 동안 머리에 모든 것을 할 것입니다. 그러나 합리적인 복잡한 프로젝트를 수행 한 후에는 시스템의 다른 객체 간의 상호 작용을 도출하는 데 도움이됩니다.

나는 혼자서 프로젝트를 수행하므로 상호 작용을 위해 수업과 종이를 설계하기 위해 많은 색인 카드를 사용합니다. 요점은 변경하기 쉬워야한다는 것입니다. UML을 수행하기 위해 다이어그램 편집기 인 Dia와 함께 연주했지만 변경을하는 것은 너무 어렵습니다. 나는 빠른 변화를 만들 수 있기를 원하기 때문에 가장 잘 작동하는 것을 알아낼 수 있습니다.

TDD를 언급하고 "스파이크[1] 프로젝트를 수행하면 시스템을 설계 할 때도 도움이 될 수 있습니다.

1] C#의 Extreme Programming Adventures, Page 8 :

"스파이크"는 "경험"을 의미하는 극단적 인 프로그래밍 용어입니다. 우리는 스파이크를 한 가지만 배우는 것을 목표로하는 빠르고 거의 무자비한 실험으로 스파이크를 생각하기 때문에 단어를 사용합니다. 보드를 통해 큰 손톱을 뿌린다 고 생각하십시오.

다른 팁

작거나 매우 경계가있는 작업의 경우 개발자는 모든 종류의 다이어그램이 불필요한 단계라는 사실에 거의 보편적으로 동의한다고 생각합니다.

그러나 더 크고 복잡한 시스템을 다룰 때, 특히 두 개 이상의 프로세스가 상호 작용하거나 복잡한 비즈니스 로직이 필요할 때 프로세스 활동 다이어그램 매우 유용 할 수 있습니다. 우리는 개발에 상당히 순수한 민첩한 방법을 사용하며 이것이 우리가 사용하는 거의 유일한 유형의 다이어그램이라는 것을 알게됩니다. 당신 앞에있는 모든 큰 조각을 플로우 라인과 연결하는 것만으로도 높은 수준의 디자인을 최적화 할 수있는 것은 놀랍습니다. 다른 방법이 아닌 문제에 대한 다이어그램을 문제에 맞게 조정하는 것이 얼마나 중요한지 강조 할 수 없으므로 링크는 좋은 출발점을 제공하지만 시스템/문제를 나타내는 데 의미가있는 것을 추가하십시오.

스토리지의 경우 화이트 보드는 브레인 스토밍에 적합 할 수 있으며 아이디어가 여전히 개선 될 때, 나는 아이디어가 상당히 최종적인 형태를 취하면 전자와 위키가 더 좋다고 주장합니다 (Omnigraffle은 당신이 있다면 다이어그램의 왕입니다. 직장에서 Mac을 사용할 수있을만큼 운이 좋다 :). 이 모든 다이어그램을 버리는 영역이 있으면 새로운 사람이 코드를 발굴하지 않고도 시스템의 전체 부분을 빠르게 이해하는 데 매우 도움이 될 수 있습니다. 또한 활동 다이어그램은 더 큰 로직 블록을 나타내므로 항상 최신 상태로 유지 해야하는 문제는 없습니다. 시스템을 크게 변경하면 그렇습니다. 그러나 기존 다이어그램을 사용하여 어쨌든 변경을 계획 할 수 있기를 바랍니다.

Kruchten 's를 읽으십시오 4+1 뷰.

다음은 진행할 수있는 방법입니다.

  1. 유스 케이스 다이어그램에 사용 사례를 수집하십시오. 이것은 배우와 사용 사례를 보여줄 것입니다. 다이어그램은 많은 세부 사항으로 시작하지 않습니다.

  2. 사용 사례의 우선 순위를 정해 고 가치 사용 사례에 집중하십시오.

  3. 이야기를 쓰십시오. 원한다면 활동 다이어그램을 그릴 수 있습니다.

위는 완전히 비 기술적입니다. UML은 사용할 모양에 대해 몇 가지 규칙을 부과하지만 그 외에는 최종 사용자 용어로 사물을 묘사 할 수 있습니다.

  1. 명사 분석을 수행하고 클래스 다이어그램을 그리며 엔티티와 관계를 설명 할 수 있습니다. 처음에는 이들은 사용자 용어에있을 것입니다. 괴짜 기술 콘텐츠가 없습니다.

  2. 활동 다이어그램을 확장하거나 시퀀스 다이어그램을 추가하여 처리 모델을 표시 할 수 있습니다. 이것은 최종 사용자, 비 기술적 처리 묘사로 시작됩니다.

  3. 클래스 및 활동 다이어그램을 통해 반복하여 분석에서 설계로 이동할 수 있습니다. 어느 시점에서, 당신은 분석을 중단하고 엔지니어링 모드로 옮길 것입니다. 사용자는이 모든 사진을보고 싶지 않을 수 있습니다.

  4. 실제보기에 대한 개발보기 및 배포 다이어그램을위한 구성 요소 다이어그램을 그릴 수 있습니다. 또한 시스템 개념이 확장되고 개선되면서 반복 할 것입니다.

응용 프로그램을 설계 할 때 (주로 웹 애플리케이션을 작성하지만 다른 사람에게 적용됨) 일반적으로 최종 사용자가 실제로 필요한 것을 정확하게 결정하기 위해 사용자 스토리를 만듭니다. 이들은 일반적인 "비즈니스 요구 사항"을 형성합니다.

사용자 스토리가 풀린 후에는 앱을 사용할 때 사람들이 취할 경로를 세우기 위해 흐름도를 만들어냅니다.

이 단계 (때로는 승인 프로세스를 얻는) 후에 인터페이스 스케치 (펜/연필 및 그래프 용지)를 만들고 데이터베이스의 레이아웃을 시작합니다. 이것은 다음 단계는 일반적으로 가장 시간이 많이 걸리는 프로세스입니다.

다음 단계는 스케치를 가져 와서 청소 된 와이어 프레임으로 바꾸는 것입니다. 나는이 단계에 Omnigraffle을 사용합니다. Visio보다 몇 년 앞서 있습니다.

그런 다음 일반적인 UML 다이어그램 또는 기타 객체 레이아웃 / 기능 조직을 수행 할 수 있지만 비즈니스 사람들은 그런 세부 사항에 대해 크게 신경 쓰지 않을 것입니다 :)

디자인을 구성 할 때, 나는 청중에게 아이디어를 깨끗하고 쉽게 전달하는 것에 관심이 있습니다. 그 청중은 배경이 다른 (일반적으로) 다른 사람들로 구성됩니다. 내가하고 싶지 않은 것은 특정 디자인 모델의 "교육 모드"에 들어가는 것입니다. 고객에게 단단한 머리의 화살표가 무엇을 의미하는지, 그리고 속이 빈 곳이나 정사각형이 무엇을 의미하는지와 원이 무엇을 의미하는지에 대한 상당한 시간을 보내야한다면, 나는 진보를하지 않습니다. 최소한 진보가 아닙니다. 나는 원한다.

그것이 합리적으로 비공식적이라면, 나는 화이트 보드 나 종이로 스케치합니다 - 블록과 간단한 화살표. 이 시점에서 거친 디자인의 요점은 우리가 같은 페이지에 있는지 확인하는 것입니다. 그래도 고객마다 다릅니다.

더 형식적이라면 UML 도구를 꺼내어 다이어그램을 만들 수 있지만 대부분 고객은 소프트웨어를 작성하지 않으며 아마도 내부에서는 약간 흥미로울 수 있습니다. 우리는 그것을 "버블 앤 라인"레벨로 유지하고 설명이 필요한 곳에 총알 목록을 만들 수 있습니다. 내 고객은 클래스 다이어그램이나 그와 비슷한 것을보고 싶지 않습니다.

GUI 상호 작용을 보여 주어야한다면 Visual Studio에서 간단한 창 프로토 타입을 함께 버릴 것입니다. 빠르고 쉽습니다. 나는 고객이 그와 쉽게 관련 될 수 있다는 것을 알았습니다.

간단히 말해서, 나는 이해 당사자와 지분 소지자에게 디자인을 전달할 수있는 간단한 그림 (어떤 형식으로) 제작합니다. 나는 내가 원하는 일과 더 중요한 것은 그들이해야 할 일을 알고 있고, 그들이해야 할 일을 알고, 그것과 이야기를 나누는 것을 확인합니다. 사람들이 그곳에서 길을 잃었 기 때문에 일반적으로 잡초에 들어 가지 않습니다. 궁극적으로, 고객과 저 (및 다른 모든 당사자)가 디자인을 통해 이야기 한 후 같은 페이지에 있다면 나는 행복한 사람입니다.

나는 민첩한 사람이므로 다이어그램에 많은 시간을하지 않는 경향이 있습니다. 화이트 보드 나 냅킨에서 무언가를 스케치하면 특정 문제 나 요구 사항을 이해하도록하는 데 도움이 될 때가 있지만 고객 앞에서 작동하는 소프트웨어를 얻는 것보다 실제로 작동하는 방법을 확인할 수 있습니다. 고객이 프론트 디자인을 통해 빈번한 반복과 데모를받는 상황에 처한 경우, 나는 그것을 위해 간다. 통과 단위 또는 통합 테스트의 형태로 조기 피드백을받는 것이 좋으면 더 좋습니다 ( 맞다 여기서 잘 작동합니다).

너무 자주 프로토 타입이 최종 제품이되기 때문에 일반적으로 프로토 타입을 싫어합니다. 나는 기본적으로 패키지 및 판매 된 "개념 증명"으로 판명 된 상업 제품을 확장하는 프로젝트 작업의 불행을 겪었습니다. 이 프로젝트는 핵심 애플리케이션에 대해 1000 개가 넘는 결함을 기록한 후 취소되었습니다 (현재 진행중인 개선 사항이나 사용자 정의를 계산하지 않음).

나는 UML을 사용하려고 시도했지만 다이어그램을 보는 사람이 UML을 이해하지 않는 한 도움이되지 않는다는 것을 알았습니다. 화면 모형은 일반적으로 나쁜 생각이 아니지만 사용자에게 직접 영향을 미치는 응용 프로그램의 측면 만 표시하므로 프리젠 테이션이 아닌 것에 대해 많은 마일리지를 얻지 못합니다. 이상하게도 Visual Studio의 워크 플로 디자이너와 같은 충분한 도구는 비 개발자가 이해하기 쉬운 명확한 다이어그램을 생성하므로 응용 프로그램이 혜택을받을만큼 복잡한 경우 핵심 애플리케이션 워크 플로우를 생성하는 데 좋은 도구를 만듭니다.

그럼에도 불구하고, 몇 년 동안 내가 사용한 모든 접근법 중에서, 사용자가 문제를 얼마나 잘 이해하는지 알려주는 사용자가 손을 대는 것을 능가하는 것은 없습니다.

"통증없는 기능 사양"에 대한 Joel의 기사를 읽는 것이 좋습니다. 1 부 제목입니다 "왜 귀찮게?".

우리는 사용 모형 스크린 직장에서 ( "빠르고 쉬운 화면 프로토 타입"). 화면을 변경하기 쉽고 범위는 이것이 단지 디자인임을 분명히합니다.

그런 다음 모형은 사양이 포함 된 Word 문서에 포함됩니다.

에서 개념적 블록 버스트 : 더 나은 아이디어에 대한 가이드 James L. Adams :

지적 블록은 비효율적 인 정신 전술 선택 또는 지적 탄약 부족을 초래합니다. . . . 1. 잘못된 언어 (구두, 수학적, 시각적)를 사용하여 문제 해결 - 시각적으로 더 쉽게 달성 할 수있을 때 문제를 수학적으로 해결하려고하는 것처럼

(pg 71, 3 판)

말할 것도없이, 다이어그램을 사용하여 수학으로 더 잘 캡처 될 수있는 아이디어를 캡처하기로 선택한다면 똑같이 나쁩니다. 물론 트릭은 문제와 해결책을 모두 표현할 수있는 올바른 언어를 찾는 것입니다. 물론 문제와 해결책을 모두 표현하기 위해 둘 이상의 언어를 사용하는 것이 적절할 수 있습니다.

내 요점은 다이어그램이 가장 좋은 방법이라고 가정합니다. 나는 그 가정을 기꺼이 할 것이라고 확신하지 못한다. 다른 프레임 요구 사항 및 제안 된 설계 방법을 통해 더 나은 답변을 얻을 수 있습니다 (그리고 고객은 결과에 더 행복 할 수 있습니다).

그건 그렇고, 개념적 블록 버스트는 독서를 적극 권장합니다.

UML 조언은 많은 이해 관계자와 많은 기고자들과 함께 대규모 및 위험 회피 프로젝트를 진행하는 경우 잘 작동합니다. 이러한 프로젝트에서도 의사 결정자에게 보여주는 프로토 타입을 개발하는 데 실제로 도움이됩니다. 일반적으로 UI를 통해 걸어 가고 전형적인 사용자 스토리만으로도 충분합니다. 즉, 의사 결정자들에게 UI에 중점을 둔 것은 유효성 검사, 비즈니스 규칙 및 데이터 무결성과 같은 중요한 백엔드 문제를 무시하게 만드는 경향이 있어야합니다. 비즈니스 결정보다는 이러한 문제를 "기술적"문제로 작성하는 경향이 있습니다.

반면에, 코드를 신속하게 변경할 수있는 민첩한 프로젝트를 진행하고 있다면 (그리고 롤백 실수를 신속하게) 모든 작품으로 진화론 적 프로토 타입을 만들 수 있습니다. 응용 프로그램의 아키텍처는 빠른 변화를 지원할 수있을 정도로 유연하고 유연해야합니다 (예 : 벌거 벗은 물체 디자인 패턴 또는 레일 스타일 MVC). 실험을 장려하는 개발 문화를 갖는 데 도움이되며 BDUF가 성공적인 소프트웨어의 예측자가 아니라는 것을 인정합니다.

4+1 조회수는 기술인에게만 좋습니다. 그리고 그들이 충분히 관심이있는 경우에만. 고객과 유스 케이스 다이어그램을 논의하기 위해 고군분투 한 마지막 12 번을 기억하십니까?

내가 찾은 유일한 것은 모든 사람과 함께 작동하는 것은 실제로 응용 프로그램의 화면을 보여주는 것입니다. 당신은 스스로 말했습니다 : 그림은 천 단어의 가치가 있습니다.

흥미롭게도 두 가지 접근 방식이 있습니다.

  1. 사용자에게 완전한 사용자 설명서 (개발이 시작되기 전) 또는
  2. 완성 된 앱처럼 보이지 않는 모형을 사용하십시오. 먼저 앱의 주요 화면에 대해 토론하십시오. 만족하면 한 번에 하나의 시나리오를 모형에 대해 논의하십시오.

옵션 (1)의 경우 원하는 것을 사용할 수 있습니다. 실제로 중요하지 않습니다.

옵션 (2)의 경우 펜과 종이로 시작하는 것은 완전히 괜찮습니다. 그러나 곧 당신은 특수 모형 도구를 사용하는 것이 좋습니다 (모형을 편집, 유지 관리 또는 구성해야하자마자).

나는 2005 년에 내 자신의 mockup 도구를 작성하게되었다. mockupscreens

그리고 여기 내가 알고있는 가장 완전한 모형 도구 목록이 있습니다. 그 중 많은 사람들이 무료입니다. http://c2.com/cgi/wiki?guiprotoTypingTools

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top