Software Engineering 28

[소프트웨어공학] 제6장 사용자 요구 분석 (요구공학)

1. 단원 정리 요구사항(requirements): 목적 달성을 위해 시스템이 갖추어야 할 조건이나 능력 기능적 요구사항: 사용 시나리오, 데이터 형식 등 비기능적 요구사항: 성능, 보안 등 FURPS+: HP에서 개발한 요구사항 분류 모델 기능적: Functionality 비기능적: Usability, Reliability, Performance, Supportability ➡️ 품질 조건 Plus(+)는 비기능적 요구사항 중 제약 조건을 의미함 요구 공학 프로세스: 시스템 요구사항 명세서(SRS)를 만들기 위한 반복적 프로세스 고객이 작성한 문제 기술서를 바탕으로 SRS를 산출한다. 타당성 조사➡️요구사항 수집/분석(추출)➡️문서화➡️검토➡️관리 절차로 진행된다. 위 절차 중에서 요구사항 수집/분석(..

[소프트웨어공학] 제5장 소프트웨어 테스트

1. 단원 요약 소프트웨어 테스트: 결함을 찾기 위한 목적으로 프로그램을 실행하는 것으로, 품질보증 활동이다. 결함 테스트: 코드를 확인(verify)하여 결함을 찾는 것 검증 테스트: 시스템을 검증(validate)하는 것 SW 테스트 원칙 테스트 케이스 구성 요소: 입력, 예상결과, 실행조건, 절차, 목적 자가 테스트 금지 테스트 후반부에서도 소홀히 하지 말 것 모든 경우를 고려할 것 테스트 케이스를 재사용할 것 오류가 발견된 곳에서 추가 오류가 존재할 가능성이 높다. 테스트 작업 절차 Test Case 설계➡️Test Data 준비➡️Test 실행➡️결과 비교➡️보고서 작성 테스트 작업 우선순위 개별 모듈 테스트 < 전체 시스템 테스트 새 기능 테스트 < 오래된 기능 테스트 예외적 상황 테스트 < ..

[소프트웨어공학] 제4장 소프트웨어 품질 (QA/QC)

1. 단원 요약 SW 품질 생산자 시각: 요구사항 만족, 개발 표준 준수 여부 고객 시각: 사용 목적과 기대에 부합하는지 여부 SW 품질의 분류 관점에 따른 분류: 사용자 관점, 개발자 관점, 프로젝트 관리자 관점 외부/내부 특성 외부 특성: 사용자 관점에서 신뢰성/사용성 등 실행되는 코드의 행위를 측정한다. 내부 특성: 개발자 관점에서 문서/코드에 대한 정적 평가를 수행한다. 제품/프로세스 특성 제품 특성: SW 제품 자체에 대한 품질을 평가한다. 프로세스 특성: SW 프로세스에 대한 품질을 평가한다. (일정, 비용, 위험관리 등) SW 제품 품질 표준: ISO/IEC 9126, 14598, 25000 ISO/IEC 9126: 6가지 품질 특성과 그 부특성들을 정의 기능성: 적합성, 정확성, 상호운영성..

[소프트웨어공학] 제3장 프로젝트 관리

1. 단원 요약 프로젝트 관리 개요 프로젝트 계획, 요구사항 준수 확인, 일정/예산 등의 감독 프로젝트 계획 비용과 일정을 결정 발생 가능한 위험을 분석하고 대안을 모색 브룩스의 법칙: 지체된 프로젝트에 인력을 추가하면 일정이 더욱 지체된다. 소프트웨어 프로젝트 관리의 문제점 실체가 없으므로 문서에 의존 개발 프로세스에 관한 표준이 없음 기술 발전으로 인해 과거 경험 활용이 어려움 SW 일정 계획 작업 분할: 전체 작업을 관리/측정이 용이한 소작업으로 분할, WBS로 표현 작업 명세화: 각 소작업의 산출물, 투입 자원(Person/Month)을 결정 작업 진행순서 정의: 소작업 간 선행 관계 분석, 개발순서 결정(PERT 그래프) 인력 배정: 각 소작업에 적합한 개발자 투입 작업비용 산정: 작업의 양, ..

[소프트웨어공학] 제2장 소프트웨어 프로세스 (SDLC)

1. 단원 요약 소프트웨어 프로세스란 소프트웨어 개발 절차를 말한다. 폭포수 모델(waterfall model): 고전적 SDLC, 선형 순차 모델 타당성 조사 단계 타당서 조사 보고서 사업 개요, 기술/경제적 타당성, 기대 효과, 비용, 인도일 등 요구 분석 및 명세 단계 무엇을 개발할 것인가? 정확·일관·완전한 요구사항명세서(SRS) 작성 설계 및 명세 단계 what ➡️ how 설계 단계의 구분 시스템 아키텍처 설계 인터페이스 설계 프로그램 설계 설계 방법의 구분 전통적인 구조적 분석/설계 객체지향 분석/설계 코딩 및 단위 테스트 단계 설계를 바탕으로 프로그램 작성 테스트 계획, 방법, 수준 결정 코드 인스펙션 수행 통합 및 시스템 테스트 단계 알파 테스트: SW 개발 현장에서 수행 베타 테스트: ..

[Java] 제8장 java.io 패키지와 스트림

1. 단원 요약 스트림은 순서가 있는 일련의 데이터가 이동하는 통로이다. 스트림을 이용하면 데이터나 목적지의 특성에 대해 독립적으로 프로그래밍이 가능하다. 스트림의 끝에는 파일, 주변기기, 소켓, 배열, 프로세스 등이 위치할 수 있다. 스트림을 통해 바이트, 문자, 객체가 이동할 수 있다. java.io에는 바이트 단위, 그리고 2바이트 단위로 처리가 가능한 스트림이 존재한다. Byte 단위 처리 최상위 추상클래스: InputStream, OutputStream 파일 입출력용 서브클래스: FileInputStream, FileOutputStream 2Bytes 단위 처리 최상위 추상클래스: Reader, Writer 파일 입출력용 서브클래스: FileReader, FileWriter 보조 스트림 클래스는..

[Java] 제7장 java.lang 패키지

1. 단원 요약 java.lang 패키지는 프로그래밍에 필수적인 기본 클래스들을 제공한다. 별도로 import 하지 않아도 자동으로 포함된다. 포함되는 클래스들은 다음과 같다. 최상위 클래스 Object 문자열 처리용 String, StringBuffer 프로세스/스레드 제어용 Process, Runtime, Thread, ThreadGroup 수학 계산용 Math, StrictMath 예외처리용 Exception, Throwable, Error 포장 클래스(Wrapper Class) Boolean, Character, Byte, Short, Integer, Long, Float, Double 시스템 접근용 System 패키지/클래스 제어용 Package, Class, ClassLoader Object ..

[Java] 제5장 제네릭과 람다식

1. 단원 요약 다양한 타입이나 객체에 대해 동작하게 만든 클래스를 제네릭 클래스 또는 제네릭이라고 부른다. 제네릭을 정의할 때 다양한 타입 파라미터를 선언하고, 사용할 때 필요한 타입을 지정한다. 컴파일러를 통한 타입 검사가 가능해진다. 명시적 형변환이 불필요해진다. 자료형 매개변수(타입 파라미터)는 클래스 식별자 뒤에 로 표시한다. 타입 파라미터는 필드의 타입이나 반환형으로 사용된다. 타입 매개변수 없이 사용되는 제네릭 타입을 로우(raw)타입이라 한다. Raw 타입 클래스 내부에서 사용되는 모든 타입이 java.lang.Object로 간주되어 실행된다. 람다식(lambda expression)이란 파라미터를 입력받아 결과값을 반환하는 코드이다. 람다식은 메소드와 비슷하나, 이름이 없고, 메소드 내부..

[Java] 제4장 인터페이스와 다형성

1. 단원 요약 abstract 클래스/메소드는 형식만 정의된 클래스/메소드로, 추상 클래스/메소드라고 한다. 추상 클래스만이 추상 메소드를 가질 수 있다. abstract 클래스/메소드는 자식클래스에서 구현되어야 하므로 abstract인 동시에 final일 수 없다. 추상 클래스는 서로 연관된 클래스들이 유사한 메소드 형식을 공유하고자 할 쌔 사용한다. 인터페이스 클래스는 서로 연관이 없는 클래스들이 유사한 기능을 공유하고자 할 경우 사용한다. 인터페이스는 추상클래스와 유사하나, 객체를 생성할 수 없다. 인터페이스 간 상속 관계가 존재할 수 있다. 인터페이스의 접근제어자는 public 또는 생략이다. 인터페이스의 모든 메소드는 abstract이며 public 또는 생략이다. 인터페이스의 메소드에 그 기..

[Java] 제3장 클래스와 상속

1. 단원 요약 클래스를 정의할 때는 [접근제어자] [final/abstract] class 식별자 [extends 부모클래스] [implements 인터페이스] {} 와 같이 한다. 중괄호 내에는 필드와 메소드를 선언한다. 인터페이스를 구현하는 클래스인 경우 인터페이스에 정의된 메소드를 구현해야 한다. 클래스의 접근제어자를 생략하는 경우 동일 패키지 내에 있는 다른 클래스에서 참조가 가능하다. 클래스가 다른 클래스 내에서 정의된 경우 이를 내부 클래스 또는 네스티드 클래스라 하고, 그렇지 않은 클래스를 외부 클래스 또는 톱레벨 클래스라 한다. 톱레벨 클래스는 public 또는 생략된 접근제어자만 가질 수 있다. final 메소드는 오버라이딩이 불가하다. final 클래스는 부모클래스가 될 수 없다. 부..