1 은 논리곱으로 물질적과는 큰 차이가 있다.
소프트웨어 제품의 생산은 주로 연구개발이고, 생산비용은 주로 연구개발에 있다. R&D 가 완료된 후, 대량의 소프트웨어 제품은 복제를 통해 생산되었다.
3 소프트웨어 제품은 마모되지 않으며 마모와 소비가 없습니다.
생산은 주로 정신노동으로, 아직 수작업 개발에서 완전히 벗어나지 못했다. 대부분의 제품은 "맞춤형" 입니다.
소프트웨어 개발 비용이 갈수록 높아지면서 생산 비용이 상당히 비싸다.
소프트웨어의 기능에 따라-
시스템 소프트웨어: 컴퓨터 하드웨어와 긴밀하게 협력하여 컴퓨터 시스템의 각 부분, 관련 소프트웨어 및 데이터를 조화롭고 효율적으로 작업할 수 있는 소프트웨어입니다. 운영 체제, 데이터베이스 관리 시스템, 장치 드라이버, 통신 처리기 등이 있습니다. 시스템 소프트웨어는 컴퓨터 시스템의 필수적인 부분입니다.
애플리케이션 소프트웨어: 특정 분야에서 개발되고 특정 목적을 위해 서비스되는 소프트웨어 유형입니다. 예를 들어 CAD-CAM 컴퓨터 지원 제조 -CAI 컴퓨터 지원 교육, 전문가 시스템, 패턴 인식, 브레이크 시스템 등이 있습니다.
소프트웨어 지원: 프로그래머가 소프트웨어 제품을 개발하는 데 도움이 되는 도구와 관리자가 개발 프로세스를 제어할 수 있도록 도와주는 도구를 포함하여 사용자가 소프트웨어를 개발하는 데 도움이 되는 도구 소프트웨어입니다.
비례:
1, 한 사람만 있는 마이크로소프트웨어, 반공반독이라도 며칠 만에 완성된다. 쓴 프로그램은 500 줄도 안 된다.
2. 소-한 사람이 반년 만에 완성한 2,000 줄 이내의 절차. 예를 들어 수치 계산 문제나 데이터 처리 문제가 바로 이런 규모의 제목이다. 이 프로그램에는 일반적으로 다른 프로그램과의 인터페이스가 없습니다.
예를 들어 구버군이 최초의 WPS 를 개발했고 빌 게이츠는 혼자 BASIC 을 완성했다.
3. 중형-5,000 ~ 50,000 라인 프로그램은 5 명 미만이 1 년여 만에 완성된다. 이런 화제는 소프트웨어 인력 간, 소프트웨어 인력과 사용자 간의 연계, 조정, 협력 문제를 일으키기 시작했다.
4, 큰 -5 에서 10 까지 2 년여만에 50000 ~ 65438+ 백만 줄의 과정을 완성했습니다. 컴파일러, 소형 시분할 시스템, 애플리케이션 패키지, 실시간 제어 시스템 등이 있습니다. 아마 이런 소프트웨어일 겁니다.
5. 아주 커요-100 명에서 1000 명.
6, 매우 거대하다-2000-5000 명이 참여했다. 예를 들어 마이크로소프트의 windows 2000 프로젝트에는 거의 3000 명의 엔지니어가 포함돼 수백 개의 작은 팀으로 나뉜다.
개발별-소프트웨어 제품 및 소프트웨어 프로젝트
소프트웨어 제품-특정 분야에만 국한되지 않고 사용자가 직접 사용할 수 있는 소프트웨어 시스템입니다. 마이크로소프트의 Windows, Office 등등. 이러한 시스템은 기술 함량이 높기 때문에 개발 시 다양한 사용자 요구를 충족시켜야 합니다.
소프트웨어 프로젝트 (맞춤형 소프트웨어라고도 함) 는 특정 고객 (또는 소수의 고객) 이 의뢰하고 하나 이상의 소프트웨어 개발 기관에서 MIS (관리 정보 시스템), 전자 상거래 시스템 등의 계약을 체결했습니다. 이런 소프트웨어는 분야 지식이 중대하고 공학성이 기술보다 큰 것이 특징이다. 예를 들어, 군사 방공 명령 시스템, 위성 제어 시스템, 이러한 소프트웨어입니다.
이 두 가지 유형의 소프트웨어에 대해 서로 다른 소프트웨어 개발 방법을 사용하여 프로젝트 개발 프로세스를 안내해야 합니다.
현재 소프트웨어 모델 역량 성숙도 모델 (CMM) 은 검증된 소프트웨어 프로젝트 개발 방법입니다. 이 소프트웨어 개발 모델은 전체 소프트웨어 개발 프로세스를 표준화하고 수량화하고 최적화할 수 있을 때까지 정량화하려고 합니다.
마이크로소프트와 같은 소프트웨어 제품의 개발은 이미 많은 성공적인 경험을 쌓았다.
소프트웨어 생산의 발전:
1 프로그래밍 시대: 이 단계의 생산 방식은 개인노동이고, 생산 도구는 기계언어와 조합어이다. (1946- 1956)
2 프로그램 시스템 시대: 이 단계의 생산 방식은 소그룹 협력 생산이고, 생산 도구는 고급 언어이며, 개발 방식은 여전히 개인 기술에 의존하고 있지만 구조화 방법을 제시했다. (1956- 1968)
3 소프트웨어 엔지니어링 시대: 이 단계의 생산 방식은 데이터베이스, 개발 도구, 개발 환경, 네트워크 및 분산 객체 지향 기술을 사용하여 소프트웨어를 개발하는 엔지니어링 생산입니다. (1968 누계)
소프트웨어 위기: 소프트웨어 개발 기술의 진보는 발전의 요구를 충족시킬 수 없다. 소프트웨어 개발에서 직면한 문제는 해결할 수 없고, 문제가 누적되고, 갈등이 날카로워 소프트웨어 위기를 초래한다.
소프트웨어 위기의 성과:
1 의 예산은 종종 돌파되어 완료 시간을 늦추고 미루는 경우가 많다.
개발된 소프트웨어는 사용자의 요구 사항을 충족하지 못합니다.
3 개발 된 소프트웨어는 서비스 용이성이 떨어집니다.
4 개발된 소프트웨어는 안정성이 떨어집니다.
소프트웨어 위기의 원인:
1 소프트웨어의 규모가 점점 커지고 구조가 점점 복잡해지고 있습니다.
2 소프트웨어 개발 관리가 어렵고 복잡합니다.
3 소프트웨어 개발 비용이 증가하고 있습니다.
4 소프트웨어 개발 기술이 낙후되다.
5 생산 방식이 낙후되어 여전히 수작업 방식을 채택하고 있다.
개발 도구가 뒤떨어지고 생산성 향상이 느립니다.
소프트웨어 엔지니어링: 과학 지식과 기술 원리를 사용하여 소프트웨어를 정의, 개발 및 유지 관리하는 분야입니다.
공정과학의 관점으로 원가를 추산하고, 진전을 이루며, 계획과 방안을 제정하다.
관리 과학의 방법과 원리를 이용하여 생산을 관리하다.
수학적 방법으로 소프트웨어 개발의 다양한 모델과 알고리즘을 구축하다.
그런 다음 고품질의 고수익 소프트웨어 목표를 달성하기 위해 기술에서 관리에 이르기까지 많은 노력을 기울여' 소프트웨어 엔지니어링' 이라는 새로운 학과를 형성하고 있다.
여기에는 다음과 같은 주요 컨텐트가 포함됩니다.
1. 소프트웨어 개발 방법: 소프트웨어 엔지니어링 방법은 소프트웨어 구축 기술' 방법' 을 제공합니다. 이 접근 방식은 수요 분석, 설계, 프로그래밍, 테스트 및 유지 관리와 같은 다양한 작업을 다룹니다.
1960 년대 후반까지 소프트웨어 개발 방법이 형성되지 않았으며, 소프트웨어 설계 단계의' 구조 분석 및 설계' 방법, 소프트웨어 테스트 단계의' 블랙박스' 와' 화이트박스' 테스트 기술 등 소프트웨어 개발 단계에 따라 다른 방법이 있었다.
현재 업데이트된 기술인' 객체 지향 프로그래밍 방법' 이 있다. 이 방법에서는 데이터 및 데이터 작업이 "객체" 라는 통일체로 둘러싸여 있으며 객체는 "메시지" 를 통해 서로 연결됩니다.
따라서 소프트웨어가 설명하는 시스템은 객관적인 세계의 시스템과 구조적으로 매우 유사하며 소프트웨어의 수정 가능성과 서비스 용이성과 소프트웨어의 재사용 가능성을 높였기 때문에 여러 해 동안 프로젝트가 추구해 온 목표입니다. 구조화 프로그래밍에서 객체 지향 프로그래밍에 이르기까지 프로그래밍 방법의 또 다른 도약입니다.
2. 소프트웨어 도구: 도구란 일반적으로 소프트웨어 개발에 도움이 되는 모든 소프트웨어의 개발을 말합니다. 소프트웨어 설계의 품질과 생산성을 향상시키기 위해 사람들은 소프트웨어 개발 및 유지 관리를 돕기 위해 많은 소프트웨어를 개발했습니다. 예를 들어, 특정 언어로 응용 프로그램을 개발하려면 "프로그램 편집, 프로그램 컴파일, 연결 프로그램 등" 이 포함됩니다. 또한 소프트웨어 테스트 단계에서 "테스트 데이터 생성기, 디버거, 추적기, 정적 분석 도구 및 오버레이 모니터링 도구" 를 사용합니다. 즉, 시기마다 다른 소프트웨어 개발 도구를 사용해야 한다는 것이다. 현재 소프트웨어 도구는 빠르게 발전하고 있으며, 많은 소프트웨어 분석 및 설계 도구가 소프트웨어 생산 자동화를 목표로 구축되고 있습니다.
3. 소프트웨어 엔지니어링 환경: 소프트웨어 방법 및 도구는 소프트웨어 개발의 두 가지 기둥이며, 둘 다 밀접하게 관련되어 있습니다. 소프트웨어 접근 방식은 소프트웨어 도구의 기반이 되는 명확한 작업 단계와 표준 문서 형식을 제시하며, 소프트웨어 도구의 구현은 소프트웨어 접근 방식의 보급과 발전을 촉진할 것입니다.
환경이라는 단어는 사용자마다 다른 의미를 가지고 있다. 최종 사용자의 경우 환경은 프로그램을 실행하는 데 사용하는 컴퓨터 시스템입니다. 이러한 사용자의 환경에 대한 요구는 주로 신뢰성 있고, 조작이 편리하고, 배우기 쉽다는 것이다. 소프트웨어 개발자에게는 다릅니다. 환경은 그들이 소프트웨어 개발 활동을 하는 무대라고 할 수 있다. (예: Algo-60 또는 DbaseII DbaseIII, 예를 들어 인터페이스는 메뉴로만 다양한 기능을 수행할 수 있습니다. ) 을 참조하십시오
운영 데이터베이스 관리 소프트웨어 환경에는 이제 Sybase, 프로그래밍 가능한 PB 소프트웨어를 지원하는 대규모 데이터베이스 소프트웨어가 포함됩니다.)
4. 소프트웨어 엔지니어링 관리: 한 기업에게 첨단 장비와 기술만 있고 완벽한 관리가 없다면 적절한 경제적 이득을 얻을 수 없다는 것은 잘 알려져 있습니다. (예를 들어, 하이얼의 하이얼 문화는 기업 관리의 상징입니다.) (예를 들어, 마이크로소프트의 기업 문화 취지의 말)
소프트웨어 생산도 마찬가지다. 관리가 잘 되지 않으면 고품질로 제때에 임무를 완수할 수 없다.
"소프트웨어 엔지니어링 관리는 소프트웨어 엔지니어링 수명 주기의 모든 단계를 관리하는 활동입니다. 소프트웨어 엔지니어링 관리의 목적은 예상 시간과 비용으로 소프트웨어 개발 및 유지 관리 작업을 성공적으로 완료하는 것입니다.
소프트웨어 엔지니어링 관리의 내용에는 소프트웨어 원가 관리, 인력 조직, 엔지니어링 계획 관리, 소프트웨어 구성 관리 등이 포함됩니다.
분명히 소프트웨어 엔지니어링 관리도 컴퓨터를 통해 이뤄질 수 있다. 많은 기업들이 비용 추정, 진행 상황 지정, 보고서 생성을 돕기 위해 관리 도구를 사용합니다. 이상적인 소프트웨어 엔지니어링 환경에는 개발 및 관리를 지원하는 도구가 있어야 합니다.
소프트웨어 엔지니어링 방법론, 소프트웨어 엔지니어링 환경, 소프트웨어 엔지니어링 관리의 기본 내용과 기능 등 소프트웨어 엔지니어링의 주요 구성 요소에 대해 간략하게 설명합니다. 그들은 컴퓨터 과학자의 연구 성과뿐만 아니라 소프트웨어 종사자들의 시간 경험도 요약했다. 또한 소프트웨어 개발 기술은 공식 방법과 비공식 방법의 두 가지 분기로 나눌 수 있다는 점도 지적해야 합니다. 전자는 형식화된 프로그램 변경 및 엄격함에 초점을 맞추고 있으며, 프로그래밍 자동화에 중점을 두고 있으며, 컴퓨터 응용 프로그램 사용자가 많이 사용합니다. 이 과정은 주로 엔지니어링 소프트웨어 개발 기술에 대해 논의합니다.
소프트웨어 엔지니어링 목표: 낮은 개발 비용 지불 기능 요구 사항 충족 더 나은 성능을 얻을 수 있습니다. 개발된 소프트웨어는 이식하기 쉽다. 유지 보수 비용이 매우 저렴합니다. 제때에 개발 임무를 완수하고 제때에 인도할 수 있다. 개발된 소프트웨어는 신뢰성이 높다.
소프트웨어 엔지니어링 내용: 연구 내용에는 개발 기술 및 개발 관리의 두 가지 측면이 포함됩니다.
개발 기술의 주요 연구: 소프트웨어 개발 방법, 개발 프로세스, 개발 도구 및 환경 수집가의 정수
개발 관리의 주요 연구: 소프트웨어 관리, 소프트웨어 경제학, 소프트웨어 심리학.
소프트웨어 엔지니어링에서 해결해야 할 문제: 소프트웨어 비용, 신뢰성, 서비스 가능성, 소프트웨어 생산성 및 소프트웨어 재사용