StudyRepository
article thumbnail
Published 2023. 4. 5. 15:12
1. 소프트웨어란? 소프트웨어공학
728x90

 

 

 

 

1. 소프트웨어의 정의

 

 

소프트웨어랑 입력된 자료를 처리하여 결과를 출력하는 프로그램과 프로그램의 개발, 운용, 보수에 필요한 자료 일체를 말합니다.

 

 

 

 

 

 

2. 소프트웨어의 유형

 

 

2.1 공급 방식에 따른 유형 

 

1) 주문형 소프트웨어

 

주문형 소프트에어는 특정 고객의 수요를 만족시키기 위해 개발된 소프트웨어이다.

따라서 다른 사용자나 기관에는 쓸모가 없거나 잘 맞지 않는다.

계약에 의해 개발된 주문형 소프트웨어에는 사용자가 한정되고 개발의 성패가 사용자의 결정과 필요에 절대적으로 좌우된다.

 

 

2) 패키지형 소프트웨어 

 

패키지형 소프트웨어는 공개된 시장에 내놓고 판매하기 위한 것으로 범용 컴퓨터에서 실행되어 기능을 수행하기 때문에 범용 소프트웨어라고도 한다.

 

패키지형 소프트웨어는 주문형 소프트웨어보다 훨씬 저렴하고 신뢰도가 높기 때문에 비즈니스 분야에서 주로 사용하지만, 특정 기관의 요구에 꼭 맞지 않을 수도 있다는 단점도 존재한다.

 

 

3) 임베디드 소프트웨어

 

임베디드 소프트웨어는 시장에서 판매되는 하드웨어장치에 탑재되어 실행되는 소프트웨어를 말한다.

 

 

2.2 자료 처리 방식에 따른 유형

 

1) 리얼타임 소프트웨어

 

리얼타임 소프트웨어는 임베디드 시스템이나 산업용 플랜트, 통신 네트워크와 같이 특수 목적의 하드웨어에 장착된다.

 

리얼타임 소프트웨어는 외부로부터의 반응, 즉 사용자가 버튼을 누르거나 센서로부터 신로가 발생했을 때 신속히 반응합니다. 따라서 대부분의 설계 노력이 반응시간을 보장하는 데 소모된다.

 

 

2) 자료처리 소프트웨어

 

비즈니스 경영에 사용되는 자료 처리 소프트웨어는 판매 기록, 회계 관리, 영수증 발행 등의 기능을 수행한다.

 

 

 

 

공학적인 입장에서의 소프트웨어어 공학의 목적

 

품질 좋은 소프트웨어를 최소의 비용으로 계획된 일정에 맞추어 개발한다.

 

품질과 생산성이라는 두 가지 목표를 위해 소프트웨어 공학 분야에서 다루는 주제는

 

 

1.방법 (method)

 

2. 도구 (tool)

 

3. 프로세스 (process

 

4. 패러다임

 

으로 나눌 수 있다.

 

 

 

 

 

 

 

3. 소프트웨어 품질

 

 

3.1 소프트웨어 품질을 바라보는 관점

 

1. 고객

업무에 관련된 문제를 지불 가능한 비용과 사용 가능한 자원으로 해결함

 

 

 

2. 사용자

사용하기 쉬움, 효율적임, 업무 기능이 향상됨

 

 

 

3. 개발자

설계가 쉬움, 유지보수 작업이 용이함, 재사용이 용이함

 

 

 

4. 개발 관리자

매출 신장, 개발 및 유지보수 작업

비용을 줄여 소비자를 행복하게 함.

 

 

 

 

 

3.2 소프트웨어 품질의 특성

 

• 사용용이성(usability)
– 빨리 배우고 작업을 쉽게 하는 성질

 


• 효율성(efficiency)
– CPU 시간과 메모리 같은 자원을 낭비하지 않음

 


• 신뢰성(reliability)
– 요구한 기능을 실패 없이 할 수 있는 성질

 


• 유지보수성(maintainability)
– 쉽게 변경할 수 있음

 


• 재사용성(reusability)

– 부품이 다른 프로젝트에서 사용될 수 있는 성질.

 

 

 

 

 

• 서로 다른 품질 속성이 상충될 수 있음
– 효율성을 증진시키면 유지보수성이나 재사용성은 감소될 수 있음

– 사용용이성을 높이면 효율성이 낮아질 수 있음

 

 


• 품질의 목표를 설정하는 것이 중요한 작업
– 목표 설정 후 이에 맞는 설계
– 메모리를 낭비하는 과다한 엔지니어링을 피함

 

 


• 때때로 최적화가 필요
– 한정된 예산으로 최대의 신뢰도를 얻음

 

 

내부 품질 요소


• 내부 품질 요소는
– 설계의 특징을 좌우
– 외부 품질 특성에 영향을 줌


– 예:
• 원시코드에 있는 주석의 분량
• 원시코드의 복잡성

 

 

 

단기, 장기 품질

 


• 단기적 품질


– 고객의 당장의 요구를 만족하고 있는가?
– 현재 처리할 자료의 분량을 효율적으로 소화할 수 있는가?


• 장기적 품질
– 유지보수성
– 고객의 미래 요구

 

 

 

 

 

 

 

4. 소프트웨어 프로젝트의 유형

 

 

 

 

4.1 새로운 시스템 개발

 

- 창조력 발휘, 설계에 자유로움

- 작업에 많은 시간이 소요됨

- 소프트웨어 구조가 중요함

 

완성된 소프트웨어가 사용될 분야의 지식: 도메인 지식

 

 

 

4.2 진화 유형

-기존 시스템에 대한 깊은 이해가 필요함

-새로 추가하는 기능과 조화되어야 함

 

 

초기 시스템의 설계에 반영한 의견이나 소프트웨어 구조 유형이 사라지는 시스템: 레거시 시스템

 

 

4.3 컴포넌트 기반

 

-프레임워크나 컴포넌트를 기초로 시작함

-조립과 커스터마이징이 주된 작업

 

소프트웨어와 컴포넌트를 연결하기 위해 작성한 프로그램: 글루

 

 

 

 

 

 

 

 

 

 

5. 소프트웨어 프로젝트 작업

 

 

• 요구분석과 명세화

 

– 도메인 분석


– 문제의 정의


– 요구 추출

• 가능하면 많은 소스에서 입력을 취함

 

– 요구 분석

• 정보를 잘 정리하고 구성


– 요구 명세화

• 소프트웨어가 어떻게 작동하는지에 대한 자세한명령을 작성

 

 

• 설계


– 요구가 가용 기술로 어떻게 구현되어야 하는지를 기술


– 중요 기술
• 시스템 엔지니어링: 어떤 부분이 하드웨어, 소프트웨어가 되어야 하는지 결정
• 소프트웨어 구조: 시스템을 서브시스템으로 분할하고 서브시스템이 어떻게 작동하는지 결정
• 서브시스템의 내부에 대한 상세 설계
• 사용자 인터페이스 설계
• 데이터베이스 설계

 

 

• 모델링
– 도메인이나 소프트웨어의 표현을 만들어 나가는 과정
• 사용사례 모델링
• 정적 모델링
• 동적 모델링


• 프로그래밍


• 품질 보증
– 리뷰, 인스펙션
– 테스트


• 설치


• 프로젝트 관리

 

 

 

 

 

 

 

 

 

 

6 객체지향 소프트웨어 공학


• 객체 사이의 상호 작용을 중시


• 객체지향 모델링과 설계 언어
– 유즈케이스 모델링
– UML(Unified Modeling Language)


• 객체지향 개발 프로세스
– 반복, 점증적
– 잦은 변경과 빠른 기술 발전


• 객체지향 방법론
– 각 단계 작업 방법

 

 

 

 

 

 

 

 

 

07 소프트웨어 공학의 핵심기술


• 추상(abstraction)
• 분석과 설계 방법
• 사용자 인터페이스 프로토타이핑
• 소프트웨어 구조
• 소프트웨어 프로세스
• 재사용
• 측정(measurement)
• 도구와 통합 환경

 

 

 

 

 

 

 

 

추상화

 

▪모델(model): 해결해야 하는 문제에 대한 일반적인 생각


▪강아지 모델: 일반적인 강아지를 나타낸다.\

 

 

 

 

 

 

 

추상화를 통해 얻을 수 있는 이점


1.문제가 무엇인지 명확하게 할 수 있다.
2.문제를 해결하는 일반적인 아이디어를 얻을 수 있다.
3.이 과정은 불필요한 모든 세부사항을 제거한다.
4.문제에 대한 개념을 형성하게 한다

 

 

 추상화를 통한 문제 해결


• 추상화하지 않으면 해결하려고 하는 문제에 대하여 잘못된 해결책을 만들 수 있음


• 추상화 과정은 더 명확한 모델을 형성하는 데 도움


• 찌개 모델은 김치찌개나 된장찌개처럼 구체적인 찌개가 아니라, 모든 찌개를 나타냄


• 어떤 문제에 대한 모델을 가지게 되면 일반적인 문제를 해결하는 알고리즘을 설계할 수 있음

728x90

'소프트웨어공학' 카테고리의 다른 글

11. 프로젝트 관리  (0) 2023.04.11
4. 클래스 모델링  (0) 2023.04.07
3. 요구분석  (0) 2023.04.06
2. 객체지향 개념  (0) 2023.04.05
profile

StudyRepository

@Minseo26262

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!