본문 바로가기
정보처리기사/핵심용어

소프트웨어(SW) 공학

by 하이방가루 2022. 9. 18.
728x90
반응형

SWEBOK (Software Engineering Body of Knowledge)

  • IEEE에서 Software Engineering 분야의 지식을 10개 영역으로 정리한 체계.
    • 소프트웨어 개발 가이드라인, 개발지침서 포함하여 SW 공학에 대한 총체적 접근 방안을 제공한다.

무결성(Integrity)

  • 데이터 값이 속성에 미리 지정된 제약 조건을 만족하는 정확성

정합성(일관성)

  • 다른 테이블에서 중복된 데이터의 일치성

3R (Reverse, Re-engineering, Reuse)

  • 소프트웨어 생산성 향상, 품질 향상, 유지보수성을 극대화 하는 기법.
    • 역공학(Reverse engineering)
      기존 개발된 시스템에서 사양서, 설계서 등의 문서로 추출하는 방법.
    • 재공학(Re-engineering)
      기존 시스템을 재구성하거나 타 하드웨어에서 사용할 수 있도록 변환하는 방법.
    • 재사용(Reuse)
      기존 소프트웨어의 전체 또는 일부분을 다시 사용하는 방법.

캡슐화(Encapsulation)

  • 객체의 속성과 행위를 하나로 묶고, 실제 구현 내용 일부를 외부에 감추어 은닉하는 기법.

난독화(Obfuscation)

  • 프로그램 코드를 읽기 어렵게 일부 또는 전체를 변경하는 방법.
  • 난독화의 대상에 따라 크게 소스 코드 난독화바이너리 난독화로 나뉜다.

바이너리 난독화 (Binary Obfuscation)

  • 컴파일 후에 생성된 바이너리를 역공학을 통해 분석하기 힘들게 변조하는 기술.

코드 난독화 (Code Obfuscation)

  • 프로그램의 소스 코드를 알아보기 힘든 형태로 바꾸는 기술

Kanban

  • 다양한 단계의 프로세스에 수행해야 하는 일들을 카드, 포스트잇 등의 도구를 활용하여 시각적으로 표현한 도구.

WBS (Work Breakdown Structure)

  • 프로젝트의 목표를 달성하기 위해 프로젝트팀이 실행할 작업을 인도물(deliverables) 중심으로 분할한 계층 구조.
    • 실제 현업에서는 작업 목록과 일정이 혼합된 간트차트 형태로 사용한다.

UML (Unified Modeling Language)

  • OMG에서 객체모델링 기술과 방법론을 표준화한 통합 모데링 언어이자 표기법(Notation)
    • 종류
      • Use Case Diagram
      • Sequence Diagram
      • Activity Diagram
      • Class Diagram

UML Profile

  • 기존 UML의 한계를 벗어나 다양한 유형의 모델을 표현하기 위한 UML 표현력을 확장한 메커니즘.
    • 종류
      • Stereotype
      • Tag Definitions
      • Tagged value
      • Constranint

SDLC 모델 (Software Development LifeCycle)

  • 소프트웨어 개발 타당성 검토부터 개발, 유지보수, 폐기까지의 전 과정을 하나의 생명주기로 정의하고 단계별 공정을 체계화한 모델.

Baseline

  • 소프트웨어 개발 단계에서 각 형상 항목들이 공식적으로 검토 및 승인되어 변화를 통제하는 시점이 되는 기준.
    • 계획단계 ; 기능 (각종 계획서)
    • 요구분석단계 : 분배 (요구사항정의서, DFD 등)
    • 설계단계 : 설계 (화면설계서, 프로그램명세서)
    • 구현단계 : 시험 (소스코드, 단위테스트 결과서)
    • 시험단계 : 제품 (통합/성능/인수 테스트결과서)
    • 설치/운영단계 : 운영 (사용자, 운영자 메뉴얼)

요구 사항 분석

제품 백로그(제품 기능 목록;Product backlog)

  • 스크럼(Scrum) 개발 방법론에서 우선 순위가 매겨진 요구 사항 목록.
    • ID, 이름, 중요도, 최초 추정치(구현 공수), 데모방법 등으로 구성된다.

SW 검토 방법

워크 스루(Walk Through)

  • 검토회의 전에 요구사항 명세서를 미리 배포하여 사전 검토한 후 짧은 검토 회의를 통해 오류를 조기에 검출하기 위한 방법.

프로그램 평가 검토 기법(PERT;Program Evaluation&Review Technique)

  • 프로젝트 작업 기간 산정 시 단일 기간이 아닌 확률적 이론을 바탕으로 3점 추정을 통한 일정관리 기법.

동료검토(Peer Review)

  • 명세서 또는 코드를 작성한 자가 직접 설명하는 것을 들으면서 의견을 나누고 결함을 발견하는 활동.

설계 기법

디자인 패턴(Design pattern)

  • 의사소통 수단의 일종으로서 반복적으로 나타나는 문제들을 해결해 온 전문가들이 경험을 모아서 정리한 일관된 설계 기법.
    • SW 공학에서 디자인 패턴은 객체지향적인 SW 개발과 효율적이고 효과적인 SW를 만드는 해결책으로 사용된다.
    • 디자인 패턴을 맹신한 나머지 모든 문제를 패턴으로 해결하는 것은 좋지 않다.
    • 종류 (생구행)
      • 생성패턴 (추빌팩프싱) : 상 팩토리, 더, 토리 메소드, 로토타입, 글톤
      • 구조패턴 (어블컴데 퍼플프) : 댑터, 릿지, 포지트, 코레이터, 사드, 라이웨이트, 록시
      • 행위패턴 (전인상중 반책커옵메) : 략, 터프리터, 태, 재자, 복자, 임연쇄, 저버, 멘토

어댑터(Adapter)

  • 프로그램에서 호환성이 없는 두 객체를 연결시켜주는 역활을 하는 객체

MVC (Model-View-Controller)

  • 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 SW 디자인 패턴
    • 모델은 애플리케이션의 정보(데이터)를 나타내며,
      뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나태내고,
      컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.

모듈화(Modularization)

  • 시스템을 분해하고 추상화하여 성능향상, 디버깅, 테스트, 통합 및 수정이 용이하도록 하는 SW 설계 기법.
  • 의사코드(Pseudocode)
  • 프로그램을 작성할 때 각 모듈이 작동하는 논리를 사람이 사용하는 언어로 간략하게 표현하는 언어.
    • 프로그램 개발 시작하기 전, 사고를 좀더 명확히 정립하게 만들어주어 프로그램을 설계하는데 도움이 된다.

다형성(Polymorphism)

  • 하나의 객체가 여러 타입의 객체를 참조할 수 있도록 구현하여 다양하게 사용될 수 있도록 하는 원리
    • 다형성으로 인해 하나의 함수는 상속을 통해 기능을 확장시키고 변경하는 것이 가능하다.

E-R 모델

  • SW의 요구사항으로부터 얻어낸 정보들을 개체(Entity), 속성(Attribute), 관계성(Relation)으로 기술하는 데이터 모델.
    • ER모델을 기반으로 ER다이어그램(ERD;ER Diagram)을 작성할 수 있다.

설계 검증 지표

CRUD Matrix

  • 시스템 개발 시 프로세스와 DB에 저장되는 데이터 사이의 Dependency를 나타내기 위한 지표
    • SW 설계를 위해 수행하는 업무 분석의 결과 중 프로세스 모델링과 데이터 모델링의 검증을 위해 사용한다.

SW 품질 지표

결합도(Coupling)

  • 외부 모듈과의 연관도 또는 모듈 간의 상호 의존성을 나타내는 정도
    • 자료data < 스탬프stamp < 제어control < 외부external < 공통common < 내용content
    • 결합도가 낮고, 응집도는 높을수록 유지보수성이 높다

응집도(Cohension)

  • 한 모듈 내부의 처리 요소들 간의 기능적 연관 정도 (모듈의 독립성)
    • 기능적 > 순차적 > 통신적 > 시간적 > 논리적 > 우연적
    • 결합도가 낮고, 응집도는 높을수록 유지보수성이 높다

GS 인증 (Good Software)

  • SW 산업 활성화 정책으로 SW 시험인증센터가 ISO 국제 표준을 기반으로 개발한 한국형 SW 품질 인증제도
    • GS인증 취득한 제품의 경우 공공기관 우선 구매 대상으로 지정된다.

ISO 9126 (SW 품질)

  • SW의 최상위 품질 목표 달성을 위한 소프트웨어 품질 특성에 대한 국제 표준.
    • 6가지 주특성으로 정의하고, 각 품질 특성에 대한 하위특성을 포함하는 형태이다.
    • 주특성(기신사효유이) : 능성, 뢰성, 용성, 율성, 지보수성, 식성

SW 관리

ALM(Application Lifecycle Management)

  • 요구사항 수집, 모델링, 개발, 테스트, 프로젝트 관리 및 형상관리까지 소프트웨어 개발의 전 과정을 자동화된 툴을 통해 체계적으로 통합하고 시각화해 관리하는 기법.

CASE(Computer Aided System Engineering)

  • 소프트웨어 개발의 자동화
    • 소프트웨어 위기 현상을 해결하기 위하여 소프트웨어의 생산 자체를 컴퓨터를 활요하여 자동화 시켜보자는 개념으로 탄생하였다.

CI/CD

  • 대표적인 CI/CD 툴로는 젠킨스(Jenkins)가 있다.

CI(Continuous Integration;지속적인 통합)

  • 개발자가 작성한 소스를 자동화 프로세서를 통해 지속적으로 테스트, 빌드하는 일련의 활동.
    • CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.

CD(Continuous Delivery / Deployment;지속적인 제공/배포)

  • 지속적인 제공이란 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리(예: GitHub 또는 컨테이너 레지스트리)에 자동으로 업로드되는 것을 뜻하며, 운영팀은 이 리포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포할 수 있다.
    • 이는 개발팀과 비즈니스팀 간의 가시성과 새로운 코드를 배포하는 것을 목표로 한다.
  • 지속적인 배포란 개발자의 변경 사항을 리포지토리(응용 프로그램 개발에 관련된 정보를 보관하여 두는 데이터베이스)에서 고객이 사용 가능한 프로덕션환경까지 자동으로 릴리즈하는 것을 의미한다. 이는 애플리케이션 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결한다.
    • 지속적인 배포는 파이프라인의 다음 단계를 자동화함으로써 지속적인 제공이 가진 장점을 활용한다.
  • CD는 지속적인 서비스 제공 또는 지속적인 배포를 의미하며 이 두 용어는 상호 교환적으로 사용된다.
    • 두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 한다.

프로그래밍 용어

매개변수/파라미터(Parameter)

  • 함수 혹은 메서드에서 정의되는 입력 변수명.
    • Argument : 함수 혹은 메서드를 호출할 때 전달되는 값.

메서드(Method)

  • 객체 지향 프로그래밍에서 데이터와 멤버 변수로 구성된 서브루틴(=구성체).
    • 클래스 내의 존재하는 각각의 행위를 표현하는 단위이다.

인스턴스(Instance)

  • 클래스에 명시된 소스를 기반으로 소프트웨어 세계에 실체화된 구체적인 실체.
    • 실체화된 인스턴스는 메모리에 할당된다.

인터페이스(Interface)

  • 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고 받을 수 있는 기술.
    • 여러 시스템의 일반화된 속성을 모아 만든다?

컴포넌트(Component)

  • 실행 코드 기반으로 독립적으로 기능을 수행하는 모듈로서 인터페이스를 통해 호출되며 교체, 재사용이 가능한 프로그램 단위.
    • 모듈 : 명령문, 처리논리, 데이터 구조로 구성된 소스 코드 기반으로 단위기능을 수행하는 프로그램.

프레임워크(Framework)

  • 컴포넌트가 안정적으로 동작되도록 실행 엔진, 컴포넌트 관리 기능, 결함 허용 처리 가능, 시간 동기화 기능, 통신 미들웨어 등을 제공하는 기반이 되는 구조나 틀.

인터프리터(Interpreter)

  • 프로그램밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경.
    • 컴파일러와 인터프리터는 프로그램을 번역하는 프로그램이다.
    • 컴파일러는 프로그램 전체를 번역하여 실행 가능한 프로그램으로 생성하여 실행하는 반면,
      인터프리터는 한 줄 단위로 해석하여, 번역과 동시에 실행한다.

다중 정의(Overloading)

  • 같은 이름의 메소드를 여러개 정의하는 것.
    • 메소드의 이름만 동일하고 파라미터 타입과 수에 의해 구별된다.

재정의(Overriding)

  • 상속 관계에 있는 두 클래스 중 하위 클래스(자식 클래스)에서 상위 클래스(부모 클래스)의 메소드를 재정의하는 것.
    • 상속을 통해 구현되고, 이름, 인자, 리턴타입이 동일한 형태로 구현된다.(로직을 재정의한다.)리팩토링(Refactoring)
  • 외부기능은 그대로 유지하면서 비효율적인 내부의 코드 구조를 개선하는 소프트웨어 시스템 변경 기법.
    • Code smell(이상코드)를 제거하고, SW 이해도를 향상시킨다.

POJO (Plain Old Java Object)

  • 객체 지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트.
    • 특정 환경에 종속되는 클래스(ex. HttpServletRequest, MessageListener 등등)를 상속받아 사용함으로써 다른 환경으로 이전이 어렵거나 소스의 확장성이 떨어지는 점을 지양해야 한다는 개념이다.

PreparedStatement

  • 동일하거나 비슷한 데이터베이스 문을 노은 효율성으로 반복적으로 실행하기 위해 사용되는 객체.
    • PreparedStatement는 Statement와 달리 객체를 Cache에 담아 재사용이 가능한 차이점이 있다.

빌드(Build)

  • 소스코드를 실행 가능한 번들로 변환시키는 방법.
    • 비유) 글을 작성한 원고(=코드)를 책으로 출간하는 것.

Release

  • 실행 환경에서 바로 실행될 수 있도록 빌드 단계에서 만들어진 빌드와 배포의 현재 설정을 결함하는 과정.

배포(Deploy)

  • 운영 서버에 소스 코드를 적재하는 활동.
    • 비유) 완성된 책(=빌드)을 고객들이 구매할 수 있도록 서점(=운영서버)에 진열하는 활동.

Software Bug

  • 소프트웨어가 예상하지 못한 잘못된 결과를 내거나, 오류가 발생하거나, 착오나 오작동의 발생하는 등의 문제.
    • 버그는 잠재된 프로그램 상의 오류이고,
      에러는 프로그램 수정 및 추가로 발생되는 오류로 구분할 수 있다.
    • 예외는 서버의 런타임 시 발생되는 오류이다.

버퍼 오버플로우

  • 버그의 일종으로, 프로그램이 실행될 때 입력받은 값이 버퍼를 가득 채우다 못해 넘쳐흘러 다른 변수 또는 프로그램 버퍼의 공간을 침범하는 현상.

디버깅(Debugging)

  • SW 개발 단계 중에 발생하는 시스템의 논리적인 오류나 비정상적 연산(버그)을 찾아내고 그 원인을 밝혀서 수정하는 작업 과정.

Mapping

  • 하나의 값을 다른 값으로 대응시키는 방법.
    • 지도를 뜻하는 맵(map)에서 유래한 단어.

ORM (Object-relational mapping)

  • 객체(Object)와 관계형 데이터베이스(RDB)의 데이터를 자동으로 매핑(연결)해주는 기술이자 방법.
    • 전통적인 개발 방법에서 데이터베이스의 데이터를 객체에 담기 위해 개발자가 직접 코드를 작성하는 것이 아니라,
      ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 데이터를 다룬다.
    • 대표적인 ORM 프레임워크로는 JPA, Hibernate가 있다. (node.js-sequelize)

프로그래밍 방식

관점지향 프로그래밍(AOP;Aspect Oriented Programming)

  • 시스템을 핵심 관심자와 횡단 관심사로 분리하고 Weaving을 통해 프로그램을 구현하는 방법
    • ex) 핵심 관심사 : 게시판 글쓰기
    • ex) 횡단 관심사 : 로그인

객체지향 프로그래밍(OOP;Object-Oriented Programming)

  • 프로그램을 수많은 객체라는 기본 단위로 나누고 이 객체들의 상호작용을 통해 로직을 프로그래밍하는 방식.
    • 장점
      코드의 재사용이 용이
      유지보수가 쉽다.

프로그래밍 언어

자바(Java)

JVM (Java Virtual Machine)

  • 자바 소스를 컴파일하여 생성한 바이트 코드를 플랫폼에 독립적으로 실행할 수 있는 환경을 제공하는 가상장치
    • 플랫폼에 독립적이므로 OS에 상관없이 어디서나 실행이 가능하다.

서블릿(Servlet)

  • 클라이언트 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그램.
    • 웹 서버에서 실행되는 작은 프로그램 단위
    • JSP(Java Server Pages)가 HTML문서 안에 Java코드를 포함하고 있는 반면에,
      서블릿은 자바 코드 안에 HTML을 포함하고 있다.
    • Java서버가 JSP코드를 읽어 들여 그것을 서블릿 소스 코드로 변환한다.

서블릿 컨테이너(Servlet Container)

  • 서블릿의 생명주기를 관리하고 요청에 따른 스레드를 생성하는 프로그램.
    • 대표적인 Servlet Container로 Tomcat이 있다.

Dispatcher Servlet

  • HTTP프로토콜을 통해 들어오는 모든 요청의 진입점
  • 모든 요청에 대해 중앙집중식으로 처리하여 결과를 전달하는 프론트 컨트롤러(Front Controller)

스프링 프레임워크(Spring Framework)

  • 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 오픈 소스 애플리케이션 프레임워크.

파이썬(Python)

  • 인터프리터 방식으로 플랫폼에 독립적이며, 객체지향적, 동적 타이핑(dynamically typed)이 가능한 대화형 언어
    • 빅테이터, AI에서 파이썬이 많이 쓰이는 이유는 다양한 라이브러리를 유연하게 제공하기 때문이다.

Go언어

  • 빠른 성능, 안정성, 편의성 쉬운 프로그래밍을 목표로 만든 범용 프로그래밍 언어.
    • 특징 : 정적타입, 컴파일언어, 병행처리, 빠른 컴파일 속도, 가비지(garbage) 컬렉션(쉬운 메모리 관리)

자바스크립트(JavaScript)

Node.js

  • 자바스크립트를 활용하여, non-block I/O와 단일 스레드 기반의 이벤트 루프를 통한 높은 처리 성능의 플랫폼.

형상관리(Configuration Management)

  • SW 생명주기 상 무결성(Integrity)를 보장하기 위해 형상 항목을 식별, 통제, 감사 및 기록하는 생명주기 지원 및 보호 활동.
    • SW 생명주기 및 유지보수 과정에서 만들어지는 각 단계별 산출물을 체계적으로 관리하여 SW 가시성 및 추적성을 부여함으로써 산출물의 정합성을 보장하는 활동이다.

버전관리 시스템(VCS;Version Control System)

  • 컴퓨터상의 파일에 대해 파일 변화를 원하는 시점에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템.
    • 형상관리를 위한 Tool
    • ex) 깃(Git)

깃허브(GitHub)

  • 컴퓨터 프로그램 소스를 공유하고 협업하여 개발할 수 있는 버전 관리 시스템인 깃(Git)에 프로젝트 관리 지원 기능을 확장하여 제공하는 웹 호스팅 서비스.
    • 깃(Git)은 2005년 리눅스 제작자인 리누스 토발즈(Linus Torvalds)가 오픈 소스 리눅스(Linux) 커널 개발의 효율성을 높이기 위해서 개발하였다.
    • 많은 개발자들이 소프트웨어 소스 코드를 공유하고 협력하면서 개발할 수 있도록 지원하는 분산형 버전 관리 시스템(DVCS: Distributed VCS)으로 , 코드 수정 권한, 버전 추적 등 소프트웨어 개발에 필요한 관리 기능을 제공한다.

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

  • 시스템을 구성하는 컴포넌트 및 컴포넌트 간 관계의 구조이며 이들을 설계하고 전개하는 지침과 원칙
    • 시스템의 청사진 역할(설계 지침 역할)
    • 요소
      • Component
      • Relation
      • Principle

SOA (Service Oriented Architecture)

  • 정보 시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보 기술 아키텍쳐.
    • 1996년 컨설팅 업체 가트너가 처음 소개한 것으로 기업의 IT 시스템을 비즈니스에 맞춰 유연하게 사용할 수 있다는 것이 장점이다.

MSA (MicroService Architecture)

  • SOA에 근간을 두고, 대용량 웹서비스 개발을 위해 도메인 단위로 경량화된 서비스를 세분화하여 설계하는 아키텍처
    • MSA는 작은 단위로 기능을 분할할 때 수평 방향의 계층별 절단이 아니라,
      수직 방향의 기능별로 전달한다.
    • 마이크로서비스 아키텍처는 레고 블록을 조립하여 원하는 모양으로 만드는 것에 비유할 수 있다.

모델 주도형 구조(MDA ; Model-Driven Architecture)

  • 객체 관리 그룸(OMG ; Object Management Group)에서 내세운 모델 중심의 정보통신 구조로서 모델을 구조적 선택과 기술적 목표에서 독립시키도록 설계하는 기법.
    • MDA는 통합 모델링 언어(UML ; Unified Modeling Language)를 통해 설계하는 것이 필수이다.

SW 성능 측정 주요 지표

  • 응답시간(Response Time)
    • 사용자 측면에서 응답시간이 성능 목표 기준
    • 업무 처리에 소요되는 시간
    • ex) 평균 응답속도 3초 이내
  • 업무량/처리량(Throughput)
    • 업무 피크 시간 동안에 시스템이 처리해야 하는 단위 시간 당 최대 업무처리 건수
    • ex) 처리량 500 TPS 이상
    • TPS : Transaction Per Second
  • 가용성(Availability)
    • 시스템이 정상적으로 사용 가능한 시간
    • ex) 가용성 24 X 365 보장
  • 사용률(Utilization)
    • CPU, 메모리, 디스크, 네트워크 등의 사용비율
    • ex) CPU 90% 이하

SW 개발 방식(기법)

RAD (Rapid Application Development)

  • 짧은 개발 주기 동안 요구사항 정의, 분석, 설계와 코드 생성기에 의해 신속하게 개발하는 소프트웨어 개발방식.
    • 통합 개발 환경과 같은 높은 기능의 개발 환경을 사용하는 프로그래밍의 자동화나,
      시각적인 사용자 인터페이스의 설계, 모듈개발 등의 기능을 포함한다.

테스트 주도형 개발 (TDD ;Test Driven Development)

  • 코드를 작성하기 전에 테스트 코드를 먼저 설계, 작성하여 프로그램을 개발하는 방법.

모델 주도형 개발(MDD ;Model-Driven Development)

  • 모델 주도형 구조(MDA ; Model-Driven Architecture)에 기반을 둔 소프트웨어 개발 방법.
    • MDD는 전통적인 애플리케이션 개발 방식인 코드 중심 개발 방식과 달리 모델을 중심으로 분석, 설계를 수행하고 소스 코드 및 산출물을 자동 생성한다.

소셜코딩(Social Coding)

  • 원격저장소(Repository)를 이용하여 모든 사람이 평등하게 소스코드를 수정할 수 있는 권리를 얻어 모두 함께 코딩을 하는 개발 방식.

애자일 방법론(Agile)

  • 절차나 문서보다 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 방법론.
    • 종류
      • 익스트림 프로그래밍(Extreme Programming ; XP)
      • 짝 프로그래밍(Pair Programming)
      • 테스트 주도 개발(Test Driven Development ; TDD)
      • 스크럼(Scrum)
        Product backlog(제품 기능 목록)를 바탕으로 기술적으로 분할되고 재해석된 Sprint의 반복을 통한 제품 완성을 구현하는 Agile 방법론

XP(eXtreme Programming)

  • 의사소통 개선, 즉각적인 피드백에 의해 단순하게 코딩하여 SW 품질을 높이기 위한 Agile 개발 방법론.

CBD(Component Based Development)

  • 독립적인 업무나 기능을 수행하는 Component를 기반으로 재사용하는 형식을 통해 시스템을 개발하는 방법
    • CBD의 특징 : 반복적 개발주기, 아키텍처 중심 개발, 재사용, 인터페이스 단위의 조립

반복적 개발 모델(Iterative Development Model)

  • 제품의 일부분을 개발하고 점진적, 반복적으로 개발하여 최종 시스템으로 완성해 나가는 개발 기법.

SP 인증 (Software Process Authentication)

  • 기업의 SW 개발 단계별 작업 절차 및 산출물 관리 역량 등을 분석하여 SW개발 프로세스 역량 수준을 평가 인증하는 제도
    • SW 산업 진흥법 제23조에 근거하여 국내 SW 기업의 SW 사업 수행 능력을 강화하고 SW 사업의 부실방지를 목적으로 한다.

SPICE (ISO 15504)

  • ISO 12207의 SW 생명주기 프로세스로부터 파생되어 여러 프로세스 개선모형을 국제표준으로 통합한 소프트웨어 프로세스 심사(Software Process Assessment: SPA) 표준.

SSO (Single Sign On)

  • 하나의 로그인 모듈을 사용하여 관련된 여러가지 시스템 서비스를 이용할 수 있는 기술.
    • 한 번의 인증 과정으로 여러 컴퓨터 상의 자원을 이용 가능하게 하는 인증 기능이다.

서비스(Service)

BaaS(Backend as a Service)

  • 개발자가 서버 기술을 몰라도 모바일 앱을 만들 수 있게 돕는 클라우드 서비스

플랫폼(Platform)

  • 서비스나 정보를 중개하는 하드웨어 또는 소프트웨어 아키텍처로 운영 체제, 프로그래밍 언어, 관련된 런타임 라이브러리, 그래픽 사용자 인터페이스 등을 포함하고 있는 환경.

네트워크(Network)

세선(Session)

  • 프로그램이 구동되는 서버측에 사용자의 정보를 저장하는 작은 파일.
    • 쿠키는 브라우저가 종료되어도 소멸되지 않지만,
      세션은 서버와의 통신이 단절되면(브라우저가 종료되면) 정보가 소멸된다.
    • 서버측에 저장되므로 중요한 정보나 개인정보를 담는 용도로 사용한다.

쿠키(Cookie)

  • 프로그램을 이용하는 인터넷 사용자의 컴퓨터(=브라우저)에 설치되는 작은 기록 정보 파일.
    • 프로그램의 규칙에 따라 브라우저에게 사용자의 정보(아이디, 접속일자 등)를 저장해 두었다가 필요할 때 사용 가능한 파일이다.
    • 쿠기의 삭제일자를 설정할 수 있지만, 누구나 접근이 가능하므로 개인정보와 같은 중요한 정보는 쿠키를 사용하지 않는다.AJAX(Asynchronous Javascript And XML)
  • 브라우저가 가지고 있는 XMLHttpRequest객체를 이용해서 전체 페이지를 새로 고치지 않고도 페이지의 일부분만을 위한 데이터를 로드하는 기법

JSON(JavaScript Object Notation)

  • 웹과 컴퓨터 프로그램에서 데이터 통신 시 자료를 표현하는 방법으로, 문자열 데이터를 객체화하는 이름(키)과 값의 쌍으로 표현된 경량의 데이터 교환 형식.
    • 여러 프로그래밍 언어에도 사용할 수 있어 독립형 언어이며, 텍스트로 기술하여 사람도 쉽게 읽고 작성할 수 있다.
    • 웹 브라우저와 웹 서버 간 비동기 통신, 서버 간의 데이터 교환 등에 주로 사용된다.
    • 표현 방식 : {"속성" : "값"} or {"데이터이름" : 값} or {Key : Value}

SOAP (Simple Object Access Protocol)

  • XML과 HTTP 통신을 기반으로 하여 네트워크상에 존재하는 각종 컴포넌트간의 호출을 효율적으로 실현하기 위한 방법을 제시하는 규약

미들웨어(Middleware)

  • 양쪽을 연결하여 데이터를 주고받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어
    • 웹브라우저에서 데이터베이스로부터 데이터를 저장하거나 읽어올 수 있게 중간에 미들웨어가 위치한다.

REST (Representational State Transfer)

  • 모든 자원을 리소스로 표현하는 ROA(Resource Oriented Architecture)를 따르는 웹서비스 아키텍처

RESTful API

  • HTTP 요청을 사용하여 데이터를 행위(GET, POST, PUT, DELETE)를 통해 상호 간 쉽게 통신할 수 있는 간단한 인터페이스

위험(Risk)

  • 위험원(Hazard)으로부터 유해(Harm)로 이어질 수 있는 가능성과 심각성의 조합.

위험원(Hazard)

  • 위험(Risk)의 원인
  • 정성적 기법(전문가의 의견이나 여러 사람의 의견을 모으고 토의를 거쳐 결과를 도출하는 것)으로 발견할 수 있는 위험요소.

DevOps

  • 소프트웨어 개발과 IT운영을 병행하고 협업하는 방식이자 문화.
    • DevOps는 소프웨어 개발(Software Development)과 IT 운영(Infomation Technology Operations)의 합성어이다.
    • 소프트웨어 개발과 IT 운영이 분리된 환경에서는 개발이 지연되거나 납기 후 문제 발생 빈도가 높은 반면,
      DevOps에서는 개발자와 운영자 간 책임을 공유함으로써 개발 주기가 단축되고 비용이 절감된다. 그리고 문제 발생 빈도가 낮아지고 문제가 발생되어도 즉시 처리가 가능한 장점을 가지게 된다.

기술 부채(Technical debt)

  • 프로그램 개발 과정에서 주관적이고 편법 적용을 통해 발생되는 추가 작업 비용.
    • 문제점
      품질의 영향을 준다.
      시스템 작동에 직접적인 영향을 주지는 않고, 가시적이지 않아 관리가 잘 되지 않는다.

PMO (Project Management Office)

  • 프로젝트 프로세스를 표준화하고, 방법론을 결정하며, 포트폴리오 관리를 촉진해 주는 프로젝트 근간 조직.
    • PMO는 기업 내부에서 진행 중인 모든 프로젝트를 통합하여 관리하는 조직으로
      프로젝트 방법론, 절차, 통제, 도구, 인력, 교육 훈련 등의 기능을 수행한다.

RACI Matrix

  • 프로젝트 활동에서 업무에 대한 역할과 책임 및 권한을 명확히 설정하는 차트.
    • 역할은 Responsible(실무담당자), Accountable(의사결정권자), Consulted(조언자), Informed(결과보고대상자)이다.

UDDI (Universal Description, Discovery and Integration)

  • 기업이나 단체, 개인이 자신들의 서비스 내용을 인터넷상에 등록할 수 있게 하는 XML 기반 온라인 저장소.
    • WSDL을 사용하여 등록하고, 서비스 소비자들은 그 저장소에 접근함으로써 원하는 서비스들의 목록을 찾을 수 있다.

WSDL (Web Services Description Language)

  • Web Service가 제공하는 서비스에 대한 정보를 기술하기 위한 XML 기반의 마크업 언어.
    • 특정 비즈니스가 제공하는 서비스에 대한 설명이나 서비스를 이용하기 위한 방법들이 서술된 XML 문서이다.
728x90
반응형

'정보처리기사 > 핵심용어' 카테고리의 다른 글

IT 경영  (0) 2022.10.04
소프트웨어 테스트(SW Test)  (0) 2022.09.29

댓글