Part1. 소프트웨어 설계(1)

송상민·2022년 3월 28일
0

정보처리기사

목록 보기
2/3
post-thumbnail
공부했던 내용을 정리해보고자 한다📖
중요한 것만 공부한거 아니고 중요한 것 정리만..
나만의 언어로 정리하다 보니 되게 축약되어 있을 수 있다.

🟡소프트웨어의 종류 및 개발 방법론

Section01. 소프트웨어 분류 및 특성

상용 소프트웨어의 분류⭐️

상용 소프트웨어

  • 산업 범용 소프트웨어 -
    시스템 소프트웨어, 미들웨어, 응용 소프트웨어
  • 산업 특화 소프트웨어 -
    자동차, 항공, 패션 의류, 조선, 건설, 농업, 의료, 국방 등

↪ 산업 범용 소프트웨어

  • 시스템 소프트웨어: 운영체제, 데이터관리, 스토리지 소프트웨어, 소프트웨어 공학 도구, 가상화 소프트웨어, 시스템 보안
  • 미들웨어: 분산 소프트웨어, IT 자원 관리, 서비스 플랫폼, 네트워크 보안
  • 응용 소프트웨어: 영상 처리, CG/VR, 콘텐츠 배포, 자연언어 처리, 음성 처리, 기업용 소프트웨어
각각 뭐가 포함되는지 알면 좋을듯 하다.

시스템의 기본 요소⭐️

  • 입력(Input) - 처리 방법, 제오 조건, 처리할 데이터를 시스템에 투입하는 요소이다.

  • 출력(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 표

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에서 지원받아 처리

  • 정적 데이터는 이미지나 자바스크립트 코드, 동적 데이터는 데이터베이스와 접속, 외부 시스템 연동.

종류

  • GlassFish: GlassFish Community에서 제공, NetBeans 개발 툴과 연동하여 사용한다

  • 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가지로 정리한 방법론

위에 있는 내용은 왠만하면 거의 다 숙지하는 것이 좋을듯!

내용이 너무 길어져서 다음 편에!

👐🏻

profile
실력있는 Flutter 개발자가 되어보자

0개의 댓글