Programmer!/Good Program 7

좋은 코드를 만들기 위한 방법

1. 코드 리뷰 가장 기본적이면서도 정확한 방법이라 할수 있다. 내 코드 또는 상대방의 코드를 컴퓨터의 도움 없이 눈으로 읽으며 잘못된 부분을 찾아내는 방법이다. 로직을 한눈에 살펴보기 어렵다면 다음 사항들을 위주로 진행하면 도움이 된다. 오타가 있는가? 적절하지 못한 변수/함수 타입을 사용했는가? 사용하지 않(아도 되)는 코드가 있는가? 함수명이나 변수명이 상황에 맞지 않는가? 코드에 중복된 부분이 존재하는가? 코딩 표준을 준수하였는가? 신기하게도 코드리뷰를 하면 할수록 코드를 읽는 힘이 길러져서 나중에는 눈으로 발견하기 어려운 버그들도 찾아내는 경험을 할 수 있다. 코드 리뷰는 보통 git 에서 Pull Request를 생성하면 리뷰어들이 코드를 리뷰한 뒤 문제가 있는 부분에 커맨트를 달고, 그것을 ..

S/W 계층 구조

1. 품질(Quality) . S/W Engineering의 기본 목표는 품질과 생산성의 확보이다. . S/W 자체의 품질 뿐만 아니라 모든 프로세스의 품질까지 고려해야 한다 . 품질에 대해서 엄격하고 문서화된 형식을 갖추어야만 신뢰성 있는 제품이 생산되며 프로그램 개발시 제품을 쉽게 관리할 수 있다. 2. Process . 프로그램 개발시 사용되는 개발 방법 및 순서를 의미한다. . 프로그램 완성 단계까지 해야 하는 작업의 목록을 정의한다. . 프로그램에 투여되는 모든 자원(Resource) 및 기타 환경에 대해서 정의한다. 3. 방법(Method) . S/W 개발에 사용되는 기술적 방법을 제공한다. . 요구사항, 분석, 설계, 프로그램 구축, 테스팅, 유지 및 보수 등과 관련된다. . 다이어그램을 사..

S/W Process

Software process : 소프트웨어 시스템을 개발하기 위해 요구된 활동들의 집합(요구사항 명세화, 설계, 확인, 진화) 소프트웨어 프로세스 모델은 프로세스의 추상적 표현이다. 1. 폭포수 모델 : 요구사항 정의-시스템/소프트웨어 설계-실행/테스트-통합/시스템 테스트-유지보수 의 단계 소프트웨어 개발 프로세스중 가장 첫번째로 발표된 모델이다. 시스템 공학 프로세스로부터 유도됨. 순차적 프로세스 모델로 위의 단계로 개발이 진행되며 각 개 발이 끝날때마다 과정의 끝을 알리고 산출물이 출력된뒤 다음단계로 진행된다. 프로젝트의 수행 단계의 파악이 용이하지만 실제 프로젝트는 요구사항이 안정적이지 않고 명확한 단계를 구분하기 어려우며 변경을 수용하기도 어렵다. 2. 진화적 개발 : 실험적 개발 - 고객과 함..

Critical System

-시스템의 고장은 비교적 일반적이다. 대부분의 경우 고장은 심각한 손해를 입히지 않지만 어떤 시스템 고장은 중요한 경제적 손실, 물질적 피해, 혹은 사람의 생명에 위험이 될수 있다. 이러한 시스템을 Critical system(중대한 시스템)이라 한다. 1. Safety-critical System : 시스템의 고장으로 인해 부상, 사망 등의 심각한 결과 초래 2. Mission-critical System : 시스템의 고장으로 임무 수행의 활동 실패 3. Business-critical System : 시스템의 고장으로 인해 시스템을 사용하는 사업에 대한 높은 비용지불 Critical systems의 가장 중요한 특징 : Dependability(신뢰성/ 확실성) -> 시스템의 신뢰성과 보안성이 떨어지..

소프트웨어 공학 - 프로젝트 관리

1. 프로젝트 관리 : 소프트웨어 프로젝트를 조직, 계획, 일정관리 하는 것 2. 프로젝트 관리가 중요한 이유 * 수입과 지출에 직결되는 경제 관련 작업: 기술 외적인 부분이 많음 * 관리가 잘된 프로젝트도 실패하는 경우가 있음. 관리가 잘 안된 프로젝트는 실패로 끝날 가능성이 많음. * 관리 작업에 대한 방법을 일부 이론적으로 다룸 : 관리를 실제 배우는 일은 현장감이 중요 3. 소프트웨어 프로젝트의 차이점 * 프로덕트가 만질 수 없고 눈이 보이지 않음 * 프로덕트가 매우 flexible함 * 기계공학, 건축공학 처럼 엔지니어링 기술이 아직 확립되어 있지 않음. * 소프트웨어 엔지니어링 프로세스가 표준화되어 있지 않음 * 대부분의 소프트웨어 프로젝트는 일회성 4. 프로젝트 관리 작업 * 계획서 작성 *..

소프트웨어 공학, 개론.

1. 소프트웨어 : 프로그램+ 프로그램의 개발, 운용, 보수에 필요한 정보 일체 * 소프트웨어 생산 -> 소프트웨어는 프로그램의 동적인 실체 프로그램은 형식 언어로 표현된 지적 노동의 결과물 닳아 없어지는 것이 아니라 소용없어 못쓰게 됨 논리적인 요소로 구성 소프트웨어 산업 * 사회적, 경제적인 소프트웨어 의존도 커짐 2. 소프트웨어 시스템 * 유기적으로 상호 작용하는 개체들의 모임 * 소프트웨어는 컴퓨터를 기반으로 하는 여러 시스템과 관계를 맺고 있음 * 특징 -> 시너지 효과, 역동적으로 발전, 변경, 상층되는 요구와 이해 관계의 절충 * 소프트웨어 자체도 하나의 시스템 3. 정보 시스템(Information System) * 자료의 분류, 저장, 검색에 관점 * 데이터베이스를 대화식으로 접근 * 조..

반응형