프로젝트 분석, 설계 with 소프트웨어 생명주기

2ntro·2022년 7월 26일
0

소프트웨어 생명주기

1. 왜 알 필요가 있는가?

1.1 개발 시작 전 결정해야할 사항들이 존재함

  • 개발 목표는 무엇인가?
  • 소프트웨어는 어떤 동작을 수행하는가?
  • 어떤 기능을 구현할 것인가?
  • 구현할 기능들 간의 우선순위는 어떻게 결정할 것인가?

1.2 결정하지 않을 경우 발생하는 문제들

  • 개발 지연
  • 구현 기능 미개발
    -> 낮은 품질의 프로젝트

1.3 요약

  • 개발 단계에서 원활한 진행이 이루어지기 위해서 소프트웨어 공학을 알 필요가 있음
  • 지속적인 유지보수성을 유지하고, 문제의 발생을 막는다.

2. 개념 (쉽게 적용가능한 것들 위주로)

2.1 소프트웨어 생명 주기

  • 소프트웨어 생명주기(SDLC: Software Development Life Cycle): 소프트웨어를 기획부터 개발, 폐기까지를 하나의 주기로 보고 이를 효과적을 관리하기 위한 절차를 정의한 것
  • 대표적 모델: 폭포수 모델, 프로토타이핑 모델, 나선형 모델, 반복적 모델
  • 폭포수 모델은 이해하기 쉽고, 소규모 프로젝트에 적용하기 좋다.
  • 4단계로 간략화 가능: 분석 -> 설계 -> 개발 -> 테스트

2.2 핵심

2.2-1 요구사항 분석

요구사항

  • 사용자가 프로그램에서 해결하기를 원하는 '무언가'이다.
  • 프로젝트의 범위를 결정한다.
  • 어떻게(How)보다는 무엇을(What)에 초점을 두어 작업한다.
  • Ex) 공간은 침실, 안방, 거실, 화장실 하나로 구성된다.

요구사항 분류

1.기능적 요구사항: 시스템이 수행할 기능
Ex) 현금인출기는 현금인출, 잔금조회, 계좌이체 등의 기능을 갖는다.
2.비기능적 요구사항: 쉽게 말해 "제한사항"을 정의하는 것
Ex) 특정 언어를 사용하는 제한, 응답속도가 nms 이내 일 것등.

요구사항 모델링

  • 정리한 요구사항을 모델로 구체화한다.
  • UML Diagram을 이용해서 관점에 따라 추상화한다.
  • UML Diagram의 종류: 클래스 다이어그램, 시퀀스 다이어그램 등

2.2-2 설계

설계

  • 어떻게 구현할 것인가
  • 시스템의 논리 구성
  • 모듈들의 배치를 결정
  • Ex) 화장실은 거실에 붙어있고, 침실과 안방은 2층에 있다.

설계 원리(탑-다운)

1.추상화: 대상에 대하여 특정한 목적에 관련된 정보에 집중하고 나머지 정보는 무시하는 관점
Ex) 자동차: 액셀을 밟으면 속도가 오르고, 브레이크를 밟으면 속도가 줄어드는 객체

2.캡슐화: 서비스를 추구하는 핵심만을 노출시키고 어떻게 서비스를 제공하는지 자세한 것을 숨긴다.

  • 내부에 어떻게 데이터를 저장하는지, 기능을 어떻게 제공하는지 정보를 은닉한다.

3.모듈화: 복잡한 문제를 이해하기 쉽게끔 단순한 구성요소로 풀어서 해결한다.

  • 너무 많은 구성요소로 분할하면 오히려 이해가 어려워진다.

4.결합도, 응집도: 모듈간의 결합도는 낮게, 응집도는 높게 유지한다.
-> 단순성, 효율성을 추구하기 위한 기준으로 사용됨

설계 시각화

  • 구현하고자 하는 시스템의 관점에 따라 아키텍쳐의 설계를 시각화한다.
  • 관점에 따라 Client-Server형, 계층형, 이벤트 기반형, MVC 등...

3. 프로젝트 시작 전 분석 적용해보기

예시) 도서관 검색 시스템

요구사항 분석

  • 사용자는 도서관에 존재하는 책에 대한 정보를 얻기 위해 책 검색 기능을 원한다.
얻을 것
  • 어느 도서관의 정보를 얻을 것인가?

  • 한번에 몇 개의 책 정보를 얻어올 것인가?

  • 책 정보는 얻어온 전체 정보를 표시할 것인가?

  • 오는대로 족족(동기) vs 빨리 오는거 우선 (비동기)

  • 더보기

  • 정렬 기능

  • 페이지 기능

검색 기능
  • 검색은 최대 몇자를 지원하는가?
  • 검색에 사용할 언어는 어떻게 정할 것인가?
  • 검색 응답시간은?
  • 검색 by 저자, 검색 by 출판사, 검색 by 발행년도
  • 검색 예외 처리(Ajax if/else)
개인정보
  • 사용자의 개인정보를 저장할 것인가?
  • 개인화 기능을 제공할 것인가?
  • 개인화 기능을 사용한다면 보안은 어떻게 보장할 것인가
환경
  • 사용할 언어와 프레임워크는?
  • 어떤 환경에서 서비스를 제공하는가? 브라우저, 앱

검색 사이트 Flow Chart 예시

4. 인용

0개의 댓글

관련 채용 정보