공부했던 내용을 정리해보고자 한다📖
중요한 것만 공부한거 아니고 중요한 것 정리만..
나만의 언어로 정리하다 보니 되게 축약되어 있을 수 있다.
🟡소프트웨어의 종류 및 개발 방법론
Section01. 소프트웨어 분류 및 특성
상용 소프트웨어의 분류⭐️
상용 소프트웨어
- 산업 범용 소프트웨어 -
시스템 소프트웨어, 미들웨어, 응용 소프트웨어
- 산업 특화 소프트웨어 -
자동차, 항공, 패션 의류, 조선, 건설, 농업, 의료, 국방 등
↪ 산업 범용 소프트웨어
- 시스템 소프트웨어: 운영체제, 데이터관리, 스토리지 소프트웨어, 소프트웨어 공학 도구, 가상화 소프트웨어, 시스템 보안
- 미들웨어: 분산 소프트웨어, IT 자원 관리, 서비스 플랫폼, 네트워크 보안
- 응용 소프트웨어: 영상 처리, CG/VR, 콘텐츠 배포, 자연언어 처리, 음성 처리, 기업용 소프트웨어
각각 뭐가 포함되는지 알면 좋을듯 하다.
시스템의 기본 요소⭐️
출력(Output) - 처리된 결과를 시스템에서 출력하는 요소이다.
처리(Process) - 입력된 자료를 처리 조건에 따라 변환 및 가공하는 요소이다.
제어(Control) - 시스템의 기본 요소들이 각 과정을 올바르게 행하는지 감독하는 요소이다.
피드백(Feedback) - 처리된 결과를 측정, 파악하여 목표에 도달되었는가를 검사하며 만일 불충분할 경우 목표 달성을 위해 다시 입력하는 요소이다.
기본요소가 아닌 것은?
플랫폼의 개념 및 기능⭐️
개념
많은 응용 프로그램들을 쉽게 사용할 수 있도록 지원해주는 하드웨어, 소프트웨어 환경
응용 프로그램을 실행하기 위해 사용하는 하드웨어와 소프트웨어의 결합
플랫폼은 소프트웨어 개발과 운영을 편안하게 할 수 있도록 지원
동일한 플랫폼에서 개발된 소프트웨어는 언제 어디서 손쉽게 실행 가능
기능
소프트웨어의 개발 및 운영비용 절약
동일한 플랫폼 간 공통 그룹을 형성하여 네트워크 효과 최대화
소프트웨어 개발생산성 향상
개념 및 기능이 아닌것은?
플랫폼의 성능 특성 분석 항목⭐️
➀ 가용성(Availability): 정보 시스템은 적절한 방법으로 정보를 요구하는 사용자에게 정보 서비스를 제공해야함.
➁ 응답 시간(Response Time): 명령이 주어지고, 반응하기 까지 걸린 시간. 반응 시간이라고도 함.
➂ 정확성(Accuracy): 플랫폼에서 처리된 결과가 얼마나 올바른 값에 접근했는지 측정하는 정도.
➃ 사용률(Utilization): 하드웨어 자원, 소프트웨어 자원, 네트워크 자원등을 일정 시간 사용하는 정도
분석항목이 아닌 것은? (각 항목의 영어 명칭도 알아야)함.
소프트 프레임워크의 특징⭐️
➀ 모듈화(Modularity): 전체 프로그램을 한 번에 설계하지 않고 단일 기능을 묶어서 모듈화한다.
➁ 재사용성(Reusability): 전체나 일부 소프트웨어를 다른 목적으로 사용할 수 있다.
➂ 확장성(Extensibility): 추가적 설계 없이 확장이 얼마나 쉽고 가능한지에 대한 용이성.
➃ 제어의 역 흐름(Inversion of Control): 소프트웨어 프레임 워크 코드가 전체 흐름 제어를 통해 특정 이벤트 발생 시 다형성을 통해 애플리케이션이 확장한 메소드를 호출해 제어가 소프트웨어 플레임워크부터 애플리케이션으로 거꾸로 흐르게 함.
특징이 아닌 것은? && 하나 설명하면 찾아야함 (영어 출제 가능)
프레임워크 사용 기대효과⭐️
➀ 개발 용이성 ➁ 품질 보증 ➂ 변경 용이성 ➃ 유지보수 용이성 ➄ 재사용성 향상 ➅ 표준화율 향상 ➆ 상호 운용성 향상
기대효과가 아닌 것은? 설명도 용어 풀어서 기억하기.
기업용 소프트웨어⭐️
1. 오피스웨어(OfficeWare)
- 워드프로세서, 프레젠테이션, 스트레드시트 등의 업무용 오피스 소프트웨어와 그룹웨어를 포함하는 기업용 소프트웨어
2. ERP(Enterprise Resource Planning)
- 기업에서 발생하는 정보들을 서로 공유하고 새로운 정보의 생성과 신속한 결정을 도와줌으로써 회사 전체 차원으로 자원 관리
3. SCM(Supply Chain Management)
- 부품업자로부터 생산자, 배포자, 고객에 이르는 물류의 흐름을 하나의 가치 사슬관점에서 파악하고, 필요한 정보가 원활히 흐르도록 지원하는 기술
4. BI(Business Intelligence)
- 기업에서 데이터를 수집, 정리, 분석하고 활용하여 각 조직의 구성원에게 적시에 의사 결정을 할 수 있도록 지원하는 기술
5. CRM(Customer Relationship Management)
- 신규 고객을 획득하거나 기존 고객 유지 및 수익성 증대목적으로 자료를 분석해 고객 특성에 기초한 마케팅 활동 지원 기술
기업용 소프트웨어가 아닌 것은? 설명을 보고 찾을 수도 있어야함.
컴포넌트의 설계⭐️
- 컴포넌트의 오퍼레이션 사용 전에 참이 되어야 할 선행 조건
- 사용 후 만족되어야 할 결과 조건
- 오퍼레이션이 실행되는 동안 항상 만족 되어야 할 불변 조건
설계의 조건이 아닌 것은? && 빈칸 뚫으면 채우기
소프트웨어 공학의 기본 원칙⭐️
- 현대적인 프로그래밍 기술을 적용
- 지속적인 검증을 시행
- 결과에 관한 명확한 기록을 유지
- 품질 높은 소프트웨어 상품을 개발
SE의 기본원칙이 아닌 것은?
Section02. 소프트웨어 개발 방법론
운영체제의 종류⭐️
- Windows
- UNIX
- Linux
- IOS
- Android
운영체제 종류를 구분할 수 있어야함.
운영체제 분석 시 고려사항⭐️
신뢰도 - 오랜 시간 시스템 운영시 장애 발생 가능성이 있는지 확인
성능 - 다수의 동시 사용자 처리와 대량 파일 작업 처리가 가능한지 확인
기술 지원 - 공급 벤더들의 안정적인 기술 지원이 있는지 확인
주변 기기 - 다수의 주변 기기 지원 여부 확인
구축 비용 - 지원 가능한 하드웨어 비용, 설치할 애플리케이션의 라이센스 정책 및 비용 그리고 TCO(Total Cost of Ownership) 확인
고려상항이 아닌 것은?
CISC RISC 구분⭐️

CISC RISC를 구분할 수 있어야함
DBMS 종류 및 분석 시 고려사항⭐️
종류
- Oracle
- IBM DB2
- SQL Server
- MySQL
- SQLite
- MongoDB
- Redis
분석 시 고려사항
가용성 - 오랜 시간 시스템 운영시 장애 발생 가능성 확인
기술 지원 - 공급 벤더들의 안정적인 기술 지원 및 튜닝 옵션 지원 확인
상호 호환성 - 설치 가능한 운영체제 종류 및 다양한 운영체제에서 지원되는 JDBC, ODBC 확인
구축비용 - 라이선스 정책 및 비용, 유지 및 관리 비용, 총소요 비용 확인
DBMS 구분 가능해야함 && 분석 시 고려사항이 아닌 것을 찾을 수 있어야함
미들웨어 종류⭐️
DBMS(DataBase Management System) - 데이터베이스 벤더에서 제공하는 클라이언트에서 데이터베이스와 연결하기 위한 미들웨어, 이 시스템 구축하는 경우 보통 2-티어 아키텍처라 함.
RPC(Remote Procedure Call) - 애플리케이션의 프로시저를 사용하여 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 방식의 미들웨어.
MOM(Message Oriented Middleware) - 메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어로 이 기종 분산 데이터 시스템의 데이터 동기를 위해 많이 사용됨.
TP-Monitor - 온라인 트랜잭션 업무(은행 계정, 항공기/버스 예약 업무 등)에서 트랜잭션을 처리, 감시하는 미들웨어. 사용자 수가 증가하여도 빠른 응답 속도를 유지해야 하는 업무에 적합.
ORB(Object Request Broker) - 객체 지향 미들웨어로 코바 표준 스펙을 구현한 미들웨어.
WAS(Web Application Server) - 클라이언트/서버 환경보다는 웹 환경을 구현하기 위한 미들웨어. EJB는 서버 컴퓨터에서 운영되는 Java 컴포넌트들을 설정하기 위한 아키텍처.
WAS 개념 및 종류⭐️
개념
동적인 웹 사이트, 웹 어플리케이션, 웹서비스 개발을 지원하기 위해 설계된 소프트웨어. 데이터 접근 관리, 세션 관리, 트랙잭션 관리 등을 위한 라이브러리 제공.
WAS는 HTTP 세션 처리를 위한 웹 서버 기능뿐만 아니라 필수적인 기업 업무까지 Java, EJB 컴포넌트 기반으로 구현 가능
사용자가 웹 브라우저로 요청시, 정적 데이터는 웹 서버가 직접 처리
동적 데이터는 웹 서버에서 직접 처리하지 못하여 WAS에서 지원받아 처리
정적 데이터는 이미지나 자바스크립트 코드, 동적 데이터는 데이터베이스와 접속, 외부 시스템 연동.
종류
JBoss: Red Hat, JBoss에서 제공, 오픈소스 제품 이용 시 사용
Jetty: Eclipse Foundation에서 제공, 빠른 처리 속도 요구 시 사용
JEUS: TmaxSoft에서 제공, 대량의 안정적인 거래 처리가 요구 적시의 기술 지원이 필요할 때 사용
Resin: Caucho Technology에서 제공, 빠른 처리 속도가 요구되는 경우 사용
WebLogic: Oracle Corporation에서 제공, 대량의 안정적인 거래 요구 시 사용
WebSphere: IBM에서 제공, 대량의 안정적인 거래 처리가 요구 시 사용
개념과 종류 중 틀린설명 찾을 수 있어야함.
WAS 분석 시 고려사항⭐️
1. 가용성
오랜 시간 시스템 운영시 장애 발생 가능성이 있는지
안정적인 트랙잭션 처리가 가능한지
패치 설치를 위한 재기동이 되는지
WAS 이중화를 지원하는지
2. 성능
대규모 거래 요청 시 처리 성능을 확인
다양한 설정 옵션 지원하는지 확인
GC의 다양한 옵션 지원하는지 확인
3. 기술 지원
공급 벤더들의 안정적인 기술 지원이 가능한지 확인
다수의 사용자들 간의 정보를 공유할 수 있는지 확인
오픈소스 여부 확인
4. 구축 비용
라이선스 정책 및 비용 확인
유지 및 관리 비용 확인
총 소용비용 확인
WAS 분석 시 고려사항이 아닌 것을 찾을 수 있어야함.
소프트웨어 개발 방법론 ⭐️❗️

1) 구조적 방법론 - 1970년
🟣절차
타당성 검토 단계 -> 계획 단계 -> 요구사항 단계 -> 설계 단계 -> 구현 단계 -> 시험 단계 -> 운용/유지보수 단계
🟣특징
- 구조화 프로그래밍 또는 구조적인 프로그램 작성
- 정형화된 분석 절차에 따라 사용자 요구사항을 파악해 문서화하는 방법
- 쉽게 이해하고 검증할 수 있는 코드 생성이 목적
- 모듈 중심 개발
- 분할 정복 방법, 하향식으로 기능 분해
- 프로세스 중심 방식의 개발 유용
- 재사용성, 유지보수성 낮음
2)정보공학 방법론 - 1980년
🟣절차
수직적 구조 방법론
정보 전략 계획 -> 업무 영역 분석 -> 업무 시스템 설계 -> 기술 설계 -> 업무 시스템 구축 -> 업무 시스템 실행
수평적 구조 방법론
데이터 -> 업무 활동 -> 상호 작용
🟣특징
- 정보 시스템 개발에 필요한 관리 절차와 기법을 체계화환 방법론
- 생명주기를 이용해 대형 프로젝트를 수행하는 방법론
- 기업 정보 시스템에 공학적 기법을 적용 시스템의 계획, 분석, 설계 및 구축을 하는 데이터 중심 방법론
- 자료 구조 중심의 방법론
- 데이터와 프로세스가 균형적
- 기능적 설계를 벗어나진 못함
- 기능별 유지보수 필요, 재사용성 낮음
3)객체지향 방법론 - 1990년
🟣절차
요구분석 -> 설계 -> 구현 -> 시험 -> 인수
🟣특징
- 데이터와 그 데이터에 관련된 동작을 모두 포함하는 방법론
- 데이터는 실체, 동작은 절차, 방법, 기능을 의미
- 정보 시스템과 데이터베이스를 설계하는 방법론
- 개발에 있어서 객체지향 기법을 활용하는 방법론
- 객체 중심으로 캡슐화, 추상화 기술이 필요
- 분석 초점이 명확
- 자연스럽고 유연하며 재사용이 용이
- 개발전문가가 부족
4)컴포넌트 기반 방법론 - 2000년
🟣절차
개발준비 -> 분석 -> 설계 -> 구현 -> 시험 -> 전개 -> 인도
🟣특징
- 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 애플리케이션을 작성하는 방법론
- 모듈은 기능을 구현하기 위한 최소 단위
- 공공 행정 정보 시스템의 개발에 많이 활용되고 있는 표준 프로세스
- 재사용이 가능한 컴포넌트의 개발 또는 상용 컴포넌트들을 조합하여 개발하는 방법론
- 생산성 품질을 높이고, 유지보수 비용을 최소화하는 방법론
- 반복적, 점진적으로 개발
- 재사용성 생산성, 품질이 높은 방법론
- 비용이 저렴, 위험 개선 가능
- 소프트웨어 위기를 극복하기 위한 방법론
- 컴포넌트 유통 환경 개선 필요
- 테스트 환경 부족, 컴포넌트 평가, 인증 환경 부족
소프트웨어의 위기(문제점)
- 소프트웨어 개발 비용 계속적 증가
- 소프트웨어 개발 이후 유지보수 비용 증가
- 과거엔 기술적인 측면이 강조 되었지만, 요즘은 관리적인 면이 강조됨
- 사용자의 요구 변화가 많아 개발 기간 연장
- 하드웨어 기술은 높고, 소프트웨어 기술은 낮다
- 개발자와 사용자간 의견 차이가 큼
- 기능적 오류가 많아져 성능 및 신뢰성 부족
- 소프트웨어 품질을 평가하는 기준이 없음
- 시장은 넓지만 개발자가 없다
5)애자일(Agile) 방법론 - 1990년
🟣정의
- 요구사항, 설계, 구현, 시험의 단계를 통해 개발하는 방법론
- 소프트웨어 개발 방법에 있어서 계획이 없거나 많은 방법론들 사이에 타협점을 찾은 방법론
- 변화에 신속하게 대응하기 위해 요구사항을 지속적으로 분석, 반영하여 시간 지연을 최소화하는 방법론
🟣특징
- 개발 과정의 소통을 중요하게 생각하는 방법론으로 잦은 출시를 목표로 함
- 기존 모형(폭포수, 프로토타입, 나선형)의 문제점을 보완
- 점증적으로 개발
- 출시 주기를 짧게 해 다양한 요구 변화에 대응
- 고객과 개발팀의 소통, 개발팀원 간의 소통, 협력 극대화
- 수행 능력을 높이기 위해 현식적 방법 제시
- 가볍고 실용적인 방법론
🟣선언문
- 개인과 상호 작용을 프로세스와 도구보다 중시한다.
- 동작하는 소프트웨어를 포괄적인 문서보다 중시한다.
- 고객과의 협력을 계약의 협상보다 중시한다.
- 변화의 대응을 계획의 수행보다 중시한다.
🟣원칙
1. 소통한다. -> 알기쉬운 차트, 정보 공유, 회의
2. 협력한다. -> 개발팀 협조, 고객과의 대화로 문제 해결
3. 적응한다. -> 변화 수용, 융통성 발휘
4. 지속한다. -> 검증을 반복, 점증 개발
5. 가치를 전달한다. -> 위험도 높은 작업 우선, 비용 감소
6. 피드백 한다. -> 자주 출시, 고객 평가
🟣5가지 가치
1. 의사소통 2.용기 3.피드백 4. 단순함 5.존경
🟣애자일 모형으로 개발하는 프로그래밍
➀ XP(eXtreme Programming, 익스트림 프로그래밍) - 애자일 모형으로 개발하는 대표적 방법
➁ 스크럼(SCRUM)
- 5가지 가치
1. 확약 2. 전념 3. 정직 4. 존중 5. 용기
- 요소
1. 백로그(Backlog): 프로젝트에 대한 요구사항을 말함
2. 스프린트(Sprint): 30일 단위로 분리해 반복적 수행
3. 스크림 미팅: 5분 정도의 팀 미팅으로 작업의 계획을 수립
4. 스크림 마스터: 팀 리더로 효울적인 개발과 문제 해결을 위해 노력
➂린(Lean)
- 7가지 원칙
- 낭비적인 요소를 제거한다.
- 품질을 내재화한다.
- 지식을 창출한다.
- 가능한 늦게 결정한다.
- 가능한 빠르게 인도한다.
- 사람을 존중한다.
- 전체 공정을 최적화한다.
6)테일러링(Tailoring) 개발 방법론
🟣특징
- 서로 다른 프로젝트를 하나의 일관된 개발 방법론으로 적용하기 어렵기 때문에 등장한 방법론
- 소프트웨어 특성에 맞게 융퉁성 있게 적용하는 방법론
- 표준 프레임워크를 기반으로 길제 업무 분야별로 여건에 맞게 수정 보완하는 방법
- 일반적으로 따르는 절차들과 개발 방법론에서 제시하는 테일러링 안내서들이 존재할 뿐이다
- 테일러링은 커스터마이징의 작업이 반복될 뿐이다
- 가장 중요한 부분은 프로젝트 분석이다
- 테일러링을 위한 개발 프레임워크에는 ISO/IEC 12207, CMMI 모델, SPICE 등이 있다.
🟣필요성
내부 기준
🟣외부 기준
7)보안 개발 방법론
➀ MS-SDL(Microsoft Secure Development Life Cycle)
: MS사가 자체적으로 수립한 SDLC이다.
➁ Seven Touchpoints : 소프트웨어 보안의 모범 사례를 SDLC에 통합한 소프트웨어 개발 보안 생명 주기 방법론이다.
➂ CLASP(Comprehensive Lightweight Application Security Process) : 활동 중심 역할 기반의 프로세스로 구성된 집합체, 이미 운영 중인 시스템에 적용하기에 적합한 방법론, 5가지 관점에 따라 개발 보안 프로세스를 수행할 것을 제안하였다.
➃ CWE(Common Weakness Enumeration) : 소프트웨어의 보안 취약점을 유발하는 원인을 7가지로 정리한 방법론
위에 있는 내용은 왠만하면 거의 다 숙지하는 것이 좋을듯!
내용이 너무 길어져서 다음 편에!
👐🏻