Title: YAZILIM BUNALIMI VE KARMASIKLIK Nesneye Y
1YAZILIM BUNALIMI VE KARMASIKLIKNesneye Yönelik
Programlamayi Doguran Sebepler
Yilmaz Kiliçaslan
2Sunum Plani
- Yazilim Bunalimi
- Programlama
- Karmasiklik
- Çözüm Yollari
3Yazilim Bunaliminin Ilani 1968
4Yazilim Bunaliminin Sonuçlari
- The software crisis manifested itself in several
ways - Projects running over-budget.
- Projects running over-time.
- Software was very inefficient.
- Software was of low quality.
- Software often did not meet requirements.
- Projects were unmanageable and code difficult to
maintain. - Software was never delivered.
5Programlama Nedir?
- Sanat?
- Mühendislik?
- Problem Çözme?
6Yazilim Projesi Etkinlikleri
PLANLAMA
TASARIM
ANALIZ
KODLAMA VE TEST
YKY/YKG
BIRLESTIRME VE TEST
TEST PLANI HAZIRLAMA
TEST PROSEDÜRÜ HAZIRLAMA
KULLANIM HAZIRLIGI
7Yazilim Gelistirme Evreleri
- Analiz
- Tasarim
- Kodlama
- Entegrasyon
8Analiz
- Ne yapacagiz?
- Gereklilikler
- Problem sahasi
9Tasarim
- Nasil yapacagiz?
- Genel / mantiksal tasarim
- Soyut düsün!
- Ayrintili / fiziksel tasarim
- Somuta dönüstür!
10Kodlama
- Programi yazmaya bilgisayar basinda baslama!
- Azar azar kodla sik sik test et!
- Ilk önce, ilk derleme hatasini düzelt!
11Entegrasyon
- Birlestirilebilir ve sinanmis kod parçalari elde
eder etmez, bunlari birlestir! - Her birlestirme sonrasinda, mutlaka test yap!
12Yazilim Karmasikligi
- "Einstein argued that there must be simplified
explanations of nature, because God is not
capricious or arbitrary. No such faith comforts
the software engineer. Much of the complexity
that he must master is arbitrary complexity. - Fred Brooks, 1986
- "The complexity of software is an essential
property, not an accidental one." - Fred Brooks, 1995
13Yazilim Karmasikliginin Dört Ögesi
- Problem sahasinin karmasikligi
- Yazilim gelistirme sürecini yönetme güçlügü
- Yazilimin mümkün kildigi esneklik
- Ayrik sistemlerin beklenmeyen davranislari
14Problem sahasinin karmasikligi
- Çatisan talepler
- Çelisen talepler
- Anlatilamayan talepler
- Degisen talepler
- ...
15Yazilim gelistirme sürecini yönetme güçlügü
16Yazilimin mümkün kildigi esneklik
- Bir yazilimci herseyi programlayabilir!
17Ayrik sistemlerin beklenmeyen davranislari
- When we say that a system is described by a
continuous function, we are saying that it can
contain no hidden surprises. Small changes in
inputs will always cause correspondingly small
changes in outputs. Parnas (1985) - On the other hand, discrete systems by their
very nature have a finite number of possible
states in large systems, there is a
combinatorial explosion that makes this number
very large. Booch (1998)
18Insani asan karmasiklik
- The distinguishing characteristic of
industrial-strength software is that it is
intensely difficult, if not impossible, for the
individual developer to comprehend all the
subtleties of its design. Stated in blunt terms,
the complexity of such systems exceeds the human
intellectual capacity. Alas, this complexity we
speak of seems to be an essential property of all
large software systems. By essential we mean that
we may master this complexity, but we can never
make it go away. - Grady Booch, 1998
19Yazilim Mühendislerinin Kapasitesi
- "The world is only sparsely populated with
geniuses. There is no reason to believe that the
software engineering community has an
inordinately large proportion of them. - Lawrence Peters, 1981
20Kontrolsüz Karmasikligin Sonuçlari
- Bir sistem ne kadar karmasik olursa, top yekûn
çökme olasiligi o kadar yüksek olur. Shankar
(1984) - NYP öncesi karmasiklik-maliyet iliskisi
21How to program a computer to play good chess
It used to be thought in the 1950's and on into
the 1960's-that the trick to making a machine
play well was to make the machine look further
ahead into the branching network of possible
sequences of play than any chess master can.
1990s chess-playing computer
However, as this goal gradually became attained,
the level of computer chess did not have any
sudden spurt, and surpass human experts. In fact,
a human expert can quite soundly and confidently
trounce the best chess programs of this day.
Hofstadter, 1979
Grandmaster Garry Kasparov, former World Chess
Champion
22Chunking and Chess skill
In the 1940's, the Dutch psychologist Adriaan de
Groot made studies of how chess novices and chess
masters perceive a chess situation. Put in their
starkest terms, his results imply that chess
masters perceive the distribution of pieces in
chunks.
23Computer Systems
When a computer program is running, it can be
viewed on a number of levels. On each level, the
description is given in the language of computer
science, which makes all the de descriptions
similar in some ways to each other-yet there are
extremely important differences between the
views one gets on the different levels.
24Instructions and Data
The words of memory contain not only data to be
acted on, but also the program to act on the data.
25The base sequence for the chromosome
ofbacteriophage OX174
26Machine Language vs. Assembly Language
84, 0, 184, 142, 216, 198, 6, 158, 15, 36, 205,
32
If you were to enter these numbers into your
computer's memory and run them under MS-DOS, you
would see a dollar sign placed in the lower right
hand corner of your screen, since that is what
these numbers tell the computer to do.
MOV AX, 47104MOV DS, AXMOV 3998, 36INT 32
27A "stratified" picture of Al
FIGURE 59. To create intelligent programs, one
needs to build up a series of levels of hardware
and software, so that one is spared the agony of
seeing everything only on the lowest level.
Descriptions of a single process on different
levels will sound very different from each other,
only the top one being sufficiently chunked that
it is comprehensible to us. Adapted from P. H.
Winston, Artificial Intelligence (Reading, Mass.
Addison-ifele'', 1977)
28Bilissel Siniflandirma
Eleanor Rosch ve arkadaslari, bilissel
siniflandirmanin ortogonal iki eksen tarafindan
belirlendigini saptadirlar
Level of Inclusiveness
vehicle mammal
furniture
Segmentation of Categories
car dog chair
saloon collie
rocking chair
29Yazilim Karmasikligina Çözüm Arayislari
- Three major innovations in programming have been
devised to cope with the problem of complexity - Object-oriented programming (OOP)
- The Unified Modeling Language (UML)
- - Improved software development processes
Robert Lafore, 2002
30ÖZET
- Yazilim bunalimi, süreyi ve bütçeyi asan, müsteri
beklentilerini karsilamayan projelere yol
açmistir. - Bunalimin nedeni, yazilimin dogasinda ve
gelistirme süreçlerinde mevcut olan
karmasikliktir. - Nesneye Yönelik Programlama, karmasiklik ile
mücadele amaciyla gelistirilmis araçlardan
birisidir.
31Kaynaklar
- Booch, G. 1998. Object-Orinted Analysis and
Design. Addison-Wesley. - Brooks, F. April 1986. No Silver Bullet Essence
and Accidents of Software Engineering. IEEE
Computer vol. 20(4), p. 12. - Brooks, F. 1995. "Chap. 17". "'No Silver Bullet'
Refined" (Anniversary Edition with four new
chapters ed.) Addison-Wesley. - Hofstadter, D. 1979. Gödel, Escher, Bach An
Eternal Golden Braid, Basic Books. - Parnas, D. july 1985. Software Aspects of
Strategic Defense System Victoria, Canada
University of Victoria, Report DCS-47-IR. - Peters, L. 1981. Software Design. New York, NY
Yourdon Press, p. 22. - Shankar, K. 1984. Data Design Types, Structures,
and Abstractions. Handbook of Software
Engineering. New York, NY Van Nostrand Reinhold,
p. 253.