소공 #1

이용구·2022년 10월 3일

소프트웨어 공학

목록 보기
1/1

소공 ch.0

sw 개발은 서비스이다. (서비스 = 유지 보수)


sw 생산
프로그램은 형식언어로 표현된 지적 노동의 결과물이다.
. 생산성 일정 x
. 논리적인 요소로 구성
. 지속적인 유지 보수 필요


sw 생산 공장이라면
찍어내는 생산이 아니고 구축을 하는 것이다.


sw 특징
. 비가시성
코드 안 보임 > 코드 보이게 만들어

. 복잡성
복잡하다 > 단순하게 만들어라

. 변경성
프로그램 지속적 수정 > 변경이 쉽도록 작성해라

. 복제 가능
코드는 복사가 쉽다 >

.응용에 의존
다른 이의 코드 사용 >


H/W 보다 S/W 개발이 어려운 2유
기술은 당연하게 잘 알아야 하면서 동시에 사람도 잘 알아야 한다.
사람을 이해하는 것이 쉽지 않죠

요약 S/W 개발은 서비스 직군이다.





인문학과 공학의 만남
(사람의 마음을 이해)


하이 기술이 아니라 하이 터치!!

하이 터치가 보이지 않는 기술적 혁신 리드
. 사람을 이해해야(인문학) 탁월한 주제를 발굴

EX) 카카오톡, 배민, 당근마켓 등


시스템적 사고
-시스템은 유기적으로 상호작용하는 요소의 모임

S/W 역시 하나의 시스템이며 여러가지 구성요소가 있다
-S/W 역시 전체 시스템의 하나의 구성요소가 되어야 한다.

EX)오디오 시스템

우리가 무언가 문제를 해결하려 할 때 시스템적 사고를 해야 한다.


중간 정리

- 사람에 대한 분석이 필요

사용자들이 필요한 것/ 필요로 하지 않는 것은 무엇인가?

- S/W 개발은 시스템적 관점에서 접근해야 한다.

시스템적으로 문제를 분석하고 해결 방안을 도출



소프트 웨어 공학이란?

  • S/W 위기 > S/W의 요구와 그 공급 간의 차이가 갈수록 심화
    요구의 증가
    생산성 2배
    인력 공급 10배

S/W 공정의 문제점
. 비용 초과 및 일정 지연
. 개발자의 역랑에 따라 개발의 성패가 좌우
. 품질에 대한 정량적 개념이 없어 신뢰성 부족

  • 소프트웨어 공학의 목적
    공학적 접근 방법으로 원리를 적용하고 체계적으로 개발하여 소프트웨어 위기를 극복

55년도라면
S/W 개발비용 * 2
H/W 개발비용 / 2
로 개발비용 낮추고

95년도 라면
유지 보수 비용
S/W 개발 비용을 낮추면
개발 비용 낮춤


프로그램 작성 시 H/W 최적화? 중요하지 않다
-> 다루기 쉽고 고치기 쉽게!
☆ 속도를 고려? NO 신경 쓸 필요 없다



S/W 개발했는데 사용되지 않는 이유
-> 유지 보수 비용 !
개발비용은 90으로 잡고 유지 보수 0 으로 ㅋ
유지 보수(입력, 출력, 결과 분석)



S/W 예술 X -> 공학 O
S/W 공정의 문제점의 원인 한 번 더
. 비용 초과 및 일정 지연
. 개발자의 역량에 따라 개발의 성패가 좌우
. 품질에 대한 정량적 개념이 없어 신뢰성 부족




SW 공학의 정의

질 좋은 SW를 경제적으로 생산하기 위하여 공학, 과학 및 수학적 원리와 방법을 적용하는 것

☆ 가장 중요한 목표
. 품질
. 생산성

. SW 품질
S/W 대하는 입장에 따라 상대적으로 품질에 대한 관점이 달라진다.


품질의 중요성
.정확성 - 정확한 동작이 가능한지

.신뢰성 - 제대로 작동하는지

.강인성 - Fault Tolerance (장애 허용) -> 안정성
-> 하나의 컴포넌트가 falt가 발생해도 시스템 운영에 문제 생기지 않게
-> 고장이 나도 그것을 받아들이는 것 (문제 발생 x)

.성능 - 수행 속도, 시간 복잡성

.사용 용의성 - 시스템을 친근하게 느낄 수 있는 성질

.재사용성

.적응성




. S/W 생산성
1. 도입
2. 반복
-> 복사, 적용 / 성공 사레 반복

  1. 정의
    -> 커진 프로그램 / 어느 정도 표준을 정하자! -> 관리 프로세스 정의

  2. Managed
    -> 수량화하여 평가하고 관리

  3. Optimizing
    -> 시간이 지나도 완벽 x -> 변화에 따라 적용 / 지속적 피드백 통해 최신 기술 적용

ex) sony가 5단계를 적용 안 해서 ㅋ


☆환경 변화에 밀접하게 변화해야 함 (Agile)


생산성에 영향을 미치는 요소
. 의사소통
. 프로그램 성격
. 프로그래머의 역량
. 관리
. 팀의 프로젝트 경험


.의사소통 스킬
ex) 다윈의 진화론 -> 적자생존 -> 적응하는 자가 살아남는다

발주자와 개발자의 의사소통이 중요하다!

.Mythical man - month (man- month : 작업의 크기)
개발자들 사이의 의사소통 중요성
중도에 투입된 개발자들은 생산성 증진 못함

해결 방안
-> 문서화 (짧고 간결하게) / 표준화 / 가능하면 짧게 의사소통 할 것

☆자주 만나야 한다!

.프로그래머의 역량
s/w 가이드라인, 방법론은 평균 이하의 개발자들에게 생산성을 높인다.

. 프로젝트 관리 기술
-> 변화를 찾아서 적용



정리

. 공학적 접근 방법을 통한 sw 개발의 중요성 -> 생산성, 품질이 목표!

. 의사소통의 중요성 -> 질과 양보다 주기적인 소통이 필요

. sw 공학의 원리와 철학은 모든 분야 적용
. 다양한 업무가 존재!

profile
베짱이는 개미가 밉다

0개의 댓글