품질 requirementsEdit
어떤 방법을 개발할 수 있고,최종 프로그램을 만족해야 몇 가지 기본적인 속성입니다. 다음 속성은 가장 중요한 것 중 하나입니다.
- 신뢰성:프로그램의 결과가 얼마나 자주 올바른지. 이에 따라 달라집적 개념의 정확성 알고리즘,그리고 최소화 프로그래밍의 실수 등에서 실수 리소스 관리(예를 들어,buffer overflow 및 경쟁 조건)및 논리는 오류를(같은 사단에 의해 제로 오프-바이-한류).,
- 견고성:프로그램이 오류(버그가 아님)로 인한 문제를 얼마나 잘 예상하는지. 이 포함한 상황 등으로 잘못된 부적절하거나 손상되어 데이터를 사용 불가 필요한 리소스 등의 메모리,운영 시스템 서비스,네트워크 연결,사용자가 오류 및 예기치 않은 있습니다.
- 사용성:의 인체공학 프로그램의 용이성이라는 사람이 이용할 수 있는 프로그램에 대한 목적 또는 어떠한 경우에는 예상하지 못하는 목적이다. 이러한 문제는 다른 문제에 관계없이 성공을 만들거나 깨뜨릴 수 있습니다., 이 포함한 다양한 범위의 텍스트,그래픽,그리고 때로는 하드웨어 요소들을 개선하는 선명,직관성,응집력과 완결성 프로그램의 사용자 인터페이스입니다.
- 이동성:범위의 컴퓨터 하드웨어와 운영 체제 플랫폼에서의 소스 코드 프로그램 컴파일할 수 있/해석되고 실행됩니다., 이에 따라 차이에서 프로그래밍 시설에서 제공하는 다른 플랫폼을 포함하여,하드웨어와 운영하는 시스템 자원,예상의 행동 하드웨어와 운영 체제고용의 플랫폼-특정 컴파일러(며 때때로 라이브러리)에 대해 언어의 소스 코드입니다.
- 유지 관리:용이성과 함께 프로그램에 의해 변경될 수 있습의 현재 또는 미래 개발하기 위해서 개선이나 사용자 지정,버그를 수정하고 보안 또는 적용하여 새로운 환경입니다., 초기 개발 중 좋은 관행은 이와 관련하여 차이를 만듭니다. 이 품질은 최종 사용자에게 직접적으로 명백하지 않을 수도 있지만 장기적으로 프로그램의 운명에 큰 영향을 줄 수 있습니다.
- 효율성/성과 측정 시스템 리소스를 프로그램 소비(프로세서간,메모리 공간,같은 장치 디스크,네트워크 대역폭과를 어느 정도 사용자 상호 작용):적은,더 나은입니다. 여기에는 임시 파일 정리 및 메모리 누수 제거와 같이 리소스를 신중하게 관리하는 것도 포함됩니다., 이것은 종종 선택된 프로그래밍 언어의 그림자 아래에서 논의됩니다. 하지만 언어 확실하게 영향을 미치 성능을 더 언어와 같은 Python,프로그램을 실행할 수 있다에서 즉시 인간의 관점입니다. 속도,자원 사용량이 성능에 대한 중요 프로그램에 병목 현상,시스템지만 효율적으로 사용한 프로그래머의 시간은 또한 중요하고 관련된 비용:이상의 하드웨어 비용이 저렴합니다.,
의 가독성을 소스 codeEdit
에서 컴퓨터 프로그래밍,가독성을 말하는 용이성과 함께 인간의 독자가 이해할 수 있는 목적으로,제어 흐름,그리고 작업의 소스 코드입니다. 휴대 성,유용성 및 가장 중요한 유지 보수성을 포함하여 위의 품질 측면에 영향을 미칩니다.
가독성이 중요하기 때문에 프로그래머 지출의 대부분의 시간을 읽고,이해하려고 노력하고 수정하는 기존의 소스 코드를 작성하는 것보다는 새로운 소스 코드입니다. 읽을 수없는 코드는 종종 버그,비효율 및 중복 된 코드로 이어집니다., 한 연구에 따르면 몇 가지 간단한 가독성 변환으로 코드가 짧아지고 이해하는 시간이 크게 단축되었습니다.
일관된 프로그래밍 스타일을 따르는 것은 종종 가독성을 돕습니다. 그러나 가독성은 단순한 프로그래밍 스타일 이상입니다. 많은 요인을 갖는 아무것을 할 수있는 능력의 컴퓨터를 효율적으로 컴파일하고 코드를 실행하여 가독성을 높입니다. 이러한 요인에는 다음이 포함됩니다:
- 다른 스타일을 들여쓰기(공백)
- 분해
- 이름 지정 규칙에 대한 개체(등의 변수,종류,절차,etc.,)
프레젠테이션면(등의 들여쓰기,줄바꿈,컬러 강조 표시,등)자주에 의해 처리된 소스 코드를 편집하지만,콘텐츠 측면을 반영한 프로그래머의 재능과 기술이다.
다양한 시각적 프로그래밍 언어로도 개발되었 목적으로 해결하는 가독성을 우려하여 채택 non-전통적인 접근 방식 코드 구조를 표시합니다. 통합 개발 환경(Ide)은 이러한 모든 도움을 통합하는 것을 목표로합니다. 코드 리팩토링과 같은 기술은 가독성을 향상시킬 수 있습니다.,
알고리즘 complexityEdit
학문 분야와 공학적 관행의 컴퓨터 프로그램은 모두 크게 염려를 발견하고 구현하는 가장 효율적인 알고리즘을 지정된 클래스의 문제입니다. 이 목적을 위해,알고리즘으로 분류된 명령을 사용하여 큰 O 표기를 표현하는 리소스 사용과 같은 실행 시간이나 메모리 소비 측면에서,크기의 입력이 있습니다., 전문 프로그래머에 익숙한 다양한 잘 알고리즘 및 그들의 각각의 복잡성과 이러한 지식을 사용하여 선택하는 알고리즘에 가장 적합한 상황이다.
체스 알고리즘으로 exampleEdit
“프로그래밍을 위한 컴퓨터를 재생”체스었 1950 년대 종이는 평가”minimax”알고리즘의 일부 역사의 알고리즘의 복잡성;코스에는 IBM 의 딥 블루(체스터)는 일부의 컴퓨터 과학 커리큘럼에서 스탠포드 대학교도 있습니다.,
MethodologiesEdit
첫 번째 단계에서 대부분의 공식적인 소프트웨어 개발 프로세스 요구 사항 분석,다음에 의해 테스트를 결정한 값을 모델링,구현,그리고 실패를 제거(디버깅). 이러한 작업 각각에 대해 서로 다른 접근 방식이 많이 존재합니다. 요구 사항 분석에 널리 사용되는 한 가지 방법은 사용 사례 분석입니다. 많은 양식을 사용하여 프로그래머의 민첩한 소프트웨어 개발의 다양한 단계 공식적인 소프트웨어 개발은 함께 통합으로 짧은 주기는 몇 주니다., 소프트웨어 개발 프로세스에는 많은 접근법이 있습니다.
인기있는 모델링 기법에는 Ooad(Object-Oriented Analysis and Design)및 Mda(Model-Driven Architecture)가 포함됩니다. Uml(Unified Modeling Language)은 OOAD 와 MDA 모두에 사용되는 표기법입니다.
데이터베이스 설계에 사용되는 유사한 기술은 엔티티 관계 모델링(ER 모델링)입니다.
구현 기법에는 명령형 언어(객체 지향 또는 절차 적),기능 언어 및 논리 언어가 포함됩니다.,
측정 언어 usageEdit
그것은 매우 어려운 결정은 가장 인기있는 현대적인 프로그래밍 언어입니다., 의 방법을 측정하는 프로그래밍 언어 인기를 포함한다:계산하의 숫자 작업 광고는 언어로 서의 번호가 판매되고 교육 과정은 언어(이 과대의 중요성이 새로운 개 언어),고의 추정 번호의 기존 라인의 코드 작성된 언어(이 과소평가하고 사용자의 수는 비즈니스의 언어와 같은 COBOL).
어떤 언어를 매우 인기있는 특정 종류의 응용 프로그램을 사용하는 동안,몇 가지 언어를 정기적으로 사용되는 많은 다른 종류는 프로그램입니다., 예를 들어,COBOL 은 여전히 강한 기업에서 데이터 센터에서 종종 대형 메인프레임 컴퓨터 프로그램에서는 엔지니어링 어플리케이션에,스크립트 언어에서 웹 개발,그리고 C 에서는 임베디드 소프트웨어입니다. 많은 응용 프로그램은 건설 및 사용에 여러 언어를 혼합하여 사용합니다. 새로운 언어를 일반적으로 설계된 구문의 이전은 언어와 함께 새로운 기능 추가(예를 들어 C++추가 객체-지향하는 C,Java 를 추가 메모리 관리 및 바이트 코드는 C++,하지만 결과적으로 잃고,효율성과 능력에 대한 낮은 수준의 조작).,
DebuggingEdit
첫 번째로 실제는 버그를 일으키는 문제에 컴퓨터가 나방,안에 갇혀 하버드 메인프레임,로그에 기록된 책 항목 dated September9,1947. “버그”는 이미이 버그가 발견되었을 때 소프트웨어 결함에 대한 일반적인 용어였습니다.
디버깅하는 것은 매우 중요한 작업에서 소프트웨어 개발 과정이 있기 때문에 결함을 프로그램에서 있을 수 있는 중요한 결과 그것의 사용자를 위해., 어떤 언어를 더하는 경향이 어떤 종류의 결함이기 때문에 그들의 사양을 요구하지 않 컴파일러를 수행한 많이를 확인하는 기타 언어입니다. 정적 코드 분석 도구를 사용하면 몇 가지 가능한 문제를 감지 할 수 있습니다. 일반적으로 디버깅의 첫 번째 단계는 문제를 재현하려고 시도하는 것입니다. 예를 들어 병렬 프로세스 또는 일부 비정상적인 소프트웨어 버그와 같이 사소한 작업이 될 수 있습니다. 또한 특정 사용자 환경 및 사용 기록으로 인해 문제를 재현하기가 어려울 수 있습니다.,버그를 재현 한 후에는 디버깅하기 쉽도록 프로그램의 입력을 단순화해야 할 수도 있습니다. 예를 들면,버그에서는 컴파일러를 만들 수 있습을 해석할 때 충돌 몇 가지 큰 원본 파일의 단순화 테스트 결과는 경우에 단 몇 줄의 소스 파일 원본에서 수 있는 충분한 재현하는 동일한 충돌이 발생합니다. 시행 착오/분할 및 정복이 필요합니다:프로그래머는 원래 테스트 케이스의 일부를 제거하고 문제가 여전히 존재하는지 확인하려고합니다., 디버깅할 때에 문제 GUI 프로그래머려고 할 수 있습니다 건너뛰 일부 사용자 상호 작용에서 원래의 문제를 설명하고 확인하면 나머지는 작업에 대한 충분한 버그가 나타납니다. 스크립팅 및 브레이크 포인트도이 프로세스의 일부입니다.
디버깅은 종종 Eclipse,Visual Studio,Xcode,Kdevelop,NetBeans 및 Code::Blocks 와 같은 Ide 로 수행됩니다. Gdb 와 같은 독립형 디버거도 사용되며 일반적으로 명령 줄을 사용하여 시각적 환경을 덜 제공하는 경우가 많습니다. Emacs 와 같은 일부 텍스트 편집기를 사용하면 gdb 를 통해 호출하여 시각적 환경을 제공 할 수 있습니다.,피>