top of page

[Data Structure] 01. Software System Life Cycle : 시스템 라이프 사이클

  • 김용현
  • 2017년 10월 22일
  • 2분 분량

* Acknowledgment: The content of this file is based on the class in UNIST. 수업 내용을 기반으로 작성한 컨텐츠입니다.

There are 5 steps in the SW system life cycle.

시스템 라이프 사이클에는 총 5가지의 단계로 구분됩니다.

쉽게, '프로그래머는 어떠한 단계를 거침으로써 코드를 작성하는가?' 라고 보셔도 됩니다.

1. Requirements 우선, 필요사항들을 체크합니다

- Specification of input and output (어떤 인풋과 아웃풋을 사용할까?)

- Specification of functions (어떠한 함수를 사용할까?)

- Error Handling (어떠한 에러가 발생할 수 있으며 어떻게 해결할까?)

2. Analysis 그다음, 제작할 프로그램의 내용을 세세히 분석합니다

- Break down the problems in manageable pieces (우리가 다룰 수 있을만한 코드의 사이즈로 우선 다 나눠서 생각합니다)

- Strategies (그 분석의 전략으로는 2가지가 있습니다)

* Bottom-up (상향식 분석)

- Making small / specific functions first (작고 세세한 기능을 하는 함수들부터 구체화)

- Connect those functions to build a large system (그 함수들을 잘 엮어서 시스템을 키워나감)

* Top-down (하향식 분석)

- High level plan first, subsequently refine for low level (일단 뼈대부터 생각을 해본다 그다음 세세하게 가지들을 뻗어나가며 구체화)

- Preferred for complex system (복잡하고 긴 코드에서 선호되는 분석 방식)

3. Design 분석한 내용을 기본 하에 구체화를 마무리합니다

- Data objects and operations (작성할 프로그램의 객체와 연산 등을 정확히 정의해둬야합니다)

* Define Abstract Data Type (추상자료형을 정의합니다 - 추상자료형의 성격에 맞게, 사용자는 그 기능은 쉽게 알 수 있도록하며 내부적인 구동 방법은 은닉을 해야합니다)

* Specify Algorithms (자신의 프로그램의 알고리즘을 정확하게 정의합니다. 내가 만들 프로그램인데, 어떻게 구동을 시킬지 제대로 잡지 않고 바로 코딩으로 덤벼들면 매우 힘들겠죠?)

* Example: Scheduling system of a university

- Data Objects: Students, Courses, Professors

- Operations: Inserting, Removing, Searching

- NO CODING YET (다시 한번 강조하지만, 아직 코딩을 하지 않는 단계입니다. 저같은 경우는 종이에 펜을 들고 제가 작성할 코드를 구체화 시켜보곤 합니다)

* Language Independent (이는 코딩을 하지 않는 단계이니, 굳이 C++이니 Java니 C언어 스타일대로 계획을 하면 더 귀찮고 힘들어집니다 편안하게 진행하세요!)

4. Refinement and Coding 완벽히 다듬은 뒤, 코딩을 시작합니다

- Choose representation and write algorithms

(코딩 언어를 선택한 뒤 이에 맞는 알고리즘을 작성합니다)

- Use Programming Paradigms (3개의 프로그래밍 작성 방식이 있습니다)

* Structured Programming (구조적 프로그래밍: 순차적으로 프로그램을 짜는 방식)

* Modular Programming (모듈러 프로그래밍: 모듈을 이용하여 프로그램을 짜는 방식)

* Object-Oriented Programming (객체지향적 프로그래밍: 데이터 하나하나를 객체처럼 취급하며 프로그램을 짜는 방식)

5. Verification 코드 실행 후 검증 및 마무리 작업에 들어갑니다

- Correctness proofs (정확도 증명을 시행합니다; 클릭시 참고문헌을 확인할 수 있습니다)

* Using formal techniques to prove correctness of algorithms

* Difficult to apply to a large system (무거운 코드일 수록 증명하는데에는 시간이 많이 소요)

- Testing (다양한 인풋 케이스로 프로그램을 구동시켜 혹시나 원하지 않는 결과값이 나오는지 시험을 해봅니다)

* Need Working system and test data

* Should include all possible scenarios (최대한 많이 테스트를 해보는게 좋겠죠)

* Measure running time (똑같은 기능에도 구동시간이 짧은 것이 Better 코드라고 볼 수 있습니다)

- Error removal (그 뒤 미처 생각해지 못했던 에러를 발견했다면, 이를 다시 잡아줍니다)

[용어 정리]

모듈: 독립적인 하나의 요소. 프로그램의 일부분.


Comments


RECENT POSTS

FEATURED POSTS

FOLLOW US

  • Grey Facebook Icon
  • Grey Twitter Icon
  • Grey Instagram Icon
  • Grey Google+ Icon
  • Grey Pinterest Icon

ABOUT FEEDs & GRIDs

I'm a paragraph. Click here to add your own text and edit me. It’s easy. Just click “Edit Text” or double click me to add your own content and make changes to the font. I’m a great place for you to tell a story and let your users know a little more about you.

SOCIALS 

SUBSCRIBE 

I'm a paragraph. Click here to add your own text and edit me. It’s easy.

© 2023 by FEEDs & GRIDs. Proudly created with Wix.com

bottom of page