부끄럽지만 해당 타이틀에 관하여 지금까지 생각해 본 적이 없었다. 일반적인 SDLC만을 알고 있었고, .NET에 대한 생명주기를 따로 다루고 있었는 지 몰랐었지만 이번에 면접을 보면서 알게되었다.
그래서 간략하게 내가 참고했던 자료들을 모아서 블로그에 정리해보고자 한다.
SDLC 란?
Software Development Life Cycle : 소프트웨어 개발 생명 주기
소프트웨어를 처계적으로 개발하고 관리하기 위해서 개발 과정을 단계 별로 나누어 구분한 것
일반적인 6단계는 아래와 같다.
요구사항 분석 - 시스템 명세 - 설계- 구현 - 테스트 - 운영 및 유지보수
필요한 단계로 피드백을 반복 수행 하면서 소프트웨어의 완성도를 높일 수 있다.
1. 요구사항 분석
사용자로부터 문제를 제기 받아서 사용자와 함께 기능, 제약조건, 목표 등을 정의
2. 시스템 명세
시스템이 어떻게 동작하는 지 정의
입력 자료, 처리 내용, 생성되는 출력이 무엇인지 등을 정의
3. 설계
2단계에서 정의된 기능이 실제로 수행될 수 있도록 수행 방법을 논리적(알고리즘)으로 결정
1) 시스템 구조 설계 : 모듈 간의 관계와 구조 설계
2) 프로그램 설계 : 프로그램 내의 각 모듈에서의 처리 절차나 알고리즘 설계
- 종류
(1) 하향식 설계 방식 : 상위 -> 하위 방향
상위 단계의 구성요소를 통합하여 테스트한 후에, 각각의 구성요소에 부속된 하위 단계의
구성 요소를 테스트
(2) 상향식 설계 방식 : 하위 -> 상위 방향
최하위 단위 프로그램을 테스트한 후에, 그 상위 단계의 구성 요소를 테스트
3) 사용자 인터페이스 설계 : 사용자가 시스템을 사용하기 위해 보여지는 부분 설계
4. 구현
프로그래밍 언어를 사용하여 실제로 프로그램을 작성하는 단계
프로그래밍 언어, 기법, 스타일, 개발 순서 등을 결정해야 한다.
- 프로그래밍 기법
1) 구조화 프로그래밍 : 지정문, 조건문, 반복문만 사용하여 3가지 제어 구조로 표현하는 기법
2) 모듈러 프로그래밍 : 프로그램을 여러 개의 작은 모듈로 나누어 계층 관계를 갖도록 구성
5. 테스트
개발한 시스템이 요구사항을 만족하는 지, 예상 결과와 실행 결과가 일치 하는 지,
오류는 없는 지 등을 검사하여 완성도를 높이는 단계
- 종류
1) 단위 테스트 : 요구 사항 명세서에 있는 기능들이 제대로 수행되는지 테스트
2) 통합 테스트 : 단위 테스트를 통과한 모듈을 연결하여 전체 시스템으로 통합적 시행 테스트
3) 인수 테스트 : 완성된 시스템을 인수하기 위해서 실제 자료를 사용한 최종 테스트
6. 유지보수
시스템이 인수되고 설치된 후 일어나는 모든 활동이며, 소프트웨어 생명 주기에서 가장 비용이 큰 기간
ASP.NET 페이지 Life Cycle (수명 주기)란?
클라이언트가 페이지를 요구할 때, 발생하는 일련의 페이지 생성 ~ 소멸 까지의 처리 과정
ASP.NET 페이지가 실행되면 이 페이지는 일련의 처리 단계를 수행하는 수명 주기를 거친다.
- 페이지 수명 주기를 이해해야 하는 이유
각 Page Event 마다 적절한 로직을 추가하여 원하는 결과를 낼 수 있기 때문
ex ) 공통적으로 상속되는 BasePage 의 OnPreRender() 이벤트에 공통으로 사용하는 js, css, javascript 변수 등을 추가하여 불필요한 중복 소스를 피할 수 있다.
수명주기 6 단계
(1) Init - ViewState 복구 - 게시된 데이터 처리 - (2) Load - 게시 변경 알림 - (3) PostBack - (4) PreRender - ViewState 저장 - (5) Render - (6) Unload
1) Init
페이지 객체 생성 직후 단계
ViewState 값이 복구되기 전이기 때문에, 정확한 컨트롤의 상태는 참조 불가함
초기화 작업을 위주로 함 (이벤트, 동적 로딩 틍...)
* 들여쓰기는 PostBack일 때만 발생한다
2) ViewState 복구 (이벤트 X)
ViewState에 기록된 내용을 바탕으로, 각 컨트롤에 상태를 적용하는 단계
PostBack 일 때 발생하며, 페이지를 처음 요청할 땐 발생하지 않는다
3) 다시 게시된 데이터 처리
폼 전송에 의한 컨트롤 값을 페이지 객체에 적용시키는 단계
일반적으로 PostBack 일 때 발생하며, 페이지를 처음 요청 시 발생 X
4) Load
페이지 객체 및 컨틀돌 로딩 직후 단계
ViewState 값의 복구 직후여서 컨트롤의 상태가 가장 정확하다
가장 코딩을 많이하는 단계 중 하나
5) 게시 변경 알림
이벤트 처리를 위한 단계
페이지를 처음 요청 시 발생 X
6) PostBack
사용자 발생 이벤트 처리 단계
사용자의 행위에 의한 이벤트 핸들러를 실행하는 단계
페이지를 처음 요청 시에는 발생 X
7) PreRender
페이지 내의 컨트롤의 렌더링 하기 전 단계
일반 적으로 처리 순서로 인한 논리적인 문제를 해결하기 위해서 사용한다
8) ViewState 저장
현재 페이지의 객체의 각 컨트롤 상태를 ViewState 로 기록한다
9) Render
페이지 객체 이하 컨트롤의 내용을 클라이언트에게 출력할 HTML로 렌더링 하는 단계
10) Unload
페이지 객체가 소멸하기 직전 단계
페이지 요청 시 무조건 발생한다. (중간 단계에서 이동이 발생해도 처리됨)
단
계 |
설
명 |
페이지 요청 |
페이지 요청은 페이지 수명 주기가
시작되기 전에 발생
사용자가 페이지를 요청하면 ASP.NET에서는 페이지를 구문 분석하고 컴파일하여 페이지 주기를 시작할지 여부 또는 페이지를
실행하지 않고 캐시된 버전의 페이지를 응답으로 보낼 수 있는지 여부를 결정 |
시작 |
시작
단계에서는 Request 및 Response 같은 페이지 속성이 설정
이 단계에서 페이지는 요청이 포스트백인지 아니면 새 요청인지를 확인하여 IsPostBack 속성을
설정함.
또한 UICulture속성을 설정 |
초기화 |
페이지 초기화 단계에서는 페이지의
컨트롤을 사용할 수 있으며 각 컨트롤의 UniqueID 속성이 설정됨.
해당하는 경우 마스터 페이지와 테마도 페이지에 적용
현재 요청이 포스트백인 경우에는 포스트백 데이터가 아직 로드되지 않았고 컨트롤 속성 값이 뷰 상태의 값으로 복원되지
않은 상태 |
로드 |
로드 단계에서는 현재 요청이 포스트백인
경우 뷰 상태 및 컨트롤 상태에서 복구된 정보와 함께 컨트롤 속성이 로드된다 |
포스트백
이벤트 처리 |
요청이 포스트백인 경우 컨트롤 이벤트
처리기가 호출됨
이후에는 모든 유효성 검사기 컨트롤의 Validate 메서드가 호출되어 각 유효성 검사기 컨트롤 및
페이지의 IsValid 속성을 설정 |
렌더링 |
렌더링에 앞서 페이지와 모든 컨트롤에
대한 뷰 상태가 저장됨 렌더링 단계를 진행하는 동안, 페이지에서 각 컨트롤에 대한 Render 메서드를
호출하여 페이지에 대한 Response 속성의 OutputStream 개체에 출력하는 텍스트 기록기를 제공함 |
언로드 |
페이지가 완전히 렌더링되어 클라이언트에
전달되고 취소할 준비가 되면 Unload 이벤트가 발생한다. 이
단계에서는 Response 및 Request 같은 페이지 속성이 언로드되고 정리 작업이 수행됨 |
MS에서 표로 정리된 .NET 수명주기 내용
참고
https://m.blog.naver.com/PostView.nhn?blogId=kirayamato4&logNo=100208915677&proxyReferer=https%3A%2F%2Fwww.google.com%2F
http://blog.jakeymvc.com/five-reasons-to-use-mvc/
https://useful-coding-dictionary.tistory.com/entry/%ED%8E%98%EC%9D%B4%EC%A7%80-%EC%88%98%EB%AA%85-%EC%A3%BC%EA%B8%B0
https://hsw85.tistory.com/entry/1-ASPNET-%EC%88%98%EB%AA%85%EC%A3%BC%EA%B8%B0