*소프트웨어 공학

: 사용자가 있는 실용적인 소프트웨어, 즉 이를 통하여 비즈니스 업무나 제조 활동 등에서

발생하는 문제를 해결해 주는 프로그램을 다룸.

즉 소프트웨어에 있는 직접 똔느 간접적인 손해가 따를 수 있는 심각한 문제를 해결하기 위한 것.

 

*소프트웨어 제품

: 고객의 문제를 해결하기 위하여 구축하며 비즈니스를 운영하기 위하여 사용.

소프트웨어 구축에서 중요한 점은 정확히 작동하는 것.

→소프트웨어 시스템은 높은 품질이 요구됨.

 

소프트웨어 공학이 다루는 문제는 제품으로 만든 알찬 소프트웨어(industrial strength)임.

 

1.2.1 고비용

 

1. LOC(Lines of Code)

 : 소프트웨어의 규모를 측정하는 데 사용.(가장 보편적)

 

2. MM(Man-Month)

 : 소프트웨어 개발에 드는 비용을 나타내는 데 사용.

   주된 비용은 인건비.

 

   생산성은 MM당 생산하는 프로그램의 LOC로 측정.

   (새로 프로그램을 작성하기 위한 생산성은 일반적으로 MM당 300~1000LOC)

 

1.2.2 개발 지연과 낮은 신뢰도

 

- 600여 회사를 조사하였더니 35% 이상이 계획에서 벗어난 컴퓨터 관련 개발 프로젝트였음.

  (계획에서 벗어났다함은 일정이 조금 지연되거나 예산이 초과된 것이 아니라 관리할 수 없을 정도가

  되어버린 프로젝트를 의미)

-방위 산업 보고에 의하면 장비 고장의 70% 이상이 소프트웨어에 의한 것이라고 함.

 

→ 결국 엔지니어링 원리를 적용하는 시스템 제작에서 소프트웨어가 가장 취약한 부분이라는 것을 발견하게 됨.

 

-소프트웨어 고장은 다른 요소(기계, 전기시스템 등)의 고장과는 다름.

 : 다른 엔지니어링 원리를 적용하는 제품의 고장은 노후화 되면서 진행되는 물리적 또는 기계적

   특성의 변화 때문.

   소프트웨어 제품은 세월이 흐르면서 마모되는 것이 없음. 즉 소프트웨어에서는 설계와 개발 과정에

   유입된 오류에 의해서만 고장이 발생.(소프트웨어 시스템은 일정 기간 올바로 작동되다가 고장을

   일으킬 수도 있지만 고장의 원인인 버그는 처음부터 있던 것)

 

1.2.3 유지보수와 재작업

 

1. 유지보수

-소프트웨어가 배포, 설치된 후에는 유지보수 단계로 들어감.(시스템에 남아 있는 오류가 있기 때문에 유지보수)

-버그가 없더라도 소프트웨어는 자주 변경됨.(업그레이드, 환경의 변화로 인해)

 

-유지보수 비용은 소프트웨어 개발 비용을 초과함.

 

-유지보수 작업은 현재 소프트웨어를 기반으로 함.

 → 현재 소프트웨어를 이해하는 과정 필요.(여기에 상당한 노력과 비용이 듦)

 

2. 재작업

- 소프트웨어 개발에서 가장 큰 문제 중 하나는 의도했던 바가 잘 이해되지 않는다는 점.

  : 처음엔 요구가 잘 정의되었다고 생각했는데 개발이 진행되면서 시스템에 대한 이해도 깊어지고

    새로운 요구가 자꾸 추가됨. 그로 인해 계속 변경을 요구하게 되고 변경 때문에 재작업을 하게 됨.

- 개발 비용 중 30~40%가 변경으로 인한 재작업.

-변경과 재작업이 소프트웨어 위기에 대한 주요 원인.

 

 

 

[출처]소프트웨어공학론(최은만 저, 정익사)

1.시스템

: 필요한 기능을 실현시키기 위하여 관련 요소를 어떤 법칙에 따라 조합한 집합체.

 

-소프트웨어도 독립적으로 존재하는 것이 아니라 컴퓨터를 기반으로 하는 여러 시스템과 관계를 맺고 있음.

-각 서브시스템은 다른 서브시스템으로부터의 자극에 대하여 영향을 받고 반응함으로써 상호작용하고 이들이 통합되어 하나의 거대한 시스템이 형성되어 있는 것

-소프트웨어 그 자체도 상호 동작하는 서브시스템드로 구성된 하나의 시스템

 

2.시스템의 성질

ⓐ서브시스템

  : 시스템은 관련 깊은 서브시스템들로 구성.

    ex) 교통시스템은 신호기, 신호체계, 도로망 등 여러가지 요소가 있고 이들 요소들은 원활한 교통 소통과

    제어를 위하여 밀접하게 연관.

ⓑ기능적 분할

  : 시스템은 규모가 작은 부속 시스템(서브시스템)들로 나눌 수 있음.

ⓒ시스템 경계

  : 시스템은 어떤 것이건 시스템과 주변 환경을 구분할 수 있는 경계가 있음.

     이곳이 입력과 출력이 만나는 곳.

ⓓ자동화 경계

  : 시스템이 자동화된 부분과 수동 작업 부분을 나누는 경계.

 

3.소프트웨어 엔지니어가 파악해야 할 사항

  : 소프트웨어 엔지니어는 개발하려는 소프트웨어에 대하여 시스템적으로 사고하여야 함.

 

-대상을 시스템으로 파악할 수 있어야

-서브시스템을 찾아낼 수 있어야

-시스템의 특성과 기능을 찾아낼 수 있어야

-시스템의 경계가 어디인지 찾아낼 수 있어야

-시스템에 대한 입력과 출력을 찾아낼 수 있어야

-서브시스템 사이의 관계를 찾아낼 수 있어야

 

 

 

[출처]소프트웨어공학론(최은만 저, 정익사)

1. RDBMS의 클라이언트/서버

: 많은 RDBMS가 클라이언트/서버 모델을 채택.

복수의 클라이언트가 보내오는 요청에 응답할 수 있도록 클라이언트/서버 모델로 동작.

 

클라이언트는 서버에 접속 요청이나 SQL명령 실행 요청을 보낼 수 있음.

서버는 이를 처리하고 클라이언트에 그 결과를 반환함.

일반적인 RDBMS는 네트워크 상에 하나의 서버를 두고 독점해 사용.

 

클라이언트/ 서버 모델은 시스템의 하드웨어 구성을 유연하게 변경할 수 있도록 해줌.

 

- 웹 시스템에는 없었던 '사용자 인증'이 필요.(사용자 별로 DB접근 제한 가능)

*웹 시스템: 브라우저와 웹 서보로 구성되는 클라이언트/서버 모델의 시스템.

 

 

2. 웹 애플리케이션의 구조

: 웹 애플리케이션은 일반적으로 웹 서버와 데이터베이스 서버의 조합으로 구축.

웹 서버에서 동적으로 HTML을 생성하려면 제어용 프로그램이 필요.

웹 서버에는 'CGI'라는 동적 콘텐츠르 위한 확장 방식이 있음.

이 CGI를 이용하여 프로그램과 웹 서버 간을 연동,통신하여 처리.

 

실제로 DB에 접속하는 것은 PHP나 루비 등의 프로그래밍 언어로 만들어진 CGI 프로그램.

(웹 서버의 CGI프로그램이 DB의 클라이언트)

 

*CGI: Common Gateway Interface

 게이트웨이의 개발언어로는 펄, 비주얼 베이직,PHP 등이 있음.

 

3. MySQL 서버와 mysql 클라이언트

: MySQL 서비스가 DB 서버가 되고, mysql 커맨드가 클라이언트가 됨.

PC 한 대로 클라이언트와 서버 모두 실행할 수 있지만 네트워크 기능 필요(루프 백 접속).

*루프 백 접속

: 클라이언트에서 서버에 접속할 때 네트워크를 경유해서 PC의 서버로 되돌아오는 형태로 접속.

'Software Engineering > 데이터베이스' 카테고리의 다른 글

조건 지정하여 데이터 검색  (0) 2019.03.16
DESC 명령  (0) 2019.03.14
'SELECT * FROM 테이블명' 실행  (0) 2019.03.12
데이터베이스의 개념과 종류  (0) 2019.03.10
mysql 클라이언트 사용법  (0) 2019.03.07

1.데이터베이스(DB)란

: 데이터의 집합.

넓은 의미에서는 컴퓨터 안에 기록된 모든 것.

일반적으로 특정 데이터를 확인하고 싶으 때 간단하게 찾아낼 수 있도록 정리된 형태를 가리킴.

데이터베이스의 데이터는 하드디스크나 플래시메모리(SSD) 등 비후발성 저장장치에 저장.

 

2.데이터베이스 관리 시스템(Database Management System, DBMS)

: 데이터베이스를 효율적으로 관리하는 소프트웨어

생산성 향상,기능성 확보,신뢰성 확보를 위해 사용.

 

3.SQL

: 데이터베이스 조작 언어.

관계형 데이터베이스 관리 시스템(RDBMS)을 조작할 때 사용.

 

-SQL명령의 종류

①DML(Data Manipulation Language)

: DB에 데이터를 추가, 삭제, 내용 갱신 등 데이터를 조작할 때 사용.

SQL의 가장 기본이 되는 명령 set.

 

②DDL(Data Definition Language)

:데이터를 정의하는 명령어.

DB는 데이터베이스 객체(object)라는 데이터 그릇을 이용하여 데이터를 관리하는데,

이 객체를 만들거나 삭제하는 명령어.

 

③DCL(Data Control Language)

: 데이터를 제어하는 명령어.

트랜잭션을 제어하는 명령과 데이터 접근권한을 제어하는 명령이 포함되어 있음.

 

4. DB 종류

- 계층형

: 폴더아 파일 등의 계층 구조로 데이터를 저장하는 방식의 DB.

ex) 하드디스크, DVD파일시스템

 

-관계형

: 행과 열을 가지는 표 형식 데이터(2차원 데이터)를 저장하는 형태의 DB.

엑셀시트와 유사하게 행과 열을 가짐.

각각의 표에 이름을 붙여 관리함.

SQL 명령어로 데이터 조작.

 

-객체지향

: 가능하면 객체 그대로를 DB의 데이터로 저장하는 것.

 

*객체지향언어: 객체(Object)를 중심으로 프로그래밍하는 언어.

 

-XML

: XML형식으로 기록된 데이터를 저장하는 DB.

SQL명령 사용불가. XQuery 사용.

 

*XML: 자료형식을 가리키는 용어. 태그를 이용해 마크업 문서를 작성할 수 있게 정의한 것.

<data>데이터</data>형식으로 표현. HTML과 흡사.

 

-키-밸류 스토어(KVS)

: key와 그에 대응하는 값(value)이라는 단순한 형태의 데이터를 저장하는 DB.

NoSQL(Not only SQL). 열 지향 DB.

 

 

'Software Engineering > 데이터베이스' 카테고리의 다른 글

조건 지정하여 데이터 검색  (0) 2019.03.16
DESC 명령  (0) 2019.03.14
'SELECT * FROM 테이블명' 실행  (0) 2019.03.12
RDBMS의 클라이언트/서버  (0) 2019.03.10
mysql 클라이언트 사용법  (0) 2019.03.07

mysql 클라이언트 사용법

 

1. 명령 프롬프트 열기

 

- 'window키 + R - cmd검색' 하거나 '시작-명령프롬프트 혹은 cmd 검색'

 

                        

 

2. mysql 명령 실행하기

 

- 'mysql -uroot -p' 입력

(mysql -u [사용자명] -p[비밀번호])

 

 

 

 

- 자신의 패스워드 입력

 

 

 

3. DB 목록 확인하기

- 'show databases;'입력

 

4. DB 선택하기

- 3.을 입력해서 나온 DB목록 중 명령을 실행할 DB의 이름을 확인한 후

 use명령어를 사용하여 DB 선택

ex) DB의 이름이 star라면, 'use star'입력

(mysql -u[사용자명] -p[비밀번호] [데이터베이스명])

 

5. mysql 클라이언트 종료하기

 

- 'exit;'입력

 

'Software Engineering > 데이터베이스' 카테고리의 다른 글

조건 지정하여 데이터 검색  (0) 2019.03.16
DESC 명령  (0) 2019.03.14
'SELECT * FROM 테이블명' 실행  (0) 2019.03.12
RDBMS의 클라이언트/서버  (0) 2019.03.10
데이터베이스의 개념과 종류  (0) 2019.03.10

1.1 소프트웨어(Software)

 

소프트웨어란?

: 프로그램과 프로그램의 개발, 운용, 보수에 필요한 관련 정보 일체를 말함.

소프트웨어 프로그램 이외의 문서와 정보도 소프트웨어 생산 작업의 결과이기 때문에

소프트웨어에 포함.

 

프로그램 vs 소프트웨어

: 프로그램은 프로그램 언어로 작성된 코드, 즉 정적인 표현을 의미하지만

소프트웨어는 프로그램이 컴퓨터를 가동시킨다는 동적인 의미를 포함.

 

소프트웨어의 특성

-invisibility(비가시성)

-complexity(복잡성)

-conformity(변형 가능)

 

 

 

1.1.1 소프트웨어의 유형

 

-주문형 소프트웨어

: 특정 고객의 수요를 만족하기 위해 개발된 소프트웨어.

 

다른 사용자나 기관에게는 쓸모없거나 잘 맞지 않음.

사용할 기관 내에서 만드는 경우가 많고 외부에 발주하여 개발을 의뢰하기도 함.

ex) 웹사이트, 항공기-교통제어 시스템, 대기업의 재정관리 시스템.

 

-패키지형 소프트웨어

:공개된 시장에 내놓고 판매하기 위한 것으로 범용 컴퓨터에서 실행되어 기능을 수행.(범용 소프트웨어)

 

소프트웨어에 대한 요구는 전적으로 시장의 요구에 의해 결정.

비즈니스 분야에서는 주문형 소프트웨어보다 패키지형 소프트웨어를 사용.(훨씬 저렴하고 신뢰도가 높아서)

(단점)특정 기관의 요구에 꼭 맞지 않을수도.

COTS(Commercial Off-The-Shelf) 소프트웨어라고도 불림.(판매하기 위해 진열된 판매대에서 뽑혀나감)

ex)워드프로세서, 스프레드시트, 컴파일러, 웹브라우저, 운영체제

 

-임베디드 소프트웨어

: 시장에서 판매되는 하드웨어 장치(세탁기, 자동차 등)에서 수행되는 소프트웨어.

 

범용 소프트웨어와는 달리 하드웨어를 교체하지 않는 한 소프트웨어를 업그레이드하기 어려움.

하드웨어 장치가 범용으로 판매된다는 점에서 임베디드 소프트웨어도 범용 패키지 소프트웨어와 유사하지만

개발방법과 프로세스가 달라 별도의 분야로 취급.

대량의 소비자와 상품을 추구해 나가므로 소프트웨어 카피의 수량이 대단히 많음.

 

*소프트웨어 카피 수량: 임베디드 > 패키지 > 주문형

(주문형이 카피 수는 가장 적지만 시스템이 다양하고 개발에 종사하는 인력이 많음)

 

범용 소프트웨어를 구입하여 커스텀화하는 방법도 있음.(비용이 적게 들지만, 범용 소프트웨어의 새 버전이

출시되면 계속 커스텀화 작업을 반복해야 하는 위험)

 

*요구되는 하드웨어 성능: 패키지 > 임베디드 > 주문형

*개발 인력: 주문형 > 패키지 > 임베디드

 

-소프트웨어가 동작되는 하드웨어 환경에 따라

: 대형, 병렬처리, PC 또는 워크스테이션, 모바일 소프트웨어

 

-운영체제 환경에 따라

: 단일 사용자, 다수 사용자, 원도우 및 인터넷 환경 소프트웨어

 

-소프트웨어가 쓰이는 분야에 따라(가장 보편적인 방법)

: 행정, 금융, 국방, 의료, 항공, ...

 

-리얼타임 소프트웨어와 자료처리 소프트웨어

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

장착되어 실행.

외부로부터의 반응, 즉 사용자가 버튼을 누르거나 센서로부터 신호가 발생되었을 때 신속히 반응.

따라서 대부분의 설계 노력은 반응시간을 보장하려는 데 소모.

 

 

 

 

 

 

[출처]소프트웨어공학론(최은만 저, 정익사)

+ Recent posts