Kodi Komplet 2

24. Rifaktorimi
 
•  Ndryshimet e programit janë fakt i jetës edhe gjatë zhvillimit fillestar edhe pas
lëshimit fillestar.
•  Softueri mund edhe të përmirësohet edhe të degradohet gjatë ndryshimit. Rregulla
Kardinale (Kryesore) e Evolucionit të Softuerit është se cilësia e brendshme duhet të
përmirësohet krahas me moshën.
•  Një çelës për sukses në rifaktorim është me mësu me iu kushtu vëmendje shumë
shenjave apo erërave alarmuese që e sugjerojnë nevojën për rifaktorim.
•  Një tjetër çelës për sukses është me e mësu një numër të madh të rifaktorimeve
specifike.
•  Një çelës përfundimtar për sukses është me e pasë një strategji për me rifaktoru në
mënyrë të sigurtë. Disa qasje ndaj rifaktorimit janë më të mira se sa tjerat.
•  Rifaktorimi gjatë zhvillimit është gjasa më e mirë që do ta keni për ta përmirësuar
programin tuaj, për t'i bërë të gjitha ndryshimet që kishit dashtë t'i bëni herën e
parë. Shfrytëzojeni rastin!
 Kodi Komplet – pikat kryesore
20
 
25. Strategjitë e rregullimit të kodit
 
•  Performansa është vetëm një aspekt i cilësisë së përgjithshme të softuerit, dhe
zakonisht nuk është më i rëndësishmi. Kodi i rregulluar mirë është vetëm një aspekt i
performansës së përgjithshme, dhe zakonisht nuk është më i rëndësishmi.
Arkitektura e programit, dizajni i detalizuar, dhe zgjedhja e strukturës së shënimeve
dhe e algoritmeve zakonisht kanë më shumë ndikim në shpejtësinë e ekzekutimit
dhe madhësinë e programit se sa që e ka efikasiteti i kodit të tij.
•  Matja kuantitative (sasiore) është çelës i maksimizimit të performansës. Nevojitet të
gjenden zonat në të cilat përmirësimet e performansës vërtet do të kenë vlerë, dhe
përsëri nevojitet të verifikohet se optimizimet e përmirësojnë në vend se ta
degradojnë softuerin.
•  Shumica e programeve e kalojnë pjesën më të madhe të kohës së tyre në një pjesë të
vogël të kodit të vet. Nuk do ta dish se cili është ai kod derisa nuk e mat.
•  Zakonisht nevojiten shumë iteracione për t'i arritur përmirësimet e dëshiruara të
performansës përmes rregullimit të kodit.
•  Mënyra më e mirë për t'u përgatitur për punën e performansës gjatë kodimit fillestar
është me shkru kod të pastër të cilin është lehtë me e kuptu dhe me e ndryshu.
 
 
26. Teknikat e rregullimit të kodit
 
•  Rezultatet e optimizimit ndryshojnë gjerësisht ndërmjet gjuhëve, kompajlerëve, dhe
ambienteve të ndryshme. Pa e matë secilin optimizim specifik, nuk do të keni ide se a
do ta ndihmojë programin tuaj apo do ta lëndojë atë.
•  Optimizimi i parë shpesh nuk është më i miri. Edhe pasi ta gjeni një të mirë, vazhdoni
të kërkoni për një tjetër që është më i mirë.
•  Rregullimi i kodit është pak si energjia nukleare. Është temë kontraverze dhe
emocionale. Disa njerëz mendojnë se është aq i dëmshëm për besueshmërinë dhe
mirëmbajtshmërinë sa që nuk do ta bëjnë fare. Të tjerët mendojnë se me kujdes të
duhur, është i dobishëm. Nëse vendosni t'i përdorni teknikat në këtë kapitull, zbatoni
ato me kujdes.
 
   Kodi Komplet – pikat kryesore
21
 
VI. KONSIDERATAT E SISTEMIT
 
27. Si ndikon madhësia e programit në konstruksion
 
•  Me rritjen e madhësisë së projektit, nevojitet të përkrahet komunikimi. Thelbi i
shumicës së metodologjive është të zvogëlohen problemet e komunikimit, dhe një
metodologji duhet të jetojë apo të vdesë në bazë të meritave të veta si lehtësuese e
komunikimit.
•  Nëse të gjitha gjërat tjera janë të barabarta, produktiviteti do të jetë më i vogël në
një projekt të madh se sa në një projekt të vogël.
•  Aktivitetet që mirren të gatshme në projektet e vogla duhet të planifikohen në
mënyrë të kujdesshme në projektet e mëdha. Konstruksioni bëhet më pak
mbizotërues me rritjen e madhësisë së projektit.
•  Shkallëzimi rritës i një metodologjie me peshë të lehtë ka prirje të punojë më mirë se
sa shkallëzimi zvogëlues i një metodologjie me peshë të rëndë. Qasja më efektive
nga të gjitha është përdorimi i metodologjisë "me peshë të duhur".
 
 
28. Menaxhimi i konstruksionit
 
•  Praktikat e mira të programimit mund të arrihen ose përmes standardeve të
detyruara ose përmes qasjeve më me takt.
•  Menaxhmenti i konfiguracionit, kur zbatohet si duhet, e bën punën e programerëve
më të lehtë. Kjo sidomos e përfshin kontrollin e ndryshimeve.
•  Vlerësimi i mirë i softuerit është sfidë e rëndësishme. Çelësat për sukses janë
përdorimi i shumë trajtimeve (qasjeve), rregullimi i vlerësimeve tuaja derisa punoni
nëpër projekt, dhe përdorimi i shënimeve për t'i krijuar vlerësimet.
•  Matja është çelës i menaxhmentit të suksesshëm të konstruksionit. Mund të gjeni
mënyra për matjen e cilitdo aspekt të një projekti që janë më të mira se sa
mosmatja. Matja e saktë është çelës i afatizimit të saktë, i kontrollit të cilësisë, dhe i
përmirësimit të procesit tuaj të zhvillimit.
•  Programerët dhe menaxherët janë njerëz, dhe ata punojnë më së miri kur trajtohen
si të tillë.
 
 
   Kodi Komplet – pikat kryesore
22
 
29. Integrimi
 
•  Radha e konstruksionit dhe qasja ndaj integrimit ndikojnë në radhitjen në të cilën
dizajnohen, kodohen, dhe testohen klasët.
•  Një radhitje e menduar mirë e integrimit i zvogëlon përpjekjet e testimit dhe e
lehtëson përmirësimin e gabimeve.
•  Ndërtimet ditore mund t'i zvogëlojnë problemet e integrimit, ta përmirësojnë
gjendjen morale të zhvilluesve, dhe të ofrojnë informata të dobishme të menaxhimit
të projektit.
•  Integrimi rritës (incremental) i ka disa variacione, dhe, pos nëse projekti është trivial,
cilado nga to është më e mirë se integrimi në faza.
•  Qasja më e mirë e integrimit për cilindo projekt specifik është zakonisht një
kombinim i qasjes lart-poshtë, poshtë-lart, asaj të orientuar kah rreziqet, dhe qasjeve
tjera. Integrimi me formë-T dhe integrimi me rriska vertikale janë dy qasje që
zakonisht punojnë mirë.
 
 
30. Veglat e programimit
 
•  Programerët nganjëherë nuk i vërejnë disa nga veglat më të fuqishme disa vite para
se t'i zbulojnë ato.
•  Veglat e mira mund ta bëjnë jetën tuaj shumë më të lehtë.
•  Veglat janë të gatshme dhe në dispozicion për editim, analizim të cilësisë së kodit,
rifaktorim, kontroll të versioneve, rregullim të gabimeve, testim, dhe rregullim të
kodit.
•  Ju mund t'i ndërtoni shumë nga veglat me qëllime të veçanta që ju nevojiten.
•  Veglat e mira mund t'i zvogëlojnë aspektet më të mërzitshme të zhvillimit të
softuerit, por nuk mund ta eliminojnë nevojën për programim, edhe pse do të
vazhdojnë ta riformulojnë atë se çka kuptojmë me "programim".
 
   Kodi Komplet – pikat kryesore
23
 
VII. ZEJTARIA E SOFTUERIT
 
31. Zbukurimi i kodit dhe stili
 
•  Prioriteti i parë i zbukurimit vizual është të sqarohet organizimi logjik i kodit. Kriteret
e përdorura për ta vlerësuar se a është arritur prioriteti e përfshijnë përpikërinë,
konsistencën, lexueshmërinë dhe mirëmbajtshmërinë.
•  Dukja bukur është dytësore ndaj kritereve tjera - një e dytë e largët. Mirëpo nëse
kriteret tjera plotësohen dhe kodi përkatës është i mirë, zbukurimi do të duket mirë.
•  Visual Basic ka blloqe të pastërta, dhe praktika konvencionale në Java është të
përdoret stili i blloqeve të pastërta, prandaj mund ta përdorni zbukurimin me blloqe
të pastërta nëse programoni në ato gjuhë. Në C++ punojnë mirë edhe emulimi i
blloqeve të pastërta, edhe kufijtë e blloqeve begin-end.
•  Strukturimi i kodit është i rëndësishëm për hir të vetes. Konventa specifike që i
përmbaheni mund të jetë më pak e rëndësishme se sa fakti që ju po i përmbaheni
një konvente në mënyrë konsistente. Një konventë e zbukurimit e cila zbatohet në
mënyrë jokonsistente në të vërtetë mund ta lëndojë lexueshmërinë.
•  Shumë aspekte të zbukurimit janë çështje religjioze. Provoni t'i ndani preferencat
objektive nga ato subjektive. Përdorni kritere eksplicite për t'i zbritë në tokë
diskutimet tuaja për preferencat e stilit.
 
32. Kodi vetë-dokumentues
 
•  Çështja se a me komentu a jo është çështje e arsyeshme. Nëse bëhet dobët,
komentimi është humbje e kohës dhe nganjëherë i dëmshëm. Nëse bëhet mirë,
komentimi ia vlen.
•  Kodi burimor duhet t'i përmbajë informatat më kritike për programin. Derisa
programi ekzekutohet, kodi burimor i ka më shumë se cilido resurs tjetër gjasat se do
të mbahet aktual, dhe është e dobishme me pasë informata të rëndësishme të
përfshira në kod.
•  Kodi i mirë është dokumentimi i vet më i mirë. Nëse kodi është mjaft i keq sa të
kërkojë komente të zgjeruara, së pari provoni ta përmirësoni kodin ashtu që të mos
ketë nevojë për komente të zgjeruara.
•  Komentet duhet të thonë gjëra për kodin që kodi nuk mund t'i thotë për veten - në
nivel të përmbledhjes apo të qëllimit.
•  Disa stile të komentimit kërkojnë shumë punë të mërzitshme administrative.
Zhvillojeni një stil që është i lehtë për ta mirëmbajtur. Kodi Komplet – pikat kryesore
24
 
33. Karakteri personal
 
•  Karakteri juaj personal ndikon direkt në aftësinë tuaj për të shkruar programe
kompjuterike.
•  Karakteristikat që janë më të rëndësishmet janë modestia, kureshtja, ndershmëria
intelektuale, kreativiteti dhe disciplina, dhe përtacia e shkolluar.
•  Karakteristikat e një programeri superior pothuajse nuk kanë të bëjnë fare me
talentin dhe kanë të bëjnë gjithçka me përkushtimin ndaj zhvillimit personal.
•  Çuditërisht, inteligjenca e papërpunuar, përvoja, këmbëngulja, dhe guximi lëndojnë
po aq sa edhe ndihmojnë.
•  Shumë programerë nuk kërkojnë në mënyrë aktive informata dhe teknika të reja dhe
në vend të kësaj mbështeten në ekspozimin e rastësishëm në punë ndaj informatave
të reja. Nëse një përqindje të vogël të kohës suaj ia kushtoni leximit dhe mësimit për
programimin, pas disa muajve apo viteve do ta dalloni në mënyrë dramatike veten
nga rrjedha e përgjithshme e programimit.
•  Karakteri i mirë është kryesisht çështje e të posedimit të shprehive të duhura. Për
me qenë programer i mirë, zhvilloji shprehitë e duhura, dhe pjesa tjetër do të vijë
natyrshëm.
 
34. Temat në zejtarinë e softuerit
 
•  Një qëllim primar i programimit është menaxhimi i kompleksitetit.
•  Procesi i programimit ndikon dukshëm në produktin final.
•  Programimi në ekip është më shumë aktivitet në komunikim me njerëzit se sa në
komunikim me kompjuterin. Programimi individual është më shumë aktivitet në
komunikim me vetëveten se sa me kompjuterin.
•  Kur abuzohet, një konventë e programimit mund të jetë ilaç që është më i keq se sa
sëmundja. Kur përdoret me mend, një konventë i shton strukturë të vlefshme
ambientit të zhvillimit dhe ndihmon në menaxhimin e kompleksitetit dhe në
komunikim.
•  Programimi në terma të problemit e jo në terma të zgjidhjes ndihmon me e menaxhu
kompleksitetin.
•  Me i kushtu vëmendje shenjave intelektuale alarmuese siç është "iritimi i dyshimit"
është sidomos e rëndësishme në programim sepse programimi është pothuajse
krejtësisht aktivitet mendor.
•  Sa më shumë që iteroni në secilin aktivitet të zhvillimit, aq më i mirë do të jetë
produkti i atij aktiviteti.
•  Metodologjitë dogmatike dhe zhvillimi i softuerit të cilësisë së lartë nuk përzihen.
Mbushe çantën tënde intelektuale të veglave me alternativa të programimit dhe
përmirësoje aftësinë tënde në zgjedhjen e veglës së duhur për punë. Kodi Komplet – pikat kryesore
25
 
35. Ku me gjetë më shumë informata
 
(Këtë kapitull po e qes ashtu si është në origjinal, meqë tekstet dhe referencat e preferuara janë në anglisht.)
 
35.1 Information About Software Construction
I originally wrote this book because I couldn’t find a thorough discussion of software
construction. In the years since I published the first edition, several good books have
appeared.
•  Pragmatic Programmer (Hunt and Thomas 2000) focuses on the activities most
closely associated with coding including testing, debugging, use of assertions, and so
on. It does not dive deeply into code itself, but contains numerous princi-ples related
to creating good code.
•  Jon Bentley’s Programming Pearls, 2d Ed (Bentley 2000) discusses the art and
science of software design in the small. The book is organized as a set of essays that
are very well written and express a great deal of insight into effective con-struction
techniques as well as genuine enthusiasm for software construction. I use something
I learned from Bentley's essays nearly every day that I program. 
•  Kent Beck's Extreme Programming Explained: Embrace Change (Beck 2000) defines
a construction-centric approach to software development. As Section 3.1 explained,
the book's assertions about the economics of extreme programming are not borne
out by industry research, but many of its recommendations are useful during
construction regardless of whether a team is using extreme programming or some
other approach. 
•  A more specialized book is Steve Maguire's Writing Solid Code: Microsoft’s
Techniques for Developing Bug-Free C Software (Maguire 1993). It focuses on
construction practices for commercial-quality software applications, mostly based on
the author’s experiences working on Microsoft's Office applications. It focuses on
techniques applicable in C. It is largely oblivious to object-oriented programming
issues, but most of the topics it addresses are relevant in any envi-ronment. 
•  Another more specialized book is The Practice of Programming by Brian Kernighan
and Rob Pike (Kernighan and Pike 1999). This book focuses on nitty gritty, practical
aspects of programming, bridging the gap between academic computer science
knowledge and hands-on lessons. It includes discussions of programming style,
design, debugging, and testing. It assumes familiarity with C/C++. 
•  Although it’s out of print and hard to find, Programmers at Work by Susan Lammers
(1986) is worth the effort if you can find it. It contains interviews with the industry’s
high-profile programmers. The interviews explore their personalities, work habits,
and programming philosophies. The luminaries interviewed include Bill Gates
(founder of Microsoft), John Warnock (founder of Adobe), Andy Hertzfeld (principal
developer of the Macintosh operating system), Butler Lampson (a senior engineer at
DEC, now at Microsoft), Wayne Ratliff (inventor of dBase), Dan Bricklin (inventor of
VisiCalc), and a dozen others.  Kodi Komplet – pikat kryesore
26
 
35.2 Topics Beyond Construction
 
Beyond the core books described in the last section, here are some books that range further
afield from the topic of software construction.
•  Robert L. Glass’s Facts and Fallacies of Software Engineering (2003) provides a
readable introduction to the conventional wisdom of software development dos and
don'ts. The book is well researched and provides numerous pointers to additional
resources. 
•  My own Professional Software Development (2004) surveys the field of software
development as it is practiced now and as it could be if it were routinely practiced at
its best.
•  The Swebok: Guide to the Software Engineering Body of Knowledge (Abran 2001)
provides a detailed decomposition of the software engineering body of knowledge.
This book has dived into detail in the software construction area. The Guide to the
Swebok shows just how much more knowledge exists in the field. Download from
swebok.org. 
•  Gerald Weinberg's The Psychology of Computer Programming (Weinberg 1998) is
packed with fascinating anecdotes about programming. It's far-ranging because it
was written at a time when anything related to software was considered to be about
programming. The advice in the original review of the book in the ACM Computing
Reviews is as good today as it was when the review was written: "Every manager of
programmers should have his own copy. He should read it, take it to heart, act on
the precepts, and leave the copy on his desk to be stolen by his programmers. He
should continue replacing the stolen copies until equilibrium is established" (Weiss
1972). 
•  If you can't find The Psychology of Computer Programming, look for The Mythical
Man-Month (Brooks 1995) or PeopleWare (DeMarco and Lister 1999). They both
drive home the theme that programming is first and foremost some-thing done by
people and only secondarily something that happens to involve computers. 
•  A final excellent overview of issues in software development is Software Creativity
(Glass 1995). This book should have been a breakthrough book on software
creativity the way that Peopleware was on software teams. Glass discusses creativity
versus discipline, theory versus practice, heuristics versus methodology, process
versus product, and many of the other dichotomies that define the software field.
After years of discussing this book with programmers who work for me, I have
concluded that the difficulty with the book is that it is a collection of essays edited by
Glass, but not entirely written by him. For some readers, this gives the book an
unfinished feel. Nonetheless, I still require every developer in my company to read it.
The book is out of print and hard to find, but worth the effort if you are able to find
it. 
   Kodi Komplet – pikat kryesore
27
 
Software-Engineering Overviews
Every practicing computer programmer or software engineer should have a high-level
reference on software engineering. Such books survey the methodological
landscape rather than painting specific features in detail. They provide an overview of
effective software-engineering practices and capsule descriptions of spe124
cific software-engineering techniques. The capsule descriptions aren’t detailed
enough to train you in the techniques, but a single book would have to be several
thousand pages long to do that. They provide enough information so that you can
learn how the techniques fit together and can choose techniques for further investigation.
Roger S. Pressman’s Software Engineering: A Practitioner’s Approach, 6th Ed.
(Pressman 2004) is a balanced treatment of requirements, design, quality validation, and
management. Its 700 pages pay little attention to programming practices, but that is a
minor limitation, especially if you already have a book on construction such as the one
you’re reading.
 
The 6th edition of Ian Sommerville’s Software Engineering (Sommerville 2000)
is comparable to Pressman’s book, and it also provides a good high-level overview of the
software-development process.
 
 
Other Annotated Bibliographies
Good computing bibliographies are rare. Here are a few that justify the effort it takes to
obtain them.
•  ACM Computing Reviews is a special-interest publication of the ACM that's
dedicated to reviewing books about all aspects of computers and computer
programming. The reviews are organized according to an extensive classification
scheme, making it easy to find books in your area of interest. For information on this
publication and on membership in the ACM, write: ACM, PO Box 12114, Church
Street Station, New York, NY 10257. 
•  Construx Software’s Professional Development Ladder. This website provides
recommended reading programs for software developers, testers, and managers. 
 
   Kodi Komplet – pikat kryesore
28
 
35.3 Periodicals
Lowbrow Programmer Magazines
These magazines are often available at local newsstands.
 
Software Development. www.sdmagazine.com. This magazine focuses on programming
issues—less on tips for specific environments than on the general issues you face as a
professional programmer. The quality of the articles is quite
good. It also includes product reviews.
Dr. Dobb’s Journal. www.ddj.com. This magazine is oriented toward hard-core
programmers. Its articles tend to deal with detailed issues and include lots of
code.
If you can’t find these magazines at your local newsstand, many publishers will
send you a complimentary issue, and many articles are available on line.
Highbrow Programmer Journals
You don’t usually buy these magazines at the newsstand. You usually have to go
to a major university library or subscribe to them for yourself or your company.
 
IEEE Software. www.c omputer.org/software/. This bimonthly magazine focuses
on software construction, management, requirements, design and other leading-edge
software topics. Its mission is to “build the community of leading software
practitioners.” In 1993, I wrote that it’s “the most valuable magazine a programmer can
subscribe to.” Since I wrote that, I’ve been Editor in Chief of the
magazine, and I still believe it’s the best periodical available for a serious software
practitioner.
IEEE Computer. www.computer.org/computer/. This monthly magazine is the
flagship publication of the IEEE Computer Society. It publishes articles on a
wide spectrum of computer topics and has scrupulous review standards to ensure
the quality of the articles it publishes. Because of its breadth, you’ll probably
find fewer articles that interest you than you will in IEEE Software.
Communications of the ACM. www.acm.org/cacm/. This magazine is one of the
oldest and most respected computer publications available. It has the broad charter of
publishing about the length and breadth of computerology, a subject that’s
much vaster than it was even a few years ago. As with IEEE Computer, because
of its breadth, you’ll probably find that many of the articles are outside your area
of interest. The magazine tends to have an academic flavor, which has both a bad
side and a good side. The bad side is that some of the authors write in an obfuscatory
academic style. The good side is that it contains leading-edge information
that won’t filter down to the lowbrow magazines for years.
   Kodi Komplet – pikat kryesore
29
 
Special-Interest Publications
Several publications provide in-depth coverage of specialized topics.
Professional Publications
The IEEE Computer Society publishes specialized journals on software engineering, security
and privacy, computer graphics and animation, internet development, multimedia,
intelligent systems, the history of computing, and other
topics. See www.computer.org for more details.
The ACM also publishes special-interest publications in artificial intelligence,
computers and human interaction, databases, embedded systems, graphics, programming
languages, mathematical software, networking, software engineering,
and other topics. See www.acm.org for more information.
Popular-Market Publications
These magazines all cover what their names suggest they cover.
The C/C++ Users Journal. www.cuj.com.
Java Developer’s Journal. www.sys-con.com/java/.
Embedded Systems Programming. www.embedded.com.
Linux Journal. www.linuxjournal.com.
Unix Review. www.unixreview.com
Windows Developer’s Network. www.wd-mag.com.
35.4 A Software Developer’s Reading Plan
This section describes the reading program that a software developer needs to
work through to achieve full professional standing at my company, Construx
Software. The plan described is a generic baseline plan for a software professional who
wants to focus on development. Our mentoring program provides for
further tailoring of the generic plan to support an individual’s interests, and
within Construx this reading is also supplemented with training and directed professional
experiences.
Introductory Level
To move beyond “introductory” level at Construx, a developer must read the
following books.
Adams, James L. Conceptual Blockbusting: A Guide to Better Ideas, 4th ed.
Cambridge, Mass.: Perseus Publishing.
Bentley, Jon. Programming Pearls, 2d Ed. Reading, Mass.: Addison-Wesley,
2000.
Glass, Robert L. Facts and Fallacies of Software Engineering, Boston, Mass.:
Addison Wesley, 2003.
McConnell, Steve. Software Project Survival Guide. Redmond, WA: Microsoft
Press, 1998.
McConnell, Steve. Code Complete, 2d Ed.. Redmond, WA: Microsoft Press,
2004.
   Kodi Komplet – pikat kryesore
30
 
Practitioner Level
To achieve “intermediate” status at Construx, a programmer needs to read the
following additional materials.
Berczuk, Stephen P. and Brad Ap pleton. Software Configuration Management
Patterns: Effective Teamwork, Practical Integration, Boston, Mass.: Addison
Wesley, 2003.
Fowler, Martin. UML Distilled: A Brief Guide to the Standard Object Modeling
Language, 3d Ed, Boston, Mass.: Addison Wesley, 2003.
Glass, Robert L. Software Creativity, Reading, Mass.: Addison Wesley, 1995.
Kaner, Cem, Jack Falk, Hung Q. Nguyen. Testing Computer Software, 2d Ed.,
New York: John Wiley & Sons, 1999.
Larman, Craig. Applying UML and Patterns: An Introduction to Object-Oriented
Analysis and Design and the Unified Process, 2d Ed., Englewood Cliffs, N.J.:
Prentice Hall, 2001.
McConnell, Steve. Rapid Development. Redmond, WA: Microsoft Press, 1996.
Wiegers, Karl. Software Requirements, 2d Ed. Redmond, WA: Microsoft Press,
2003.
“Manager’s Handbook for Software Development”, NASA Goddard Space
Flight Center. Downloadable from sel.gsfc.nasa.gov/website/documents/online-doc.htm.
 
Professional Level
A software developer must read the following materials to achieve full professional standing
at Construx (“leadership” level). Additional requirements are
tailored to each individual developer; this section describes the generic requirements.
Bass, Len, Paul Clements, and Rick Kazman. Software Architecture in Practice,
Second Edition, Boston, Mass.: Addison Wesley, 2003.
Fowler, Martin. Refactoring: Improving the Design of Existing Code, Reading,
Mass.: Addison Wesley, 1999.
Gamma, Erich, et al. Design Patterns, Reading, Mass.: Addison Wesley, 1995.
Gilb, Tom. Principles of Software Engineering Management. Wokingham, England: Addison-
Wesley.
Maguire, Steve. Writing Solid Code. Redmond, WA: Microsoft Press, 1993.
 
Meyer, Bertrand. Object-Oriented Software Construction, 2d Ed. New York:
Prentice Hall PTR, 1997.
“Software Measurement Guidebook”, NASA Goddard Space Flight Center.
Available from sel.gsfc.nasa.gov/website/documents/online-doc.htm.
For more details on this professional development program, as well as for up-to-date
reading lists, see our professional development website at
www.construx.com/professionaldev/.
 
   Kodi Komplet – pikat kryesore
31
 
35.5 Joining a Professional Organization
 
One of the best ways to learn more about programming is to get in touch with
other programmers who are as dedicated to the profession as you are. Local user
groups for specific hardware and language products are one kind of group. Other
kinds are national and international professional organizations. The most practitioner-
oriented organization is the Computer Society of the IEEE (Institute of
Electrical and Electronics Engineers). The IEEE Computer Society publishes the
IEEE Computer and IEEE Software magazines. For membership information,
see www.computer.org.
The original professional organization was the Association for Computing Machinery, or
ACM. The ACM publishes Communications of the ACM and many
special-interest magazines. It tends to be somewhat more academically oriented
than the IEEE Computer Society. For membership information, see
www.acm.org.

Make a Free Website with Yola.