Computers/SW Engineering 9

day 5. 소프트웨어 공학의 추세

Software Reuse / 소프트웨어 재사용이미 개발된 소프트웨어의 전체 혹은 일부를 다른 소프트웨어 개발이나 유지보수에서 사용클래스, 객체와 같은 소프트웨어 요소가 재사용성 향상 장점개발 시간 및 비용 단축명세, 설계, 코드 등의 문서 공유실패 위험 감소구축 방법에 대한 정보 공유개발 생산성 향상개발 품질 향상 재사용 도입 문제점재사용할 대상 선정시스템에서 공통적으로 사용되는 요소 파악프로그램의 표준화 부족새로운 개발방법론 도입 어려움재사용을 위한 인력 부족기존 소프트웨어 재사용 도입이 어려움프로그램 언어에 종속적 재사용 방법합성 중심 (=블록 구성 방법)생성 중심 (=패턴 구성 방법) 소프트웨어 재공학 (Software Reengineering)목표 새로운 요구에 맞추기 위해, 기존 시스템을 개선..

day 4. 객체지향 S/W 공학

객체지향 소프트웨어 공학개요현실 세계의 entitiy를 하나의 object로 만들어, 소프트웨어를 작성할 때에도 객체를 조립하듯이 하는 기법구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 제시소프트웨어의 재사용 및 확장성을 높임 --> 고품질의 빠른 개발. 유지보수 용이복잡한 구조를 단계적(계층적)으로 표현. 멀티미디어 데이터 및 병렬 처리 지원 구성 요소객체 (object)데이터 + 데이터를 처리하는 함수 ==> 두 가지를 하나로 모은 모듈데이터 : 객체가 가지고 있는 정보. 속성. 상태. 분류데이터 처리 함수 : 객체가 처리하는 기능. 객체의 상태를 참조하거나 변경. (=메소드.서비스.동작.연산)클래스 (class)공통된 속성과 연산을 갖는 객체의 집합객체들이 갖는 속성과 연산을 정의Ins..

day 3. 전통적 S/W 개발방법 - 구현, 검사, 유지보수

구현= 프로그래밍 단계각 모듈을 원시 코드로 작성 및 문서화사용할 프로그래밍 언어 및 코딩 스타일 등 결정해야함프로그래밍 언어1세대 : 기계어, 어셈블리 등 Low-level language2세대 3세대4세대언어 선정 기준친밀감, 프로그램 구조, 언어의 능력, 프로그램의 길이, 처리의 효율성, 이식성, 개발 실적, 업무 성격, 알고리즘 및 계산 난이도, 소프트웨어 수행환경, 개발담당자의 지식, 컴파일러 이용 가능성 등코딩 스타일코드의 일관성을 유지하고 좋은 코딩을 위해구조적 프로그래밍다익스트라에 의해 제안안기본 제어 구조 : 순차, 선택, 반복분기(goto) 없이 코딩 --> 읽기 쉽고 테스트하기 쉬움.무결한 프로그래밍 규칙 제공규칙제어 흐름을 선형화 (linear)단일 입구 -> 단일 출구goto st..

day 3. 전통적 S/W 개발방법 - 요구사항 분석, 자동화 도구, 설계

전통적(고전적) 소프트웨어 개발방법(= 구조적 소프트웨어 개발방법)과거의 개발 경험을 토대로하여 제안한 것 요구사항 분석특징소프트웨어 개발의 실제 첫 단계개발 대상에 대한 사용자의 요구사항 이해 및 문서화분석 작업 단계문제 인식 : 사용자와 회의, 설문조사, 각종 문서 검토 등을 통해 요구사항 파악평가와 종합 : 요구사항에 대한 정보 평가 및 해결책 종합모델 제작문서화 및 검토 : 요구사항 분석 명세서 작성요구사항 분석의 한계대화 장벽사용자와 개발자 간의 의사소통 어려움솔루션 : 다이어그램, 프로토타입시스템 복잡도소프트웨어 체계화에 따른 새로운 개념 요구시스템 규모와 대상이 광범위해짐에 따른 소프트웨어 복잡화솔루션 : 구조적 분석, 객체지향 분석요구 변경요구 명세화요구사항 분석가의 자질요구사항 분석가 :..

day 2. 프로젝트 관리 - 위험 관리, 형상 관리

위험 관리 (Risk Analysis)프로젝트 추진 관리에서 예상 되는 각종 위험을 미리 예상 및 대책 수립위험의 불확실성 감소 및 손실 대비 위험의 범주프로젝트 위험기술 위험비즈니스 위험 위험의 종류charrette에 의해 제안알려진 위험프로젝트 계획, 기술환경, 정보 등에 의해 발견 될 수 있는 위험예측 가능한 위험제품 크기, 고객 특성, 개발 환경, 기술진의 규모와 경험, 비즈니스 영향 , 프로세스 정의, 구축할 기술예측 불가능한 위험 위험 관리의 절차위험 식별위험 분석 및 평가위험 추산 작업 --> 위험표 (risk table) 작성하여 활용위험 관리 계획예방 및 발생시 대책 준비하여 문서화위험 감시 및 조치위험 회피위험 감시위험 관리 및 비상 대책 수립 소프트웨어 형상 관리형상 관리 (Softw..

day 2. 프로젝트 관리 - 조직 구성, 품질 보증, 신뢰성/가용성

프로젝트 조직 구성 계획프로젝트를 수행하기 위해 참여하는 각 구성웓늘의 역할 할당, 협력 방법 정의프로젝트 단위로 팀 구성하여 수행수행기간, 작업 특성, 팀 구성원 사이의 의사 교류 횟수에 따라 팀 구성 방법이 달라질 수 있음 프로젝트 팀 구성의 종류분산형 팀 구성팀원 모두가 의사 결정 참여, 비이기적 구성 방식 (민주주의)팀 구성원의 참여도와 작업 만족도 높임장기 프로젝트 개발에 적합다양한 교류로 인해 의사 결정 시간 지체, 개개인의 생산성, 책임감 하락 가능성중앙 집중형 팀 구성(= 책임 프로그래머 팀 구성)한 관리자가 의사 결정하고, 팀 구성원들은 그 결정에 따르는 방식비교적 소규모 프로젝트에 적합프로젝트 성공은 책임 프로그래머 능력에 달려있음각 구성원의 역할책임(고급) 프로그래머, 프로그래머, 프..

day 2. 프로젝트 관리 - 일정 관리

프로젝트 일정(Scheduling) 계획특징프로젝트의 프로세스를 이루는 소작업을 파악하고, 예측된 노력을 각 소작업에 분배, 소작업의 순서와 일정을 정하기개발 기간의 지연 방지. 프로젝트가 계획대로 진행되도록 일정 계획프로젝트 일정 계획 도구 : WBS, PERT/CPM, 간트차트 등기본 원칙분할, 상호의존성, 시간 할당, 노력 확인, 책임성, 정의된 산출물/이정표`사람-노력 관계Brooks 법칙 : 프로젝트 진행 중 새로운 인력을 투입하는 경우, 작업 적응 기간과 부작용으로 인해 일정을 더욱 지연시키고 프로젝트의 혼란을 야기한다프로젝트의 크기가 증가할수록 더 많은 인원이 필요함노력 분배예측된 노력을 각 개발 과정에 분배할 때는 40-20-40 규칙 (분석 설계 40, 코딩 20, 테스트 40) WBS ..

day 1. 프로젝트 관리 - 비용 추산

프로젝트 관리 (Project Management)개요주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 활동소프트웨어 개발 계획을 세우고 분석, 설계, 구현 등의 작업을 통제하는 것소프트웨어 생명 주기의 전 과정에서 걸쳐 진행수행할 작업의 범위, 필요 자원, 수행 업무, 이정표, 비용, 추진 일정들을 알아야 함 프로젝트 관리 대상계획 관리품질 관리위험 관리효과적인 프로젝트 관리를 위한 3대 요소 (3P) : People(인적 자원) , Problem(문제 분석 및 인식) , Process(개발에 필요한 작업 계획) 프로젝트 관리 구성 단계"프로젝트 시작 - 프로젝트 계획 수립 - 프로젝트 가동 - 프로젝트 통제 - 프로젝트 종료"프로젝트 계획 수립특징프로젝트 수행 전 개발 영역..

day 0. 소프트웨어공학 개요

시험을 위해 필요한 개념을 위주로 정리해볼까해요.평소에 쓰던 용어랑 조금 헷갈릴 수도 있을 것 같지만, 이 포스팅 내에서 쓰는 용어는 오직 이 과목을 위한 것으로 생각하고...(세뇌) 소프트웨어(software)하드웨어를 동작시켜 사용자가 작업을 편리하게 수행하도록 하는 프로그램 및 자료구조프로그램의 개발, 운용 및 유지보수에 관련된 문서와 정보도 포함됨소프트웨어 특징상품성견고성 : 일부 수정이 소프트웨어 전체에 영향복잡성 : 개발과정이 복잡. 비표준화. 이해와 관리 어려움순응성비가시성비마모성 : 사용에 의해 마모되지 않음 (cf. 오랜기간 사용 시 노후, 품질저하)비제조성 : 논리적 절차에 의한 개발비과학성 소프트웨어 분류by 기능 - 시스템 소프트웨어, 응용 소프트웨어by 사용분야 - 프로그래밍용, ..