낙서장[2]: 32개의 글

[오답노트] 모의고사1회

Posted by nkjok
2025. 2. 10. 01:11 낙서장[2]/오답노트
반응형
           
  N 문제 비고 정답  
  1 프로세스 수행을 지원하는 정보 시스템의 구현을 위해 가장 선진화된 소프트웨어 아키텍처 서비스라고 정의되는 분할된 애플리케이션 조각들을 Loosely-coupled하게 연결해 하나의 완성된 Application을 구현하기 위한 아키텍처를 무엇이라고 하는가?   SOA
Service Oriented Architecture
 
  2 다음은 무선 통신 기술에 대한 설명이다. 괄호 ( ) 안에 들어갈 가장 적합한 용어를 쓰시오
(  1  ): 여러 개의 독립된 통신 장치가 블루투스 기바술이나 UWB 통신 기술을 사용하여 통신망을 형성하는 무선 네트워크 기술로 네트워크를 구성하는 장비 간에 사전에 네트워크의 정의와 계획이 없이 상황에 따라 조정 프로토콜에 의하여 마스터와 슬레이브 역할을 하면서 네트워크를 형성하고, 주로 수십 미터 이내의 좁은 공간에서 네트워크를 형성하는 점과 정지 또는 이동하고 있는 장치를 모두 포함하는 특정을 가지고 있다.
(  2  ): 저속 전송 속도를 갖는 홈오토메이션 및 데이터 네트워크를 위한 표준 기술로, 버튼 하나로 하나의 동작을 잡아 집안 어느 곳에서나 전등 제어 및 홈 보안 시스템 VCR on/off 등을 할 수 있고, 인터넷을 통한 전화 접속으로 홈오토메이션을 더욱 편리하게 이용하려는 것에서부터 출발한 기술이고, IEEE 802.15 표준 기반, 메시 네트워크 방식을 사용하는 통신 기술이다.
  (  1  ) : 피코넷
(  2  ) : 지그비
 
  3 다음과 같은 절차로 공격을 진행하는 네트워크 공격 기법은 무엇인가?
가. TCP Sequence number의 보안상 문제점 떄문에 발생
나. Victim과 Server 사이의 패킷을 스니핑하여 Sequence number를 획득하고, 공격자는 데이터 전송 중인 Victim과 Server 사이를 비동기화 상태로 강제적으로 만듦
다. 스니핑하여 획득한 Client Sequence Number를 이용하여 공격
라. 공격자는 Server에게 RST 패킷 날리고, 공격자의 새로운 Sequence Number로 Server와 세션을 맺어 인증 우회, Victim 권한으로 Server 접근
마. 비동기화 상태로 패킷이 유실되어 재전송 패킷 증가
바. 이 과정에서 ACK Storm 증가, NW 부하 증가
  TCP 세션 하이재킹
or
세션 하이재킹
 
  4 다음은 정적 테스트에 대한 설명이다. 괄호 (  ) 안에 들어갈 용어를 쓰시오.
동료 검토(Peer Review): 2~3명이 진행하는 리뷰의 형태로 요구사항 명세서 작성자가 요구사항 명세서를 설명하고, 이해관계자들이 설명을 들으면서 결함을 발견하는 형태로 진행하는 검토 기법이다.
(  1  ): 소프트웨어 요구, 설계, 원시 코드 등의 저작자 외에 다른 전문가 또는 팀이 검사하여 오류를 찾아 내는 공식적 검토 방법이다.
(  2  ): 검토 자료를 회의 전에 배포해서 사전 검토한 후 짧은 시간 동안 회의를 진행하는 형태로 리뷰를 통해 오류를 검출하고 문서로 만드는 기법이다.
  (  1  ): 인스펙션
(  2  ): 워크스루
 
  5 다음은 [사전] 테이블이다. [결과] 테이블처럼 'symmetry' 이라는 문자열 앞에 한 글자가 추가된 문자열을 찾기 위한 쿼리를 작성하시오. (symmetry, anti-symmetry와 같이 symmetry 문자열 앞에 한 글자가 추가되지않는 문자열은 조회되지 않아야 한다.)   SELECT *
FROM 사전
WHERE 단어
LIKE '__symmetry';
 
  6 다음은 C++ 코드이다. 출력 결과를 쓰시오.
#include <iostream>
using namespace std;
void main() {
  int socore = 95;
  switch(score/10) {
  case 10: cout << "수";
  case 9: cout << "수";
  case 8: cout << "우";
  case 7: cout << "미";
  case 6: cout << "양";
  default: cout << "가";
  }
}
  수우미양가  
  7 Dos(Denial of Service) 공격이란 무엇인지 서술하시오   Dos 공격은 특정 서버에게 수많은 접속 시도를 만들어 다른 이용자가 정상적으로 서비스 이용을 하지 못하게 하거나, 서버의 자원을 소진시켜서 원래 의도된 용도로 사용하지 못하게 하는 공격이다.  
  8 조인 검증해봐야함
자격증번호컬럼이 [자격증]테이블과 동일하였음
[응시료]테이블의 자격증번호중 [자격증]테이블에 없는 건 NULL로 표시
SELECT *
FROM 자격증 LEFT OUTER JOIN 응시료
ON 자격증.자격증번호 = 응시료.자격증번호; 
 
  9 JSON 서술   JSON은 "속성-값 쌍", "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다.  
  10 요구사항 명세 단계에서 사용자의 요구를 표현할 때 수학적인 원리와 표기법으로 서술하는 기법은 무엇인가? 비정형명세기법:
자연어를 기반으로 서술
정형명세기법:
수학적인 원리와 표기법으로 서술
정형명세기법  
  11 #include <stdio.h>
void main( ) {
  int a = 30, b = 15;
  printf("%d%d", a & b, a | b);
}
  1431  
  12 병행 제어 미보장 시 문제점으로, 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 트랜잭션이 처리한 곳의 부분을 취소하지 못하는 오류는? 갱신손실(Lost update): 덮어쓸때
현황파악오류(Dirty Read): 중간수행참조
모순성(Inconsistency: 동시실행 관성결여
연쇄복귀(Cascading Rollback): 부분을 취소하지 못하는
연쇄복귀  
  13 정규화 원부이결다조, 1,2,3,BCNF,4,5 부분함수종속관계, 2정규형(2NF)  
  14 다음은 C언어 코드이다. 출력 결과를 쓰시오.
#include <stdio.h>
void main(  ) {
  char b[16] = "hello world";
  printf("%s", &b[6]);
}
  world  
  15 SOOJEBI 테이블에 대한 DDL 문을 실행한 후에 [INSERT 문]을 삽입하는 순간 에러가 발생했다.
[INSERT 문]이 에러가 나지 않도록 하는 DDL 문을 작성하시오. (SOOJEBI 테이블을 제거 후 생성하지 않도록 한다.)
CREATE TABLE SOOJEBI(
  SOOJEBI_NUM NUMBER(5) );
INSERT INTO SOOJEBI VALUES (200614);
  ALERT
TABLE SOOJEBI
MODIFY SOOJEBI_NUM NUMBER(6);
 
  16 (  1  ): 입력된 데이터를 원하는 형태로 변환하여 출력하기 위한 과정으로, DFD에서는 원(O)으로 표시
(  2  ): DFD의 구성요소(프로세스, 데이터 저장소, 외부 엔티티)들 간의 주고받는 데이터 흐름을 나타내며, DFD에서는 화살표(→)로 표시
(  3  ): 데이터가 저장된 장소이고, 평생선(=)으로 표시하며, 평행선 안에는 데이터 저장소의 이름을 넣음
(단말): 프로세스 처리 과정에서 데이터가 발생하는 시작과 종료를 나타내고, 사각형(ㅁ)으로 표시하며, 사각형 안에는 외부 엔티티의 이름을 넣음
  (  1  ): 처리기 Process
(  2  ): 데이터흐름 Data Flow
(  3  ): 데이터저장소 Data Store
(단말): Terminator
 
  17 모델링 요구사항분석, 개념, 논리, 물리 개념모델링, 논리모델링  
  18 ISO/IEC 9126 (ISO / IEC 25010 : 2011로 변경)의 소프트웨어 품질 특성에 대한 설명으로 괄호 (  ) 안에 들어갈 품질 특성을 쓰시오
(  1  ): 명시된 조걱에서 사용될 때 성능 수준을 유지할 수 있는 소프트웨어 제품의 능력, 옳고 일관된 결과를 얻기 위하여 요구된 기능을 수행할 수 있는 정도
(  2  ): 명시된 조건에서 사용되는 자원의 양에 따라 요구된 성능을 제공하는 스프트웨어 제품의 능력을 말함
기능성(Functionality): 명싱요구 내제요구 만족기능제공
신뢰성(Reliability): 명시조건 성능수준유지 오류없이
사용성(Usability): 명시조건 사용자에 의해 이행, 학습, 사용, 선호
효율성(Effciency): 자원의 양에 따라 요구된 성능제공
유지보수성(Maintainability): 소프트웨어제품 변경능력, 수정,개선,개작
이식성(Portability): 다른환경으로 전이능력
(  1  ): 신뢰성
(  2  ): 효율성
 
  19 다음이 설명하는 자료 구조는 무엇인지 쓰시오
양쪽 끝에서 삽입과 삭제를 할 수 있는 자료 구조
두개의 포인터를 사용하여, 양쪽의 삭제/삽입기 가능
  데크
Deque
 
  20 public class SuperObj {
    public void show() {
        print();
    }
    public void print() {
        print();
        System.out.print("Super");
    }
}
public class SubObj extends SuperObj {
    public void show() {
        super.print();
    }
    public void print() {
        System.out.print("Sub");
    }
}
public class Soojebi {
    public static void main(String[] args) {
        SuperObj s = new SubObj();
        s.show();
    }
}
  SubSuper  
           
반응형

2024년 3회 6. 아래 코드에서 출력되는 값을 작성하시오

Posted by nkjok
2025. 2. 9. 21:02 낙서장[2]/오답노트
반응형

 

주어진 C 코드

c
int increment() {
    static int x = 0;
    x += 2;
    return x;
}

int main() {
    int x = 1;
    int sum = 0;
    for (int i = 0; i < 4; i++) {
        x++;
        sum += increment();
    }
    printf("%d", sum);
    return 0;
}

출력 결과

이 코드는 다음과 같은 순서로 동작합니다:

  1. increment() 함수는 static int x 변수로 x를 0으로 초기화합니다.
  2. x는 함수 내에서 유지되며, 각 호출 시 값이 유지됩니다.
  3. 반복문에서 increment() 함수가 4번 호출되며, x는 각각 2, 4, 6, 8로 증가합니다.
  4. 따라서 sum은 2 + 4 + 6 + 8 = 20이 됩니다.
  5. 최종 출력은 20입니다.

자바 코드로 변환

다음은 주어진 C 코드를 자바 코드로 변환한 예제입니다:

java
package gisa;

// 2024년 3회 6. 아래 코드에서 출력되는 값을 작성하시오
public class Counter {
    private static int x = 0;

    public static int increment() {
        x += 2;
        return x;
    }

    public static void main(String[] args) {
        int localX = 1;
        int sum = 0;
        for (int i = 0; i < 4; i++) {
            localX++;
            sum += increment();
        }
        System.out.println(sum);  // 출력: 20
    }
}

설명

  1. Counter 클래스: x 변수를 static으로 선언하여 클래스 레벨에서 유지되도록 합니다.
  2. increment 메서드: x 값을 2씩 증가시키고, 그 값을 반환합니다.
  3. main 메서드:
    • localX 변수를 사용하여 x를 지역 변수로 선언합니다.
    • 반복문을 통해 increment 메서드를 4번 호출하며 sum을 누적합니다.
    • 최종적으로 System.out.println(sum)을 통해 결과를 출력합니다.

 

 

반응형

[요구사항 확인] 1-1 소프트웨어 개발 방법론

Posted by nkjok
2025. 2. 3. 16:11 낙서장[2]/1. 요구사항 확인
반응형
           
  소프트웨어 개발 방법론  
  (1) 소프트웨어 생명주기 모델   
  ● 소프트웨어 생명주기는 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차이다.  
  ● 시스템이 개발될 때부터 운용과 유지보수를 거쳐 생애를 마칠 때 까지  어떠한 순서를 밟는지에 대한 작업 프로세스를 모델화한 것이다.  
           
  (2) 소프트웨어 생명주기 모델 프로세스    
  ▼ 소프트웨어 생명주기 모델 프로세스    
           
  순서 프로세스 설명 활동  
  1 요구사항 분석 ● 다양한 이해관계자의 상출할 수도 있는 요구사항을 고려하여
새로운 제품이나 변경된 제품에 부합하는
요구와 조건을 결정하는 단계
● 기능 요구사항
● 비기능 요구사항
 
   
   
  ● 개발할 소프트웨어의 기능과 제약 조건, 목표 등을
소프트웨어 사용자와 함께 명확히 정의하는 단계
 
   
  2 설계 ● 시스템 명세 단계에서 정의한 기능을 실제 수행할 수 있도록
수행 방법을 논리적으로 결정하는 단계
● 시스템 구조 설계
● 프로그램 설계
● 사용자 인터페이스 설계
 
   
   
  3 구현 ● 설계 단계에서 논리적으로 결정한 문제 해결 방법을
특정 프로그래밍 언어를 사용하여 실제 프로그램을 작성하는 단계
● 인터페이스 구조
● 자료 구조 개발
● 오류 처리
 
   
   
  ● 프로그래밍 언어 선택, 기법, 스타일, 순서 등을 결정하는 단계  
   
  4 테스트 ● 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가
어떤 차이를 보이는지 검사하고 평가하는 단계
● 단위 테스트
● 통합 테스트
● 시스템 테스트
● 인수 테스트
 
   
   
   
  5 유지보수 ● 시스템이 인수되고 설치된 후 일어나는 모든 활동 ● 예방, 완전 교정, 적응
유지보수
 
   
           
  (3) 소프트웨어 생명주기 모델 종류    
  소프트웨어 생명주기 모델 종류로는 폭포수 모델, 프로토타이핑 모델, 나선형 모델, 반복적 모델이 있다.    
  ▼ 소프트웨어 생명주기 모델 종류    
  종류 설명  
  폭포수 모델
(Waterfall Model)
● 소프트웨어 개발 시 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어가는 모델  
  ● 가장 오래된 모델  
  ● 선형 순차적 모형으로 고전적 생명주기 모형이라고도 함  
  ● 모형의 적용 경험과 성공 사례가 많음  
  ● 단계별 정의와 산출물이 명확  
  ● 요구사항 변경이 어려움  
  절차: 타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수  
   
  포로토타이핑 모델
(Prototyping Model)
● 고객이 요구한 주요 기능을 프로토타입으로 구현하여,
고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델
 
   
  ● 프로토타입은 발주자나 개발자 모두에게 공동의 참조 모델을 제공  
  ● 프로토타입은 구현 단계의 구현 골격  
  나선형 모델
(Spiral Model)
● 시스템 개발 시 위험을 최소하하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델  
  절차: 계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가  
   
  반복적 모델
(Iteration Model)
● 구축대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여
점증 완성시키는 SDLC 모델
 
   
  ● 사용자의 요구사항 일부분 혹은 제품 일부분을 반복적으로 개발하여
최종 시스템으로 완성하는 모델
 
   
           
반응형

'낙서장[2] > 1. 요구사항 확인' 카테고리의 다른 글

[요구사항 확인] 미리 알아두기  (0) 2025.01.23

AI 에이전트 협력 워크플로우

Posted by nkjok
2025. 1. 29. 01:53 낙서장[2]/낙서
반응형

에이전트 AI 워크플로는 정의된 규칙이나 목표 내에서 독립적으로 작업을 수행하고, 의사 결정을 내리고, 변화하는 조건에 적응할 수 있는 자율적인 AI 에이전트로 구동되는 프로세스이다

 

[예제]

AI 에이전트의 협력 구조를 명의 담당자가 여러 AI 에이전트를 지시하여 작업을 분배한다

AI 에이전트들은 각기 다른 역할을 수행하며, 협력하여 작업을 진행할 있다. 이는 단순한 자동화 작업을 넘어서, 복잡한 프로젝트 관리까지 도울 있다. 글에서는 담당자가 인공지능 팀을 지휘하여, 분석, 계획, 실행을 효과적으로 수행하는 구조를 설명하고자 한다.

 

AI 에이전트 협력 구조의 개념과 필요성

  • AI 에이전트 협력 구조란?: 하나의 작업을 여러 AI 에이전트들이 서로 협력하여 수행하는 방식이다. AI 에이전트는 특정 역할을 맡아 협업을 통해 문제를 해결한다.
  • 필요성: 구조는 업무 효율성을 높이고, 오류를 줄이며, 단계에서 전문가의 도움 없이도 효과적으로 작업을 진행할 있는 이점을 제공한다.

AI 에이전트 협력 워크플로우

  1. 요구사항 전달: 담당자는 전체 프로젝트의 요구사항을 분석 에이전트(AI)에게 전달한다.
    • 예시: 담당자가 고객 수요 분석 보고서를 작성해야 한다고 가정한다.
  2. 분석 에이전트(AI)의 데이터 분석: 분석 에이전트는 고객 데이터를 수집하고 분석하여 인사이트를 도출한다.
    • 분석 에이전트: 데이터 수집, 세분화된 분석, 패턴 인식 등을 담당한다.
    • 결과: 분석 보고서를 PM 에이전트에게 전달한다.
  3. PM 에이전트(AI)의 계획 수립: PM 에이전트는 분석 에이전트가 제출한 자료를 바탕으로 상세한 계획을 수립하고, 작업을 분담한다.
    • PM 에이전트: 프로젝트 관리, 일정 수립, 자원 배분 등을 담당한다.
    • 결과: 작업 목록과 일정표를 엔지니어 AI들에게 전달한다.
  4. 엔지니어 AI들의 작업 수행: 엔지니어 AI들 각각은 PM 에이전트가 할당한 작업을 수행한다.
    • 엔지니어 AI들: 특정 도구를 사용해 실제 작업을 수행한다(예: 데이터 시각화, 보고서 작성 등).
    • 결과: 작업 결과물을 PM 에이전트에게 보고한다.

 AI 에이전트 협력 구조의 적용 사례

  • 고객 수요 분석 프로젝트:
    1. 담당자가 고객 데이터 분석을 분석 에이전트에게 지시한다.
    2. 분석 에이전트는 고객 데이터를 수집하고, 트렌드를 분석하며, 인사이트를 도출한다.
    3. PM 에이전트는 이러한 인사이트를 바탕으로 프로젝트 계획을 수립하고, 엔지니어 AI들에게 작업을 할당한다.
    4. 엔지니어 AI들은 각기 맡은 바를 수행하여, 계획된 작업을 완료한다. 예를 들어, 하나의 엔지니어 AI는 데이터 시각화를, 다른 하나는 보고서 작성 작업을 맡을 있다.     
반응형

[요구사항 확인] 미리 알아두기

Posted by nkjok
2025. 1. 23. 14:37 낙서장[2]/1. 요구사항 확인
반응형

애자일 방법론 (Agile Methodology)

절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론이다.

애자일 방법론은 소프트웨어 개발에 있어서 기존의 경직된 절차보다는 사람과 팀 간의 협력을 중시하는 접근 방식입니다.

  1. 변화에 유연하게 대응: 애자일 방법론은 프로젝트 도중에 변경되는 요구사항에도 신속하게 적응할 수 있도록 설계되었습니다.
  2. 짧은 개발 주기: 보통 2~4주 정도의 짧은 반복 주기(스프린트)로 프로젝트를 진행하여, 각 주기마다 기능이 완성된 제품을 제공할 수 있습니다.
  3. 지속적인 피드백: 팀원들 간의 지속적인 커뮤니케이션과 사용자로부터의 피드백을 통해 제품을 꾸준히 개선해 나갑니다.

객체 지향 분석 (Object Oriented Analysis, OOA)

객체 지향 분석(OOA; Object Oriented Analysis)은 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스(객체), 속성과 연산, 관계를 정의하여 모델링하는 기법이다

객체 지향 분석은 소프트웨어 요구사항을 이해하고 모델링하는 단계로, 객체 지향 프로그래밍(OOP)의 이론을 바탕으로 합니다.

  1. 클래스와 객체 정의: 시스템에서 필요로 하는 모든 클래스와 객체를 식별하고 정의합니다.
  2. 속성과 메서드: 각 클래스에 대한 속성(데이터)과 메서드(행동)을 정의하여 객체의 행동과 상태를 명확히 합니다.
  3. 관계: 클래스 간의 상속, 연관 관계 등을 모델링하여 시스템 전체 구조를 이해하고 나타냅니다.

디자인 패턴 (Design Patterns)

디자인 패턴은 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴이다.

디자인 패턴은 반복적으로 발생하는 소프트웨어 설계 문제를 해결하기 위한 일반화된 해결책입니다.

  1. 재사용 가능한 코드: 디자인 패턴을 사용하면 코드의 재사용성이 높아지고 유지보수가 쉬워집니다.
  2. 문제 해결: 특정 상황에서 자주 발생하는 문제를 해결하는 데 유용합니다.
  3. 커뮤니케이션 도구: 팀원 간의 설계 논의에서 공통의 언어로 사용되어 설계 의도를 명확히 전달할 수 있습니다.

요구사항 분석 (Requirement Analysis)

도출된 요구사항 간 상충을 해결하고 소프트웨어의 범위를 파악하여 외부 환경과 상호 작용하는 것을 분석하는 과정이다.

요구사항 분석은 시스템이 가져야 할 기능과 제약 조건을 명확히 정의하는 단계입니다.

  1. 요구사항 도출: 이해 관계자와의 인터뷰, 설문 조사 등을 통해 필요한 요구사항을 수집합니다.
  2. 요구사항 명세화: 수집된 요구사항을 명확하고 구체적으로 문서화하여 개발팀이 이해할 수 있도록 합니다.
  3. 요구사항 검증: 도출된 요구사항이 완전하고 일관성 있는지 검토하고, 상충되는 요구사항을 조정합니다.

소프트웨어 아키텍처 (Software Architecture)

소프트웨어 아키텍처(Software Architecture)는 시스템에 대한 기본 조직 체계로, 시스템을 이루는 구성요소와 구성요소들 사이의 관계, 구성요소와 주변 환경들과의 관계 및 시스템의 진화와 설계를 지배하는 원칙이다.

소프트웨어 아키텍처는 시스템의 전체 구조와 디자인 원칙을 정의하는 과정입니다.

  1. 구성 요소: 시스템을 구성하는 주요 컴포넌트와 그 역할을 정의합니다.
  2. 관계: 구성 요소 간의 인터페이스와 상호 작용 방식을 정의하여 전체적인 시스템의 작동 원리를 나타냅니다.
  3. 설계 원칙: 시스템의 확장성, 유지보수성, 성능 등을 고려한 설계 원칙을 설정하여 시스템의 일관성을 유지합니다.
반응형