-컴퓨터 프로그램의 구성
-구조적 프로그램
-정보공학 프로그램
-객체지향 프로그램
-CBD, 함수형 프로그램
구조적 프로그램??
: 프로그램을 인간이 읽기 쉽게 만들고자 하는 노력에서 개발된 것.
(함수를 사용하고, goto문을 쓰지 않는다.)
구조적 프로그램의 제작을 위한 표준화된 절차
= 구조적 방법론(DFD/ DD/ 소단위명세서)
함수 : (개발자들이 구현하는 기본적인) 기능 단위
모듈 : (내가 개발할 프로그램의) 비즈니스 단위 (고객의 주문접수 모듈 고객정보확인, 주문정보 추가 등 여러개의 함수로 구성)
=> 모든 언어는 함수를 지원하고 있다. 당연히 모듈을 식별해야 프로그램을 개발할 수 있다.
DFD를 그려야할 줄 알아야하는 이유가 뭐에요??
-내가 개발할 프로그램의 함수와 모듈을 식별하기 위해서~
정보공학 프로그램??
=기업체에서 컴퓨터를 사용하면서 다양하고 큰 데이터를 다룰 필요성
RDBMS - 데이터가 테이블형태로 있다고 가상적인 환경을 만들어 주는 것
많은 데이터 -> 입력화면의 필요성 대두(GUI)
함수, 모듈 -> gui, dbms -> SQL Query
가상테이블의 중복을 피하고 부분부분 나누는 것 = 데이터베이스 디자인
객체지향 프로그램
-프로그램을 단위 기능으로 쪼개기 : 구조적 프로그램
->함수/모듈, 함수와 프로시저의 개념, 배열/포인터
-데이터베이스관리 시스템(DBMS)와 화면 구성에 기반하는 프로그램 제작
: 정보공학 프로그램
-> 상용화된 프로그램의 구조 확정 : 구조체
-커지는 프로그램의 효과적 개발과 유지를 위한 프로그램 -> 객체지향 프로그램
- 연관된 데이터와 함수를 묶자 : 클래스
- 많은 클래스를 체계적으로 관리 : 상속
- 클래스를 다루는 방법 : 캡슐화, 다형성
객체지향 프로그램
=여러명이 오랜시간 동안 같이 프로그램을 제작하기 위한 방법
->클래스를 사용하는 프로그램???? 도구와 목적의 혼동
CBD프로그램?
개발자 중심의 방법론( 개발자 재사용 단위 )으로 느슨한 결합도(loosely-coupled), 큰입자(coarse-grained)의 특징을 갖는 컴포넌트를 사용하여 시스템을 개발하는 개념 ex)VB에서 Button을 사용, 은행에서 이자율 모듈
CD(component development) : 컴포넌트 개발
CBSD(component based software development) : 컴포넌트 기반 소프트웨어 개발
CD
<도메인 분석 -> 도메인 설계 -> 컴포넌트 추출 -> 컴포넌트 설계 ->
컴포넌트 구현>
->컴포넌트 인증 -> 컴포넌트 저장소 <형상관리 기능 제공> -> 컴포넌트 검색->
CBD
사용자 프로그램 <- 컴포넌트 조립 <- 컴포넌트 기발설계 <- 개발영역분석<- 요구사항 정의
함수형 프로그램
=객체지향이 가지는 단점인 중요함수의 반복을 해결하고자 개발된 방법
함수형 프로그래밍을 한 문장으로 말하면
Function - 함수를 이용해서
No side-effect - 사이드 이펙트 없도록
Dclarative Programming - 선언형 프로그래밍을 이용하는 것.
->명령형 프로그래밍은 어떤 과정을 통해서에 대해 서술하고 선언형 프로그래밍은 어떤 결과를 얻는가에 대해 서술한다.
함수의 단위 기능을 분리하여 선언하고, 이것을 조합하여 새롭고, 복잡한 함수를 선언하여 사용하는 방법
->객체지향이 기반이 되고, 많이 사용하는 함수에 적용한다.