하나의 새로운 시스템을 (간단하던,복잡하던간에) 구상하고 기본 설계를 할 줄 알아야하고 그 과정의 문제점에 대한 어느정도의 도출과 보완사항에 대한 구상을 생각해야 제대로된 엔지니어
모든 기계및 소프트웨어는 설명서(매뉴얼)이 있지만 처음 접할때는 설명서와 매뉴얼이 매우 많은 도움이 됩니다. 그러나 개발자가 예상하지 못했던 예외의 문제는 매뉴얼로 해결할수 없었습
엔지니어는 어떤 시스템(하드웨어적이거나 소프트웨어적이거나)을 설계하 고 제작하는 사람..
프로그래머는 어떤 시스템(OS)에서 작동하는 어플리케이션을 설계/제작하 는 사람..
시스템을 설계
소프트웨어 개발자는 소프트웨어 개발 방법론을 따라야하며 클라이언트의 요구 사항을 충족하기 위해 소프트웨어 프로그램을 디버깅하고 수정하는 데 전문성
코드 작성을 담당하는 소프트웨어 개발자는 창의적이고 기술적 인 기술을 사용하여 혁신적인 아이디어를 수행 할 수 있어야합니다
요구 사항을 소프트웨어 기능과 지속적으로 비교하는 데 필요한 우수한 분석 기술도 보유
사소한 오류나 잘못된 의사 소통으로 인해 중대한 재정 및 운영 문제가 발생할 수 있으므로 소프트웨어 개발자에게는 세부 사항 지향이 필수적
효율성을 높이도록 설계된 프로그램을 수정하고 수정하기 위해 세부 사항에 눈을 사용
소프트웨어 개발자 책임
객과의 요구 사항에 대해 논의
소프트웨어 테스트 및 문제 해결
시스템이 가동되고 실행되면 유지 관리
기술 설계의 일부가 됨
소프트웨어 구성 요소 통합
효율적인 코드 생성
참조 및보고를위한 프로그램 코드 작성
소프트웨어 엔지니어는 전체 프로젝트 라이프 사이클에 참여합
개발자 및 비즈니스 분석가와 협력하여 제안 된 소프트웨어 솔루션에 대한 요구 사항을 논의
발해야 할 항목, 방법 및시기를 식별하기 위해 프로젝트 범위를 지정
작업에 가장 적합한 프로그래밍 언어와 개발 프레임 워크를 선택하고 다양한 플랫폼에서 솔루션을 사용할 수있는 방법을 생각
기술 및 과학 지식을 사용하여 소프트웨어를 연루시키고 가능한 문제를 예측
패턴 설계 및 자동화 시스템에 능숙
소프트웨어 엔지니어 책임
새로운 하드웨어에 적응할 수 있도록 기존 소프트웨어를 수정하여 오류를 수정합니다.
사용자 요구 사항과 소프트웨어 요구 사항을 분석하여 시간 및 비용 제약 내에서 설계를 결정합니다.
시스템 설계 및 유지 관리에 대해 고객과 상호 작용합니다.
프로그래머 및 기술자의 작업 감독
IT 아키텍처, 대규모 데이터 및 클라우드 기반 시스템을 만들고 유지합니다.
혼자서 그리고 소규모 팀 내에서 효율적으로 작업하십시오.
운영 개선을위한 시스템 분석 수행
소프트웨어 엔지니어는 건축가로, 소프트웨어 개발자는 목수로 생각할 수 있습니다.
엔지니어는 엔지니어링 원칙을 사용하여 시스템 전체를 감독하고 개발자는 기능 소프트웨어를 만드는 데 집중합니다
Engineering Excelllence
엔지니어링 우수성은 엔지니어링 기술에 탁월함을 추구하며, 효율적일뿐만 아니라 고객에게 즐거움을 전달하는 데 효과적이며 작업과 완제품에서 자부심과 만족을 얻는 과정에서 효과적입니다.그것은 최종 목표가 아니라 노력이며 엔지니어로서 우리는 매일 깨어나 더 나은 것을 만들고 우리의 기술을 더 잘하게 만듭니다.
엔지니어링 우수성은 엔지니어가 최고의 작업을 수행하는 데 방해가되는 장애물과 우수성을 추구하고 우수성을 위해 노력할 수 있도록 지원하고 장려하기 위해 취할 수있는 조치를 식별하는 것입니다
버그를 잡는 것만으로는 고품질의 제품을 얻을 수없는 이유
Software Engineering Excellence
Developer Velocity를 마스터 한 기업은 개발자의 역량을 강화하고, 중요한 조력자를 예상하고, 투자를 고객 가치에 맞추고, 생산성 장벽을 최소화하는 데 똑같이 집중
A nightly build is a neutral build that takes place automatically. These typically take place when no one is likely to be working in the office so that there are no changes to the source code during the build. The results of the build are inspected by the arriving programmers, who generally place a priority on ensuring the recent changes to the source code have not broken the build process or functionality of the software.
Right : 결과가 올바른가, 기대한 결과를 산출하는지 검증할 수 있어야함. happycase test를 알지못하면, 그 내용을 완전히 이해 못한 것
Boundary condition : 경계조건은 맞는가? conrner case :
경계조건 : 모호하고 일관성 없는 입력 값 (특수문자 가 포함), 잘못된 양식의 데이터, (도메인이 빠진 이메일), 수치적 오버플로 계산, 비거나 빠진 값 ( "" or null ), 이성적인 기댓값을 훨씬 벗어나는 값 ( 나이 150세 ), 당번표 처럼 중복 방지, 정렬이 안된 리스트, 시간 순서가 맞지 않는 경우,
경계조건에서는 correct : Conformance(준수), Ordering (순서), Range (범위), Reference (범위), Existence ( 존재), Cardinality(기수), Time (시간)
Inverse relationship : 역 관계를 검사할 수 있는가 , 즉 곱셈을 나눗셈으로 검증하고, 뺄셈을 덧셈으로 검증하는 방법, 데이터 베이스에 insert 하였다면 select 해보는 방법
Cross-check : 다른 수단을 할용하여 교차 검사, 총 도서 수량 = 대출 수량 + 남은 수량
Error conditions : 오류 조건을 강제로 일어나게 할 수 있는가, 메모리 가득 찰때, 디스크 가득 찰째, 해상도 등
Performance characteristics : 단위 성능 측정 baseline을 만드는 것, 성능 측정은 반복적인 결과 시간 측정