자바(Java) - 상속성이란? (배열도 활용)

안녕하세요

이번 시간에는 자바에서 중요한 개념인 상속성(Inheritance)에 대해서 글을 쓸까 합니다.

상속이란?

기존 클래스에 작은 기능이나 특성을 추가하여 새로운 클래스로 만드는 것을 의미합니다  

즉 부모클래스를 만들고, 그 부모클래스에 있는 속성과 기능을 자식클래스에서 상속받아, 새로운 기능과 속성을 추가하는 것입니다.

-상속 개념을 적용함으로써 개발시간 단축, 재사용성 등에 놀라운 장점이 있습니다.

아래는 자바의 상속 예제 소스코드입니다.


class Human{
 String name;
 int height;
 public void showInfo(){
  System.out.println("이름 : "+name);
  System.out.println("키 : "+height);
 }
 public Human(String name, int height){
  this.name=name;
  this.height=height;
 }
}
// 슈퍼맨 클래스는 Human 클래스를 상속받는다
class Superman extends Human{
 int power;
 public Superman(){
  super("슈퍼맨", 170); // super() : 부모클래스(Human)의 생성자
  //this("슈퍼맨", 190, 940); // super, this 둘 중에 딱 하나만 사용해야함
 }
 public Superman(String name, int height, int power){
  super(name, height); // Human 클래스의 생성자로 값이 전달
  this.power=power; // power는 Superman 클래스에서 설정
 }
}
public class Inheritance {
 public static void main(String[] args) {
  Superman s1 = new Superman("슈퍼맨", 190 ,940);
  Superman s2 = new Superman("슈퍼보이", 290 ,540);
  Superman s3 = new Superman("슈퍼슈퍼", 390 ,740);
  // 배열 활용
  Superman[] arr = new Superman[3]; // Superman 형 데이터를 저장할 배열 선언
  arr[0]=s1;
  arr[1]=s2;
  arr[2]=s3;
  arr[0].showInfo();
  arr[1].showInfo();
  arr[2].showInfo();
  }
 }
}


음식은 아무나 하는게 아닙니다 ㅋㅋ

음식도 재능이 좀 있어야 될것 같습니다 ㅋ

자바(Java) - 생성자 오버로딩이란? 예제 포함

안녕하세요

이번 시간에는 자바에서 자주 쓰이는 생성자 오버로딩에 대해서 글을 써볼까 합니다.

우선 생성자는 객체가 생성될 때 최초로 실행되는 메소드를 뜻합니다.

생성자를 구성시 유의할 점이 두가지가 있습니다.

1)생성자 이름은 클래스명과 동일하게 지어야 합니다.
2)반환타입을 가져서는 안됩니다.

생성자의 주요 역할은 멤버 변수를 초기화하는 일입니다.

사용자가 생성자를 특별히 구현하지 않았을 경우 컴파일러는 default 생성자를 제공해줍니다. (하지만 사용자가 생성자를 구현하면 default 생성자는 사라집니다)

자바에서는 생성자를 다양하게 오버로딩 함으로써 다양한 초기값을 부여합니다.

아래 예제는 Overloading이라는 메인 함수에서 Superman 클래스와 Auqaman 클래스의 객체들을 생성하고 출력하는 예제입니다.

(이번 예제는 클래스별로 구분하지 않고 한번에 뭉쳐봤습니다)



class Superman{
 String name;
 int height;
 int power;
 
 //생성자 오버로딩(Constructor Overloading)
 public Superman(){ // 기본 생성자
  this("슈퍼맨", 150, 100);
  /* 코드의 간결화를 위해 생략.
  이렇게 하기 위해서는 매개 변수가 3개인 메소드는 꼭 남겨야 한다.
  this.name="슈퍼맨";
  this.height=150;
  this.power=100;*/
 }
 
 public Superman(String name){
  this(name, 190, 100);
 }
 public Superman(String name, int height){
  this(name, height, 50);
 }
 // 위 세개의 메소드의 목표점
 public Superman(String name, int height, int power){
  this.name=name;
  this.height=height;
  this.power=power;
 }
 public void showInfo(){
  System.out.println("---슈퍼맨 정보---");  
  System.out.println("이  름: "+name);
  System.out.println("키    : "+height);
  System.out.println("초능력: "+power); }
 }
}
public class Overloading {
 public static void main(String[] args) {
   Superman s1 = new Superman();
   s1.showInfo();
   Superman s2 = new Superman("박정현");
   s2.showInfo();
   Superman s3 = new Superman("김범수", 169);
   s3.showInfo();
   Superman s4 = new Superman("임재범", 190, 90);
   s4.showInfo();
 }
}


자바(Java) - 메소드 오버로딩 예제~!!

안녕하세요

이번 시간에는 자바에서 중요한 개념인 오버로딩에 대해서 알아보는 시간을 가지겠습니다.

오버로딩(Overloading)은 다중정의라고 하며

메소드 이름은 동일하되 매개변수의 자료형, 갯수, 순서를 다르게 하여 정의하는 것을 말합니다.

오버로딩은 크게 두개로 나뉩니다.

1)생성자 오버로딩
2)메소드 오버로딩

오버로딩을 할 때 지켜야 할 규칙이 있습니다.
1) 메소드명이 동일해야 한다.
2) 매개변수의 자료형, 갯수, 순서가 달라야한다.
3) 반환타입은 같아도 되고 달라도 된다

어쨋든 아래에 오버로딩 예제를 올려봅니다.

public class Yuja {
 private int yuja;
 private int sugar;
 public void setYuga(int yuja){
  this.yuja=yuja;
 }
 public int getYuja(){
  return yuja;
 }
 public void setSugar(int sugar){
  this.sugar=sugar;
 }
 public int getSugar(){
  return sugar;
 }
}

위의 소스코드는 유자차를 만드는 Yuja 클래스입니다. 일단 여기서 오버로딩의 개념은 없지만 앞서 썼던 캡슐화의 개념이 포함되어 있습니다.

그리고 아래의 소스코드는 차를 만드는 TeaMachine 클래스입니다.


public class TeaMachine {
 int coffee;
 int sugar;
 int cream;
 //유자 클래스 유형의 차 만들기
 Yuja yj;
 public void makeTea(int coffee, int sugar, int cream){
  this.coffee=coffee;
  this.sugar=sugar;
  this.cream=cream;
  
  System.out.println("밀크 커피 나가요~~");
  System.out.println("커피 농도 : "+(coffee+sugar+cream));
 }
 public void makeTea(int coffee, int sugar){
  this.coffee=coffee;
  this.sugar=sugar;
  
  System.out.println("설탕 커피 나가요~~");
  System.out.println("커피 농도 : "+(cofee+sugar));
 }
 public void makeTea(int coffee){
  this.coffee=coffee;
  
  System.out.println("블랙 커피 나가요~~");
  System.out.println("커피 농도 : "+(coffee));
 }
 //int가 수용할 수 있는 작은 다른 범위(float, short 형으로도 가능)로 메소드 오버로딩 구현 가능
 public void makeTea(int coffee, float sugar){
  this.coffee=coffee;
  this.sugar=sugar;
  System.out.println("float 커피 나가요~~");
  System.out.println("커피 농도 : "+(cofee+sugar));
 }
 // 반환 타입이 달라도 됨
 public int makeTea(short coffee, int sugar){
  this.coffee=coffee;
  this.sugar=sugar;
  System.out.println("short 커피 나가요~~");
  System.out.println("커피 농도 : "+(cofee+sugar));
  return (coffee+sugar);
 }
 // 유자차를 만드는 메소드를 오버로딩
 public void makeTea(Yuja yj){
  this.yj=yj;
  System.out.println("유자차 나가요~~");
  System.out.println("유자차 농도 : "+(yj.getYuja()));
  System.out.println("설탕 농도 : "+(yj.getSugar()));
  System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
  System.out.println("유자차농도: "+(yj.getYuja()+yj.getSugar()));
 }
} 

위의 TeaMachine 클래스에서는 메소드 오버로딩의 다양한 예를 보았습니다.

이제 마지막으로 Cafe 라는 메인 클래스에서 위의 했던 소스들을 불러와 활용해보겠습니다.


public class Cafe {
 public static void main(String[] args) {
  TeaMachine h2 = new TeacMachine();
  h2.makeTea(3, 3, 3); // 밀크커피
  h2.makeTea(2); // 블랙커피
  
  h2.makeTea(3, 5); // 설탕커피
  h2.makeTea(2, 3.0f); // float커피
  h2.makeTea((short)2, 3); // short커피
  Yuja h3 = new Yuja();
  h3.setYuja(5);
  h3.setYuja(5);
  h3.makeTea(h3);
 }
}

자바(JAVA) - 캡슐화에 대해 알아보자

안녕하세요

이번 시간에는 자바에서 중요한 개념 중 하나인 캡슐화에 대해서 알아보겠습니다.

캡슐화는 쉽게 말해 변수와 같은 중요한 데이터 요소들을 캡슐로 감싸서 외부의 노출을 금하는 것입니다.

자바의 캡슐화를 구현하기 위해서는

멤버변수에 private 접근지정자(access modifier)를 붙여야 합니다.

그리고 이 캡슐화 된 데이터에 접근하기 위해서는 setter, getter 메소드를 통해

접근해야합니다.

아래 예재를 보시면 이해가 되실겁니답~!

// 추상화
public class CoffeeMachine {
 // has a
 private int coffee;
 private int sugar;
 private int cream;
 public void setCoffee(int c){
  coffee=c; 
 }
 public int getCoffee(){
  return coffee;
 }
 
 public void setSugar(int d){
  sugar=d;
 }
 public int getSugar(){
  return sugar;
 }
 public void setCream(int e){
  cream=e;
 }
 public int getCream(){
  return cream;
 }
}

위의 예제에서는 coffee, sugar, cream 멤버변수를 private를 붙여 캡슐화 시켰습니다.

캡슐화 된 데이터에 접근하기 위해서는 setter, getter 메소드를 통해 접근해야합니다.

setter 메소드는 반환타입은 없고 (void) 대신 매개변수를 받아 멤버변수에 전달해야 합니다. 아래 예제는 main()함수에서 CoffeeMachine 클래스의 객체를 생성하여 활용하는 예제입니다.

public class Cafe{
 public static void main(String[] args) {
  
  CoffeeMachine cm = new CoffeeMachine();
  // 캡슐화 된 데이터를 사용하자
  // 단순히 cm.coffee를 사용하면 오류가 난다.
  cm.setCoffee(2);
  cm.setSugar(1);
  cm.setCream(2);
  System.out.println("커피 :"+cm.getCoffee());
  System.out.println("설탕 :"+cm.getSugar());
  System.out.println("쿠람 :"+cm.getCream());
  // 아래처럼 해도 무방
  int cr=cm.getCream();
  System.out.println("크림 : "+cr);
 }
}

자바 4대 특징 part1 추상화!!

안녕하세요

이번 시간에는 자바에서 집을 추상화 하는 시간을 갖겠습니다.

자바와 같은 객체 지향 프로그래밍(Object Oriented Programming)의

주요 특징은 크게 4가지가 있습니다.

1. 추상화

2. 은닉성(캡슐화)

3. 다형성

4. 상속성

이번 시간에는 object를 프로그램에 반영하는 작업인 추상화를 하는 시간을 해보겠습니다.
/*집을 추상화 해보자.
 * 1. 속성(attribute, property) ==> 멤버변수
 * 2. 행동양식(기능, behavior, function) ==> 메소드
 * 
 * */
public class House {
 //1. 속성 ==> "has a" 관계가 성립해야 한다.
 int room; // House has a room(집은 방을 가지고 있다)
 String owner; // (소유주를 가지고 있다)
 String addr; // (주소를 가지고 있다)
 //2. 행동양식
 public void showInfo()
 {
  System.out.println("----House 정보----");
  System.out.println("소유주: "+owner);
  System.out.println("방  수: "+room);
  System.out.println("주  소: "+addr);
 }
 public String existAt(int bunji)
 {
  String str=owner +"의 집: "+addr+" "+bunji+" 번지에 위치합니다.";
  return str;
 }
 // 메소드를 구성==> 집정보, 얼마에 세 유형(전세, 월세)를 주다
 public String rent(String type, int money)
 {
  showInfo();
  String str = type+": "+money+"만원";
  return str;
 }
}
/// 또 다른 클래스
public class BDSApp {
 public static void main(String[] args) {
  /*클래스 : 객체를 만들어내는 틀
   *     ex)붕어빵틀, 설계도
   *객  체 : 클래스를 통해 만들어진 구현물
   *    ex)붕어빵, 집
   * */
  House h1 = new House(); //Object(현실세계에 존재하는 객체)==>object(메모리 상에 올려진 객체),instance
  House h2 = new House();
  
  h1.owner="홍길동";
  h1.room=2;
  h1.addr="서울시 은평구 XX X동";
  
  h2.owner="나루토";
  h2.room=4;
  h2.addr="서울시 마포구 XX X동";
  
  h1.showInfo();
  h2.showInfo();
  
  //h1의 구체적인 주소를 출력 120번지
  //h2의 구체적 주소 출력 300번지
  
  String add1 = h1.existAt(300); // 재사용 가능
  System.out.println(add1);
  System.out.println(h2.existAt(100)); // 1회용
  System.out.println("###################");
  String add2 = h1.rent("전  세", 5000);
  System.out.println(add2);
  System.out.println(h2.rent("월  세", 30));
}

자바스크립트 - switch~case 문을 활용하여 지역을 입력한 후에 해당 지역번호를 출력하기

안녕하세요

이번 시간에는 자바스크립트에서 switch~case 문을 활용하여

지역(서울,경기,부산)을 입력한 후에 해당 지역번호를 prompt 기능을 이용하여

출력하는 예제를 올려봅니다.

먼저 결과를 보시면..




<script type="text/javascript">
var myArea=prompt("지역을 입력하세요", "서울");
switch(myArea){
case "서울":
areaNum="02";
break;
case "경기":
areaNum="031";
break;
case "부산":
areaNum="051";
break;
default:
alert("등록되지 않은 지역입니다.");
}
document.write(myArea+"지역번호는 "+areaNum);
</script>



요구사항 확인

안녕하세요 이번 시간에는 요구사항 확인에 대해서 글을 써볼까 합니다.

먼저 요구란..

시스템이 가져야 할 기능이나 시스템이 만족하여야 할 조건을 요구라고 합니다.

요구사항의 개발 프로세스는 아래와 같습니다.


(1) 요구사항 도출(Requirement Elicitation)

문제의 해결 또는 목적 달성을 위하여 사용자에 의해 요구되거나, 표준이나 명세 등을 만족하기 위하여 시스템이 가져야 하는 서비스 또는 제약사항(명시적, 묵시적)을 파악하기 위한 활동

※ 다양한 요구사항 소스:  고객, 마케팅, 개발자, 이해관계자, 기존시스템
※ 요구사항 도출기법: 업무절차 및 양식 조사, 문헌 조사, 설문, 인터뷰 등


(2) 요구사항 분석(Requirement Analysis)

(가) 요구사항들 간 상충되는 것을 해결하고, 소프트웨어의 범위를 파악하며, 소프트웨어가 환경과 어떻게 상호 작용하는지 이해한다. 
(나) 시스템 요구사항을 정제하여 소프트웨어 요구사항을 도출한다.

※ 요구사항 도출과 분석작업이 어려운 이유 
- 사용자가 원하는 것을 정확히 표현하기 어렵다. 
- 작업 중에도 요구사항이 바뀌거나 추가될 수 있다. 
- 모순되는 요구사항이 나오거나 동일한 내용이 다르게 표현될 수 있다.

(3) 요구사항 명세(Requirement Specification) 
(가) 요구사항 명세란 체계적으로 검토, 평가, 승인될 수 있는 문서를 작성하는 것을 의미 
(나) 시스템 정의, 시스템 요구사항, 소프트웨어 요구사항을 작성한다.

(4) 요구사항 확인(Requirement Validation)
분석가가 요구사항을 이해했는지 확인(Validation)이 필요하고, 요구사항 문서가    회사의 표준에 적합하고 이해 가능하며, 일관성이 있고, 완전한지 검증(Verification)하는 것이 중요하다. 




요구사항 분석 기법은 크게 5가지가 있다.
가) 요구사항 분류 
나) 개념 모델링 
다) 요구사항 할당 
라) 요구사항 협상 
마) 정형 분석(Formal Analysis) 

가. 요구사항 분류(Requirement Classification)
(1) 요구사항 분류 기준 
요구사항을 다음과 같은 기준으로 분류한다. 
- 요구사항이 기능인지 비기능인지 
- 요구사항이 하나 이상의 고수준 요구사항으로부터 유도된 것인지 또는 이해관계자나 다른 원천(Source)으로부터 직접 발생한 것인지 
- 요구사항이 제품에 관한 것인지 프로세스에 관한 것인지 
- 우선순위가 더 높은 것인지 여부 
- 요구사항의 범위(요구사항이 소프트웨어에 미치는 영향의 범위) 
- 요구사항이 소프트웨어 생명 주기 동안에 변경이 발생하는지 여부

나. 개념 모델링 
개념 모델은 문제 도메인의 엔터티(entity)들과 그들의 관계 및 종속성을 반영한다.
- 사용 시나리오를 나타내기 위해 유스케이스 다이어그램이 많이 사용

다. 요구사항 할당(Requirement Allocation)
(1) 요구사항을 만족시키기 위한 아키텍처 구성 요소를 식별하는 것을 요구사항 할당이라 한다. 
(2) 다른 구성 요소와 어떻게 상호 작용하는지 분석을 통하여 추가적인 요구사항을 발견할 수 있다.

라. 요구사항 협상(Requirement Negotiation)
(1) 두 명의 이해관계자가 서로 상충되는 내용을 요구하거나, 요구사항과 리소스, 기능과 비기능 요구사항들이 서로 상충되는 경우, 어느 한 쪽을 지지하기보다는 적절한 트레이드 오프 지점에서 합의가 중요하다. 
(2) 요구사항에 우선순위를 부여하는 것은 중요한 요구사항을 필터링할 수 있으며, 요구사항들 간 상충되는 문제를 해결하는 데 사용될 수 있다.

마. 정형 분석(Formal Analysis)
(1) 형식적으로 정의된 시맨틱(Semantics)을 지닌 언어로 요구사항을 표현한다. 
(2) 정확하고 명확하게 표현하여 오해를 최소화시킬 수 있다. 
(3) 정형 분석(Formal Analysis)은 요구사항 분석의 마지막 단계에서 이루어진다.





요구사항 확인
분석가가 요구사항을 이해했는지, 요구사항 문서가 회사 표준에 적합한지, 일관성이 있는지, 타당한지 등 검증하는 절차가 요구사항을 확인하는 단계이다

요구사항 확인 기법

(1) 요구사항 검토 
여러 이해 관계자들이 검토하는 데 참여하여 잘못된 가정, 불명확성, 표준과의 차이 등을 찾아내는 작업을 수행한다. 

(2) 프로토타이핑(Prototyping) 
프로토타이핑이란 시스템의 일부 혹은 모형를 만드는 과정이다. 시뮬레이션을 수행하거나, 데모 시스템을 만드는 방법 등이 있다. 프로토타이핑은 새로운 요구사항의 도출 수단으로, 또는 요구사항을 확인하는 수단으로 많이 사용된다. 

(3) 모델 검증 
분석단계에서 개발된 모델을 검증한다.

(4) 인수테스트 
요구사항의 중요한 속성은 최종 제품이 요구사항을 만족시키는지 확인이 가능해 야 한다는 것이다




요구사항의 기술적 타당성 검토

기술적 타당성 검토 4단계


NCS 요구사항 확인 - 기본 아키텍처

이번 시간에는 웹 애플리케이션의 확장성과 유지보수성을 높이기 위해서 많이 사용되는

기본 아키텍처를 살펴보겠습니다.

중,대규모 웹 애플리케이션을 효율적으로 개발, 유지보수 하기 위해서 계층화(Layering)하여 개발 중이죠.

애플리케이션 개발의 기본 아키텍처는 아래 그림과 같습니다.


[1] UI계층 (Presentation Layer/UX Layer)
. 업무처리 서비스와 사용자 간의 인터페이스를 담당하는 서비스로 사용자 화면 구성 및   사용자 입력정보 검증 등의 기능을 제공한다.
· 사용자에 대한 요청 및 응답처리 · 상위계층(비즈니스 계층, 퍼시스턴스 계층)에서 발생하는 Exception, Error에 대한 처리
· 최종 UI에서 표현해야 할 도메인 모델을 엮는 기능
· 비즈니스 로직과 최종 UI 사이를 분리하기 위한 컨트롤러 기능

[2] 비즈니스 계층
. 업무 프로그램의 업무 로직을 담당하는 서비스로 업무 흐름 제어, 트랜잭션 관리, 에러 처리 등의 기능을 제공한다.
· 애플리케이션 비즈니스 로직 처리와 비즈니스와 관련된 도메인 모델의 적합성 검증
· 트랜잭션 처리
· UI계층과 퍼시스턴스 계층 사이를 연결하는 역할로서 두 계층이 직접적으로 통신하지 않게  하여 애플리케이션의 유연성을 증가시킨다.
 · 비즈니스 계층에 있는 객체들 간의 관계를 관리한다.
· 다른 계층들과 통신하기 위한 인터페이스를 제공한다.

[3] 퍼시스턴스 계층 (데이터 처리 계층)
. 업무 프로그램에서 사용할 수 있도록 데이터에 대한 CRUD 기능을 지원한다.
· 영구 데이터를 빼내어 객체화시킨다.
· 영구 저장소(일례로 관계형 데이터베이스)에 데이터를 저장,수정,삭제한다.

[참고] CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다.

[4] 도메인 모델 계층
· 데이터베이스의 엔티티와 비슷한 개념을 가지는 것으로 실제 비즈니스 객체를 의미한다.

위 네 가지 계층은 독립적으로 분리할 수 있도록 구현해야 하며 일반적으로 각 계층 사이에는 도메인 모델을 제외하고 인터페이스를 이용하여 통신하는 것이 일반적이다.
도메인 모델은 UI계층, 비즈니스 계층, 퍼시스턴스 계층 전체에 걸쳐 사용하게 된다.



NCS 요구사항 확인 - 현행 시스템 분석

안녕하세요

이번에는 현행 시스템을 분석하는 방법에 대해서 글을 써볼까 합니다.














1. 현행 시스템의 기능과 특징

가 . 제안 시스템의 구성 현황

현행 시스템 구성 현황의 정의 
현행 시스템 구성 현황은 조직의 주요 업무를 처리하는 기간 업무와 이를 지원하는 지원 업무로 구분하여 기술한 것이다.

현행 시스템 구성 현황 작성 시 고려 사항 
각 업무에 속하는 단위 업무 정보시스템들의 명칭, 주요 기능들을 명시함으로써 조직 내 존재하는 모든 정보시스템의 현황을 파악하도록 한다


나 . 제안 시스템의 기능 구성도

(1) 기능 현황의 정의 
단위 업무 시스템이 현재 제공하고 있는 기능을 기술한 것이다.

(2) 기능 현황 작성 시 고려 사항 
단위 업무 시스템에서 제공하는 기능들을 주요 기능과 하부 기능으로 구분하여 계층형으로 표시한다.



다. 인터페이스 현황

(1) 인터페이스 현황의 정의 
단위 업무 시스템이 다른 단위 업무 시스템과 주고받는 데이터의 종류, 데이터 형식, 프로토콜, 연계유형, 주기 등을 명시한 것이다.

(2) 인터페이스 현황 작성 시 고려 사항 
중요한 고려 사항으로는 어떤 형식(format)으로 데이터를 주고받는지(XML, 고정 포맷,가변 포맷 등), 어떤 통신규약(TCP/IP, X.25 등)을 사용하고 있고, 연계유형(EAI, FEP등)은 무엇인지 등이 있다.



라 . 현행 시스템 아키텍처 및 소프트웨어

2. 1. 현행 시스템 아키텍처 구성도

(1) 현행 시스템 아키텍처 구성도의 정의
기간 업무를 수행하기 위하여 계층별로 어떠한 기술 요소들을 사용하고 있는지 최상위 수준에서 그림으로 표현한 것이다.

(2) 현행 시스템 아키텍처 구성도 작성 시 고려 사항 
단위 업무 시스템별로 아키텍처가 다른 경우에는 가장 핵심이 되는 기간 업무 처리 시스템을 기준으로 한다. 



2. 2. 소프트웨어 구성도

(1) 소프트웨어 구성도의 정의 
단위 업무 시스템의 업무 처리를 위해 설치되어 있는 소프트웨어들의 제품명, 용도, 라이선스 적용 방식 등을 명시한 것이다. 

(2) 고려사항 
시스템 구축 시 인프라 구축 비용에서 하드웨어 비용뿐만 아니라 소프트웨어 비용이 적지 않기 때문에, 상용 소프트웨어의 경우에는 라이선스 적용 방식의 기준(사이트, 서버, 프로세서, 코어(core), 사용자 수 등)과 보유한 라이선스 수량 파악이 중요하다.


2.3 하드웨어 구성도

(1) 하드웨어 구성도의 정의 
단위 업무 시스템들이 어디에 위치하고 있는 서버에서 운용되고 있는지 서버의 주요 사양(CPU 처리 속도, 메모리 크기, 하드디스크의 용량 등)과 수량, 이중화가 적용되어 있는지 여부를 명시한 것이다.


(2) 하드웨어 구성도 작성 시 고려 사항 
이중화는 기간 업무의 서비스 기간, 장애 대응 정책에 따라 필요성 여부가 결정되며,현행 시스템에서 이중화가 적용된 경우에는 목표 시스템에서도 이중화가 필요한 경우가 대부분이며, 이에 따라 인프라 구축 기술 난이도 및 비용 증가 가능성이 존재한다.


2.4 네트워크 구성도
(1) 네트워크 구성도의 정의 
업무 처리 시스템들이 어떠한 네트워크 구성을 가지고 있는지 그림으로 표현한 것. 네트워크 장비의 용도, 제품명, 수량, 주요사양, 위치, 연동 프로토콜 등에 대해 명시한다.


(2) 네트워크 구성도 작성 시 고려 사항
네트워크 구성도의 작성을 통해 서버의 위치, 서버 간의 네트워크 연결 방식을 파악할 수 있다. 네트워크 구성도는 조직 내 서버들의 물리적인 위치 관계 파악, 조직 내 보안 취약성 분석 및 대응, 네트워크 장애 발생 추적 및 대응 등의 다양한 용도로 활용될 수 있다.



NCS 요구사항 확인 - 현행 시스템 파악

안녕하세요

이번 시간에는 현행 시스템을 분석하는 NCS 요구사항확인 문서를 

정리해서 블로그에 써봅니다.


-사전 용어 정리-

하드웨어 - 컴퓨터의 모든 물리적 부품(입력, 연산, 제어, 기억, 출력 기능)

마더보드(메인보드) - CPU나 램과 같은 시스템이 작동되기 위한 주요 부품 장착과 주변 장치를 연 결할 수 있는 인터페이스를 제공하는 인쇄회로기판

중앙처리장치(CPU) -  CPU는 외부에서 정보를 입력 받고, 기억하고, 컴퓨터 프로그램 의 명령어를 해석하여 연산하고, 외부로 출력하는 역할을 한다. 또 컴퓨터 부품과 정보를 교환하면서 컴퓨터 시스템 전체를 제어하는 장치이다.

램 - 랜덤 액세스 메모리(Random Access Memory, 임의 접근 기억 장치) 즉 램 (RAM)은 임의의 영역에 접근하여 읽고 쓰기가 가능한 주기억 장치

소프트웨어 - 저장된 특정한 목적의 하나 또는 다수의 프로그램을 뜻한다. 


1. 운영체제(Operation System)

(1) 운영체제 정의
하드웨어와 소프트웨어 리소스를 관리하고 컴퓨터 프로그램을 위한 공통 서비 스를 제공하는 소프트웨어

(2) 운영체제의 종류 
마이크로소프트 윈도즈(Microsoft Widnows), 유닉스(Unix), 리눅스(Linux), iOS, Android 

(3) 운영체제 관련 요구사항을 식별할 때 고려해야 할 사항


(가) 일반적으로 리눅스(Linux) 기반 시스템이 하드웨어 및 소프트웨어 소유 비용이 가장 적게 소요된다. 
(나) 유지 및 관리 비용 측면에서는 윈도즈(Windows) 기반 시스템이 강점을 가진다. 
(다) 안정적이고 신뢰할 수 있으며 대용량 처리를 위해서는 유닉스(UNIX) 기반 시스템이 선호되고 있다. 
(라) 32bit 운영체제는 4GB 메모리까지 액세스 가능(사용자 메모리는 2GB)하지만, 64bit 운영체제에서는 4GB 이상의 메모리에 액세스 가능하며 구체적인 한계는 운영체제의 종류 및 버전에 따라 다양하다.

2. JVM (Java Virtual Machine) 
자바 가상 머신(JVM: Java Virtual Machine)은 다양한 하드웨어 및 운영체제에서 자바(Java) 언어로 작성된 애플리케이션을 수행하기 위한 사양(Specification)의 구현체

3. DBMS (Database Management System)

(1) DBMS란?
사용자나 다른 애플리케이션, 데이터베이스와 상호작용하여 데이터를 저장하고 분석하기 위한 소프트웨어 애플리케이션으로 데이터베이스 생성, 조회, 변경 등의 관리가 주요 기능

(2) DBMS의 종류 및 특징

(3) DBMS 관련 고려할 사항



4. 미들웨어 (Middleware)

(1) 미들웨어란? 
운영체제와 소프트웨어 애플리케이션 사이에 위치, 소프트웨어 애플리케이션에게 운영체제 제공하는 서비스를 추가, 확장하여 제공하는 컴퓨터 소프트웨어를 말한다. 

(2) WAS 서버란? 
동적인 웹 사이트, 웹 애플리케이션, 웹 서비스의 개발을 지원하기 위하여 설계된 소프트웨어로서 데이터 접근, 세션 관리, 트랜잭션 관리 등을 위한 라이브러리를 제공

(3) WAS의 종류와 특징



(3) WAS 관련 고려사항


오픈소스 사용시 고려할 사항 

소스(Open Source)는 소스 코드를 공개해 누구나 특별한 제한 없이 그 코드를 보고 사용할 수 있는 오픈 소스 라이선스를 만족하는 소프트웨어를 말한다. 
오픈 소스를 사용하는 경우에는 라이선스의 종류, 사용자 수, 기술의 지속 가능성 등을 고려해야 한다


아이돌 몸매 계보 ㄷㄷ


에프터스쿨 - 유이

꿀벅지의 단어를 만들게 했죠 ㄷ





레인보우 - 재경

정글의 법칙만 안나왔어도 ㅜ




시크릿 - 전효성

지금도 몸매로는 탑클래스죠 ㄷㄷ





걸스데이 - 유라

안다는 사람은 다 암~



AOA - 설현

역사발언, 지코연애 전까지만 해도 정점이였음




그리고 현재 대세...








혜성처럼 등장한 우주소녀 성소 ㄷㄷ