개념 정리

이주빈·2023년 11월 14일

웹 개발 개념 정리

목록 보기
27/29

1.하향식 설계와 상향식 설계 방법에 대하여 간략히 설명하시오.

*상향식 프로그래밍 (bottom-up programming)

  • 작은 기능의 단위들을 만들고 이 단위들을 상호 작용시켜 무엇인가를 하도록 만드는 것

  • 장점 : 일반화하기가 쉬워 유연한 코드 작성 가능

  • 단점 : 초반에 너무 복잡하고 너무 깊은 관계를 가지는 프로그래밍을 설계하다 보면, 구조가 너무 복잡해져 프로그래밍

    분석과 수정이 어려워질 수 있음

    *햐향식 프로그래밍 (top-bottom programming)

  • 문제를 정의하고 해결 작업에 필요한 요소들로 분해 후 이들을 프로그래밍하는 것

  • 장점 : 초반에 기능을 구현할 때 고려해야 하는 고려의 범위가 좁기 때문에 개발할 때 많이 고민할 것 없이 해당 기능에 맞게 간단하게 구현이 가능

  • 단점 : 너무 간단하게만 생각한 나머지 딱딱하고 고정적인 프로그램을 만들 수 있음

2.IA(Information Architecture)에 대하여 간략히 설명하시오.

정보 아키텍처는 모델을 정보 개념을 활용하여 복합 시스템으로 명확하게 표현하는 것을 말한다.

3. 기능 명세서 작성 방법에 대하여 간략히 설명하시오.

기능 명세란 무엇인가 기능 명세란 사용자의 관점에서 최종 제품이 어떤 모습이며 어떻게 동작할 것인지를 기술한 문서를 말한다.

1) 시나리오 작성

기술 명세는 사용자 관점에서 시스템을 바라본 것이므로, 이를 가장 잘 기술하는 방법은 실제 사용자를 가정하고 시스템을 어떻게 쓸 것인지 시나리오를 작성해 보는 것이다. 예를 들어, 온라인 영어 학습 사이트에 대한 기술 명세를 쓴다고 하면, 성적은 중위권이며 방과 후에 PC방에서 게임하는 것이 취미인 15살 박 모 군과 같이 구체적인 인물을 설정하고, 이런 인물이 영어 학습 시스템을 사용할 때 어떤 패턴을 보일 것인지를 기술하는 것이 효과적이다.
이때 시나리오는 유스 케이스(Use Case)가 될 수도 있고, 조금 더 단순화된 형태인 유저 시나리오(User Scenario)가 될 수도 있다. 소프트웨어 방법론이나 프로젝트의 성격에 따라 어떤 방식을 선택해도 무방하다. 하지만 원칙은 시스템의 모든 기능을 한 번 이상을 이용할 수 있도록 충분히 많은 시나리오를 작성해서, 개발자가 시스템을 설계할 때 전혀 고려된 적이 없는 상황을 마주치는 일이 생기지 않도록 해야 한다.
기능 명세의 시나리오는 무엇을 테스트해야할지 단서를 제공한다는 측면에서 소프트웨어 테스트나 품질보증(Quality Assurance, QA) 팀에게도 소중한 문서이다. 특히 시스템의 기능 테스트(Functional Test)는 유저 시나리오에 바탕을 뒀을 때 가장 효과적이다. 유저 시나리오는 최종 제품이 원래 요구사항에 기술된 요소를 모두 충족시켰는지를 판단하는 중요한 근거가 되기 때문이다.

2) 세부사항 작성

기능 명세를 작성함에 있어서는 세부사항이 무척 중요하다. 특히, 무엇인가 잘못될 수 있는 경우 모든 가능성에 대해서 꼼꼼히 명세를 작성해야 한다. 예를 들어, 전자상거래 웹페이지의 로긴 페이지를 만든다고 한다면 다음과 같은 이슈를 모두 고민해야 한다.

1) 등록되지 않는 ID로 로긴한 경우
2) 등록된 ID지만 패스워드가 틀린 경우
3) 같은 ID에 3번 이상 다른 패스워드를 입력했을 경우 추가적인 로그인 시도를 금지할 것인가
4) 아이디와 패스워드를 잃어버린 사람이 이를 되찾는 방법은
5) 패스워드 관련 힌트를 제공할 것인가
6) 한 번 로긴한 후에는 얼마나 오래 세션이 지속되는가

세부사항을 작성할 때, UI를 중심으로 기능을 기술하는 것이 가장 효과적이다. 특히, 웹개발의 경우 각각의 페이지를 기준으로 소프트웨어가 어떻게 동작하는지 설명하는 방법이 일반적이다. 모든 페이지에 고유의 이름을 붙이고, 각 페이지에서 나오는 메뉴와 UI 위젯이 어떤 역할을 하는지 구체적으로 기술한다.

4. 데이터베이스 정규화에 대하여 간략히 설명하시오.

정규화는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다. 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 이를 단계별로 구분하여 정규형이 높아질수록 이상현상은 줄어들게 된다.

정규화의 장점)

데이터베이스 변경 시 이상 현상을 제거할 수 있다.
정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 된다.
데이터베이스와 연동된 응용 프로그램에 최소한의 영향만을 미치게 되어 응용프로그램의 생명을 연장시킨다.

정규화의 단점)

릴레이션의 분해로 인해 릴레이션 간의 JOIN연산이 많아진다.
질의에 대한 응답 시간이 느려질 수도 있다. 데이터의 중복 속성을 제거하고 결정자에 의해 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다.
따라서 데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있다.
만약 join이 많이 발생하여 성능 저하가 나타나면 반정규화(De-normalization)를 적용할 수도 있다.

5. WireFrame에 대하여 간략히 설명하시오.

와이어프레임의 개념)
-프로젝트 또는 기술의 기본 프레임워크를 요약하는 시각적 다이어그램

페이지 계통도 또는 화면 청사진으로도 알려져 있는데, 요소들이 서로 어떻게 관련되어 있으며 구조화되어 있는지 보여준다.

-상위 프로세스이다.

사용 범위)

-디자인 & 레이아웃
사용자 경험(UX) 설계자는 이를 사용해 너무 자세히 설명하지 않으면서도 작업의 디자인과 레이아웃을 계획하는 경우가 많다.
이는 설계 프로세스의 첫 번째 단계로서 살을 붙여 상세 내용을 더하기 전에 이루어진다.
디자인과 레이아웃 이외에도 와이어프레임이 요약하는 정보는 다음과 같다.

-페이지 구조
와이어프레임은 페이지나 모바일 앱의 구조를 요약합니다. 이렇게 하면 특정 요소를 어디에 배치하고 전체적인 디자인이 어떤 모습일지를 디자이너가 판단하는 데 도움이 됩니다.

-정보 아키텍처
디자이너는 구조 내에서 페이지 요소가 자리잡을 곳도 계산해야 합니다. 이는 정보 아키텍처라 알려져 있습니다. 디자이너는 페이지 구조 내에서 이들 요소가 어디로 가야 하는지 구성할 수 있습니다.

-사용자 흐름
UX 디자이너는 사용자가 페이지에서 어떻게 이동할지 고려해야 합니다. 이는 와이어프레임을 만들면 도움이 될 수 있는 경우입니다. 와이어프레임을 만들면 디자이너는 사용자의 관점에서 본문 내용을 고려하게 됩니다. 이로 인해 디자이너가 사용자 친화적인 페이지나 앱을 만들 가능성이 높아집니다.

와이어프레임의 기능)
개발자는 와이어프레임을 사용하여 기술 디자인 단계로 이동하기 전에 앱의 기능을 시각화한다.
개발자는 어떻게 앱이 작동하기를 원하는지, 그리고 이를 실현하기 위해 어떤 리소스가 필요한지 확인할 수 있다.

profile
개발 공부 블로그

1개의 댓글

comment-user-thumbnail
2023년 11월 14일

공감하며 읽었습니다. 좋은 글 감사드립니다.

답글 달기