소프트웨어공학



Similar documents
Software Engineering

Microsoft PowerPoint 구현.ppt

Microsoft PowerPoint 구현.pptx

K&R2 Reference Manual 번역본

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

13주-14주proc.PDF

Microsoft PowerPoint - PL_03-04.pptx

PowerPoint 프레젠테이션

03장.스택.key

PowerPoint 프레젠테이션

1

untitled

chap01_time_complexity.key

untitled

강의10

01-OOPConcepts(2).PDF


歯 동아일보(2-1).PDF

02 C h a p t e r Java

C++-¿Ïº®Çؼ³10Àå

歯9장.PDF

, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float

歯처리.PDF

<32B1B3BDC32E687770>

C프로-3장c03逞풚

09-interface.key


07 자바의 다양한 클래스.key

Chapter 4. LISTS

untitled

6주차.key

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

< B5BFBEC6BDC3BEC6BBE E687770>

2월 강습회원의 수영장 이용기간은 매월 1일부터 말일까지로 한다.다만,월 자유수영회 원,자유수영 후 강습회원은 접수일 다음달 전일에 유효기간이 종료된다.<개정 , > 제10조(회원증 재발급)1회원증을 교부받은 자가 분실,망실,훼손 및

10주차.key

11강-힙정렬.ppt

본 강의에 들어가기 전

> 1. 법 제34조제1항제3호에 따른 노인전문병원 2. 국민건강보험법 제40조제1항의 규정에 의한 요양기관(약국을 제외한다) 3. 삭제< > 4. 의료급여법 제2조제2호의 규정에 의한 의료급여기관 제9조 (건강진단) 영 제20조제1항의 규

노인복지법 시행규칙

Modern Javascript

chap10.PDF

슬라이드 1

untitled

Something that can be seen, touched or otherwise sensed

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

2002년 2학기 자료구조

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

본문01

PowerPoint 프레젠테이션

Week5

凡 例 一. 이 글은 朝 鮮 日 報 에 成 均 館 大 中 文 學 科 全 廣 鎭 敎 授 가 連 載 한 생활한자에서 拔 萃 하였다. 逃 가지런할 도 走 달릴 주 도주( 逃 走 ) 피하여 달아남. 도망( 逃 亡 ). 필사의 도주/그 피의자는 도주의 우려가 없어 보석금을 내고

5.스택(강의자료).key

2014 HSC Korean Continuers

I care - Do you?

Microsoft Word - ExecutionStack

C# Programming Guide - Types

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

Chapter_06

USER GUIDE

OCaml


< C1A633B1C75FC3D6C1BE5FBCF6C1A4BABB2E687770>

PowerPoint 프레젠테이션

12-file.key

chap8.PDF

ePapyrus PDF Document

단위: 환경정책 형산강살리기 수중정화활동 지원 10,000,000원*90%<절감> 형산강살리기 환경정화 및 감시활동 5,000,000원*90%<절감> 9,000 4, 민간행사보조 9,000 10,000 1,000 자연보호기념식 및 백일장(사생,서예)대회 10

PowerPoint 프레젠테이션

며 오스본을 중심으로 한 작은 정부, 시장 개혁정책을 밀고 나갔다. 이에 대응 하여 노동당은 보수당과 극명히 반대되는 정강 정책을 내세웠다. 영국의 정치 상황은 새누리당과 더불어 민주당, 국민의당이 서로 경제 민주화 와 무차별적 복지공약을 앞세우며 표를 구걸하기 위한

내지4월최종

SIGPLwinterschool2012

chap7.key

<BFBEBEC6C0CCB5E9C0C720B3EEC0CC2E20B3EBB7A120C0CCBEDFB1E220C7D0B1B3202D20C0DAB7E1322E687770>

SRC PLUS 제어기 MANUAL

Chapter 4. LISTS

step 1-1

Page 2 of 5 아니다 means to not be, and is therefore the opposite of 이다. While English simply turns words like to be or to exist negative by adding not,

과 위 가 오는 경우에는 앞말 받침을 대표음으로 바꾼 [다가페]와 [흐귀 에]가 올바른 발음이 [안자서], [할튼], [업쓰므로], [절믐] 풀이 자음으로 끝나는 말인 앉- 과 핥-, 없-, 젊- 에 각각 모음으로 시작하는 형식형태소인 -아서, -은, -으므로, -음

E1-정답및풀이(1~24)ok

<C1B6BCB1B4EBBCBCBDC3B1E2342DC3D6C1BE2E687770>

untitled

민주장정-노동운동(분권).indd

0429bodo.hwp


최우석.hwp

< BDC3BAB8C1A4B1D4C6C75BC8A3BFDC D2E687770>

cls46-06(심우영).hwp

伐)이라고 하였는데, 라자(羅字)는 나자(那字)로 쓰기도 하고 야자(耶字)로 쓰기도 한다. 또 서벌(徐伐)이라고도 한다. 세속에서 경자(京字)를 새겨 서벌(徐伐)이라고 한다. 이 때문에 또 사라(斯羅)라고 하기도 하고, 또 사로(斯盧)라고 하기도 한다. 재위 기간은 6

<C0CEBCE2BABB2D33C2F7BCF6C1A420B1B9BFAAC3D1BCAD203130B1C72E687770>

6±Ç¸ñÂ÷

교사용지도서_쓰기.hwp

時 習 說 ) 5), 원호설( 元 昊 說 ) 6) 등이 있다. 7) 이 가운데 임제설에 동의하는바, 상세한 논의는 황패강의 논의로 미루나 그의 논의에 논거로서 빠져 있는 부분을 보강하여 임제설에 대한 변증( 辨 證 )을 덧붙이고자 한다. 우선, 다음의 인용문을 보도록

<C3D6C1BE5FBBF5B1B9BEEEBBFDC8B0B0DCBFEFC8A C3D6C1BEBABB292E687770>

초등국어에서 관용표현 지도 방안 연구

177

제주어 교육자료(중등)-작업.hwp

¸é¸ñ¼Ò½ÄÁö 63È£_³»Áö ÃÖÁ¾

01Report_210-4.hwp

<C3D1BCB15FC0CCC8C45FBFECB8AE5FB1B3C0B0C0C75FB9E6C7E D352D32315FC5E4292E687770>

Transcription:

2

3

Weinberg LOC 1 4 2 5 5 1 5 2-3 3 2 3 4 2 5 1 2-3 4 3 4 1 1: 5: 4

- - Documentation vs. 5

1 ( ), 2 FORTRAN, COBOL, ALGOL60, BASIC 3 : Pascal, Modula-2, C, Ada, C++, Java : CHILL, RPG, Lisp, Prolog, APL 4 (4GL) non-procedural language MANTIS, IDEAL, RAMIS II, SQL 6

Visual Basic, (properties) 7

( ) 8

9

->,,,,, 10

? < > COBOL : C : Pascal : ( ) Modula-2 : Ada : LISP, Prolog :,, <> COBOL-74: 300, COBOL-85: 74 Pascal: 74, Modula-2: 64, Fortran 48 (orthogonality): 11

<> Pascal if TotalSales > BonusLevel then Bonus := Commission + (BonusPercent * TotalSales); if TotalSales > BonusLevel then begin end Bonus := Commission + (BonusPercent * TotalSales); BonusMonths := BonusMonths + 1 Ada endif, endwhile if TotalSales > BonusLevel then endif Bonus := Commission + (BonusPercent * TotalSales) if TotalSales > BonusLevel then endif Bonus := Commission + (BonusPercent * TotalSales); BonusMonths := BonusMonths + 1 12

( ) dangling else if conditiona then if concitionb then action1 else action2 1: null statement if conditiona then if concitionb then action1 else {} else action2 2: begin-end if conditiona then begin if concitionb then action1 end else action2 3: if conditiona then if concitionb then action1 endif else action2 endif 13

( ) (readability) (clarity) FORTRAN, COBOL )FORTRAN1~5, 7~72 FORTRAN FORTRAN, BASIC 14

(case ) case case case Person of when Newborn Infant => Infant_Seat; when Toddler.. Child => Lap_Belt; when Others => Shoulder_and_Lap_Belt; end case;,, 15

strongly typed language Ada, Pascal, C++ dynamic type language Lisp, APL,,, (C ) enum people {Infant, Toddler, Preschool, Child, Teenager, Adult}; struct student {char* name; int st_id; char* dept;}; ADT ( ) class 16

FORTRAN, Pascal, Modula-2 C, Ada < > type Puzzle is array (integer range <>, integer range <>) of character; (structure) subtype SundayPuzzle is Puzzle(1..50, 1..50); <> type SubscriberType = record Name: array[1..50] of char; IDNumber: 10000..99999; IssuesSent: 0..104; IssuesRemaining: 0..104; SubscriptionType: (New, Renewal, Free, Lifetime) end; 17

const (,,, ) (Pascal, Modula-2) (Ada) #define (C) (C++) 18

(Ada package) generic type StackItem is private; package Stack is procedure Push(Element: in StackItem); function Pop return StackItem;.. end Stack; package CharStack is new Stack(character); package IntegerStack is new Stack(integer); 19

(C++ Class) class Employee { private: char* positiontype int... public: promote(... ); } name; position; salary; Employee YoungHee(); Employee* YoungHee = Employee(); 20

(formulation) - N. Wirth - E. Yourdon 21

Proper Program, (,, ) goto stepwise refinement Structure Theorem proper program (if-then, if-then-else, case, while, for, repeat-until ) 22

23

24

Goto DO 50 I=1, COUNT. IF (ERROR1) GO TO 60. IF (ERROR2) GO TO 70. 50 CONTINUE 60 {Code for Error1 handling} GO TO 80 70 {Code for Error handling} 80 CONTINUE I=1 fori=1totablesizedo while I <= TableSize and if Table(I) = Target then goto Found Table(I) <> Target do I = I + 1 NotFound: {code for Target not found} if I > TableSize then Found: {code for Target found} {code for target not found} else { code for Target found} (b) goto (a) 25

1: - :? int i, j; for( i = 0; i < N; i++) { float v[n][n]; for(j = 0; j < N; j++) {. v[i][j] = 0.0; for(i = 1; i <= N; i++) } for( j = 1; j <= N; j++) v[i][j] = 1.0; v[i-1][j-1] = ( i / j )*( j / i ); } void FillPowersArray(int base, int *powers) { } int i; *powers = base; for (i = 2; i <= 8; i++) *powers+i = *power+i-1 * base; 26

( ) 2: < > < > if ( x < y ) { small = x; if ( x < z ) small = x; if ( y < small ) small = y; if ( x > z ) small = z; if ( z < small ) small = z; } if ( x > y ) { if ( y < z ) small = y; if ( y > z ) small = z; } If... then... else < > < > if (in_user_code) { if (!in_user_code) revert(); in_user_code = FALSE; else { r2 = r; reset_pharlap(); in_user_code = FALSE; r2 = r; send_sig_segv(); reset_pharlap(); } send_sig_segv(); else revert(); } 27

( ) 3: < > < > t1 = x1 - ( x2 + x2 ); t2 = 7 - x2; y = t1 + t1 + t2 + t2; y = 2*( x2-2 * x2 ) + 2 * (7 - x2); 4: < > NO5S = NO5S + 1; n = k; nn = k * k; nnn = k * k * k; <> -1 l a1 al -0 O term0 termo -5 S TEXT5 TEXTS -I l Iist list -mn mnnm mnmn -uv vuvu uuvu 28

( ) Hungarian notation < > char buffer[500], mssge[80]; void read_instnance(void), SaveCurrent(void); void get_line(void), write_line(void); int index1, index2; int dirctry, vsble; < > char buffer[500], message[80]; void read_instnance(void), save_current(void); void read_line(void), write_line(void); int i, j; int drctry, vsble; 29

( ) 6: { } < > < > for(i= 0; i <N; i++) for ( i = 0; i < N; i++ ) { { k= a[i]; k = a[i]; if (k>100) a[i] =i*3; if ( k > 100 ) else if (j =N) a[i] = i * 3;... else if ( j = N) } }... 7: If-else. < > < > if (swctl == '1') goto conti; if (swctl!= '1') { else { divctl += 10; dvictl += 10; swctl = '1'; swctl = '1'; } } conti : 30

( ) 8: if if null else < > if ( qty > 10 ) /* A */ if ( qty > 200 ) /* B */ if ( qty >= 500 ) bill_a += 1.00; /* C */ else bill_a += 0.50; /* C */ else; /* B */ else bill_a = 0.0; /* A */ if ( qty >= 500 ) bill_a += 1.0; else if ( qty > 200 ) bill_a += 0.5; else if ( qty <= 10) bill_a = 0.0; < > if ( qty >= 500.0 ) bill_a += 1.0; if ( qty < 500 && qty > 200 ) bill_a += 0.5; if ( qty <= 10 ) bill_a = 0.0; 31

( ) 9:. < > < get_token(); if (tkn == T_END) return; if (tkn == T_START) start_proc(); while (ntokens < T_LIMIT) { process_token(); add_token(); get_token(); if (tkn == T_END) return; if (tkn == T_START) start_proc(); } > for ( ; ; ) { } get_token(); if (tkn == T_END) return; if (tkn == T_START) start_proc(); if (T_LIMIT <= ntokens) break; process_token(); add_entry(); 32

( ) 10:, < > search(board,i,j,movrow,movcol,l) intboard[8][8],i,j,movrow[4],movcol[4],*l; { /*. 1 -, 2 -, 3 -, 4-0,. movrow, movcol l. */ int k; if (board[i][j] == 0) exit(0); *l = 0; k = board[i][j]; if (k == 3) goto back_right; if (i == 7) goto exit_test; if (j == 7) goto for_left; if (board[i+1][j+1]!= 0) goto for_left; moverow[*1] = i + 1; movecol[*l] = j + 1; *l++; for_left: if (j == 0) goto exit_test; moverow[*l] = i+1; movecol[*l] = j-1; *l++; exit_test: if (k == l) return; back_right: if (i == 0) return; if (j == 7) goto back_left; if (board[i-1][j+1]!= 0) goto back_left; moverow[*l] = i-1; movecol[*l] = j+1; *l++; back_left: if (j == 0) return; if (board[i-1][j-1]!= 0) return; moverow[*l] = i-1; movecol[*l] = j-1; *l++; } 33

( ) < > search(board, i, j, row, col, l) int board[8][8], i, j, row[4], col[4], *l; { /* board[i][j] = 0 => 1 =>, 2=> 3 =>, 4=> i, j l row, col */ int k; if (i < 0 i > 7 j < 0 j > 7) error("out of board"); k = board[i][j]; *l = 0; if (k < l k >4) error("misplaced knight"); *l = 0; if (k!= 3) store(board, i+1, j+1, row, col, l); if (k!= 3) store(board, i+1, j-1, row, col, l); if (k!= 1) store(board, i-1, j+1, row, col, l); if (k!= 1) store(board, i-1, j-1, row, col, l); } void store(board, ic, jc, row, col, l) int board[8][8], ic, jc, row[4], col[4], *l; { if (ic < 0 ic > 7 }} jc < 0 jc > 7) return; if (board[ic][jc]!= 0) return; *l++; row[*l] = ic; col[*l] = jc; } 34

-.. 35

( )... -. (off-by-one)...... -.. -. 36

The sooner you start to code, the longer the program will take. If you can't write it down in English, you can't code it. If the code and the comments disagree, then both are probably wrong. If you have too many special cases, you are doing it wrong. Get your data structures correct first, and the rest of the program will write itself. Don't debug standing up. It cuts your patience in half, and you need all you can muster. Each new user of a new system uncovers a new class bugs. Whenever possible, steal code. Always do the hard part first. If the hard part is impossible, why waste time on the easy part? If you lie to the computer, it will get you. One person's constant is another person's variable. 37

38

/********************************************************************************************* - EXAM SCORE SUMMARY PROGRAM - WRITTEN BY : HONG, KIL DONG - RELEASE DATE : April 1, 1994 - - PURPOSE : This program produces a variety of statistics on a - group of student's exam scores. For each score that is entered, - the score and a row of stars representing the magnitute of the - score is printed out. In addition, the number of scores, the - average score, the highest score and the lowest score are - printed out. - - DESIGN : The program is composed of the following modules: - Main module - The Main, controlling module - Validate Input - Gets and validates the user's input - Process Valid Score - Prints score and row of stars for one score - Update Statistics - Updates global statistics - Print Summary Report - Prints summary statistics 39

( ) - MAJOR VARIABLES : - SumOfScore (subrange of integer, 0..2000) - - The sum of all score entered - NumOfStudents (subrange of integer, 0..100) - - The total number of score entered - LargestScore (subrange of integer, 0..20) - - The largest score in the set of scores - SmallestScore (subrange of integer, 0..20) - - The smallest score - FILES USED: - Input - contains integer scores, one to a line - Output - contains a one-line histogram for each score - read, followed on the next line by the number of - students and their average score, then on the next line - by the top score, and concluding on the next line with - the lowest score. - EXTERNAL REFERENCES: None ******************************************************************************************/ 40