Você está na página 1de 17

KeyTrends

TopTopics

Channels

Reports

International

About Subscribe Contact Advertise

SubscribetoReadWriteWeb

Home Archives Features Tags BestofRWW Featured:ReadWriteCloud

Se arch powe re d by Lijit

Top 10 Concepts That Every Software Engineer Should Know


ByAlex Iskold/July22,20088:21PM/78 Com m ents HackerNew s
Share 43

open in browser customize

free license

pdfcrowd.com

Thefutureofsoftwaredevelopmentisaboutgoodcraftsmen.With infrastructurelikeAmazonWebServicesandanabundanceofbasic libraries,itnolongertakesavillagetobuildagoodpieceofsoftware. Thesedays,acoupleofengineerswhoknowwhattheyaredoingcan delivercompletesystems.Inthispost,wediscussthetop10concepts softwareengineersshouldknowtoachievethat.


Aw ordfrom oursponsor:

Twiendsisthenumber1serviceforgrowingyouronlinesocialnetwork. Hundredsofthousandsofmembershavealreadyjoined,andaregrowingtheir Twitter,FacebookandYouTubecommunitieseveryday.Bestofall,theservice canbeusedcompletelyforfree,sowhatareyouwaitingfor?Jointoday.


RWWSPONSORS

Adpow eredbyBTBuckets

Asuccessfulsoftwareengineerknowsandusesdesignpatterns,activelyrefactorscode, writesunittestsandreligiouslyseekssimplicity.Beyondthebasicmethods,thereare conceptsthatgoodsoftwareengineersknowabout.Thesetranscendprogramming languagesandprojectstheyarenotdesignpatterns,butratherbroadareasthatyou needtobefamiliarwith.Thetop10conceptsare: 1. Interfaces 2. ConventionsandTemplates 3. Layering 4. AlgorithmicComplexity 5. Hashing 6. Caching

open in browser customize

free license

pdfcrowd.com

7. Concurrency 8. CloudComputing 9. Security 10. RelationalDatabases

10.RelationalDatabases
RelationalDatabaseshaverecentlybeengettingabadnamebecause theycannotscalewelltosupportmassivewebservices.Yetthiswasone ofthemostfundamentalachievementsincomputingthathascarriedus fortwodecadesandwillremainforalongtime.Relationaldatabasesare excellentforordermanagementsystems,corporatedatabasesandP&L data. Atthecoreoftherelationaldatabaseistheconceptofrepresenting informationinrecords.Eachrecordisaddedtoatable,whichdefinesthe typeofinformation.Thedatabaseoffersawaytosearchtherecords usingaquerylanguage,nowadaysSQL.Thedatabaseoffersawayto correlateinformationfrommultipletables. Thetechniqueofdatanormalizationisaboutcorrectwaysofpartitioningthedataamongtablesto minimizedataredundancyandmaximizethespeedofretrieval.

9.Security
Withtheriseofhackinganddatasensitivity,thesecurityisparamount. Securityisabroadtopicthatincludesauthentication,authorization,and informationtransmission. Authenticationisaboutverifyinguseridentity.Atypicalwebsiteprompts forapassword.TheauthenticationtypicallyhappensoverSSL(secure socketlayer),awaytotransmitencryptedinformationoverHTTP. Authorizationisaboutpermissionsandisimportantincorporatesystems, particularlythosethatdefineworkflows.TherecentlydevelopedOAuth

FOLLOW@RWWONTWITTER
ReadWriteCloud:WhatitTakestoRuntheTopVisited WebSites[Infographic]http://rww.to/fkaCjaabout3hours
ago

ReadWriteCloud:CloudPoll:HowDisruptiveIsCloud FoundrytothePlatformMarket?http://rww.to/fr2GST
about11hoursago

open in browser customize

free license

pdfcrowd.com

protocolhelpswebservicestoenableuserstoopenaccesstotheir privateinformation.ThisishowFlickrpermitsaccesstoindividualphotos ordatasets. Anothersecurityareaisnetworkprotection.Thisconcernsoperatingsystems,configurationand monitoringtothwarthackers.Notonlynetworkisvulnerable,anypieceofsoftwareis.Firefox browser,marketedasthemostsecure,hastopatchthecodecontinuously.Towritesecurecodefor yoursystemrequiresunderstandingspecificsandpotentialproblems.

ReadWriteHack:5FreeEBooksandTutorialsfor LearningPHPhttp://rww.to/fv1RiLabout11hoursago ReadWriteHack:YouGotNoSQLinMySQL:Memcached PlugininMySQLTechnologyPreview http://rww.to/hRG5Dgabout12hoursago ReadWriteBiz:HowtoKeepCompanyDataSafeon Employees'PersonalDeviceshttp://rww.to/geosNgabout


12hoursago

8.CloudComputing
InourrecentpostReachingForTheSkyThroughComputeCloudswe talkedabouthowcommoditycloudcomputingischangingthewaywe deliverlargescalewebapplications.Massivelyparallel,cheapcloud computingreducesbothcostsandtimetomarket. Cloudcomputinggrewoutofparallelcomputing,aconceptthatmany problemscanbesolvedfasterbyrunningthecomputationsinparallel. Afterparallelalgorithmscamegridcomputing,whichranparallel computationsonidledesktops.Oneofthefirstexampleswas SETI@homeprojectoutofBerkley,whichusedspareCPUcyclesto crunchdatacomingfromspace.Gridcomputingiswidelyadoptedbyfinancialcompanies,whichrun massiveriskcalculations.Theconceptofunderutilizedresources,togetherwiththeriseofJ2EE platform,gaverisetotheprecursorofcloudcomputing:applicationservervirtualization.Theidea wastorunapplicationsondemandandchangewhatisavailabledependingonthetimeofdayand useractivity. Today'smostvividexampleofcloudcomputingisAmazonWebServices,apackageavailablevia API.Amazon'sofferingincludesacloudservice(EC2),adatabaseforstoringandservinglarge mediafiles(S3),anindexingservice(SimpleDB),andtheQueueservice(SQS).Thesefirstblocks alreadyempoweranunprecedentedwayofdoinglargescalecomputing,andsurelythebestisyet tocome.

follow@rwwonTwitter

open in browser customize

free license

pdfcrowd.com

7.Concurrency
Concurrencyisonetopicengineersnotoriouslygetwrong,and understandiblyso,becausethebraindoesjugglemanythingsatatime andinschoolslinearthinkingisemphasized.Yetconcurrencyis importantinanymodernsystem. Concurrencyisaboutparallelism,butinsidetheapplication.Mostmodern languageshaveaninbuiltconceptofconcurrency;inJava,it's implementedusingThreads. Aclassicconcurrencyexampleistheproducer/consumer,wherethe producergeneratesdataortasks,andplacesitforworkerthreadsto consumeandexecute.ThecomplexityinconcurrencyprogrammingstemsfromthefactThreads oftenneedstooperateonthecommondata.EachThreadhasitsownsequenceofexecution,but accessescommondata.Oneofthemostsophisticatedconcurrencylibrarieshasbeendevelopedby DougLeaandisnowpartofcoreJava.

6.Caching
Nomodernwebsystemrunswithoutacache,whichisaninmemorystore thatholdsasubsetofinformationtypicallystoredinthedatabase.The needforcachecomesfromthefactthatgeneratingresultsbasedonthe databaseiscostly.Forexample,ifyouhaveawebsitethatlistsbooks thatwerepopularlastweek,you'dwanttocomputethisinformationonce andplaceitintocache.Userrequestsfetchdatafromthecacheinstead ofhittingthedatabaseandregeneratingthesameinformation. Cachingcomeswithacost.Onlysomesubsetsofinformationcanbe storedinmemory.Themostcommondatapruningstrategyistoevict itemsthatareleastrecentlyused(LRU).Theprunningneedstobe efficient,nottoslowdowntheapplication. Alotofmodernwebapplications,includingFacebook,relyonadistributedcachingsystemcalled

open in browser customize

free license

pdfcrowd.com

Memcached,developedbyBradFirzpatrickwhenworkingonLiveJournal.Theideawastocreatea cachingsystemthatutilisessparememorycapacityonthenetwork.Today,thereareMemcached librariesformanypopularlanguages,includingJavaandPHP.

5.Hashing
Theideabehindhashingisfastaccesstodata.Ifthedataisstored sequentially,thetimetofindtheitemisproportionaltothesizeofthelist. Foreachelement,ahashfunctioncalculatesanumber,whichisusedas anindexintothetable.Givenagoodhashfunctionthatuniformly spreadsdataalongthetable,thelookuptimeisconstant.Perfecting hashingisdifficultandtodealwiththathashtableimplementations supportcollisionresolution. Beyondthebasicstorageofdata,hashesarealsoimportantin distributedsystems.Thesocalleduniformhashisusedtoevenly allocatedataamongcomputersinaclouddatabase.Aflavorofthis techniqueispartofGoogle'sindexingservice;eachURLishashedto particularcomputer.Memcachedsimilarlyusesahashfunction. Hashfunctionscanbecomplexandsophisticated,butmodernlibrarieshavegooddefaults.The importantthingishowhashesworkandhowtotunethemformaximumperformancebenefit.

4.AlgorithmicComplexity
Therearejustahandfulofthingsengineersmustknowaboutalgorithmic complexity.FirstisbigOnotation.IfsomethingtakesO(n)it'slinearinthe sizeofdata.O(n^2)isquadratic.Usingthisnotation,youshouldknow thatsearchthroughalistisO(n)andbinarysearch(throughasortedlist) islog(n).Andsortingofnitemswouldtaken*log(n)time. Yourcodeshould(almost)neverhavemultiplenestedloops(aloop insidealoopinsidealoop).Mostofthecodewrittentodayshoulduse Hashtables,simplelistsandsinglynestedloops.

open in browser customize

free license

pdfcrowd.com

Duetoabundanceofexcellentlibraries,wearenotasfocusedon efficiencythesedays.That'sfine,astuningcanhappenlateron,after yougetthedesignright. Elegantalgorithmsandperformanceissomethingyoushouldn'tignore.Writingcompactand readablecodehelpsensureyouralgorithmsarecleanandsimple.

POPULARTAGS

google twitter facebook iphone mobile apple android microsoft search trends socialmedia
youtube music privacy video yahoo security ipad advertising firefox amazon myspace developers rss socialnetworks socialnetworking semanticweb apps chrome blogging augmentedreality sponsors marketing mozilla news digg foursquare mobileweb location email
friendfeed browsers api gmail wikipedia bing adobe nyt china kindle

3.Layering
Layeringisprobablythesimplestwaytodiscusssoftwarearchitecture.It firstgotseriousattentionwhenJohnLakospublishedhisbookabout LargescaleC++systems.Lakosarguedthatsoftwareconsistsoflayers. Thebookintroducedtheconceptoflayering.Themethodisthis.For eachsoftwarecomponent,countthenumberofothercomponentsit relieson.Thatisthemetricofhowcomplexthecomponentis. Lakoscontendedagoodsoftwarefollowstheshapeofapyramid;i.e., there'saprogressiveincreaseinthecummulativecomplexityofeach component,butnotintheimmediatecomplexity.Putdifferently,agood softwaresystemconsistsofsmall,reusablebuildingblocks,eachcarryingitsownresponsibility.Ina goodsystem,nocyclicdependenciesbetweencomponentsarepresentandthewholesystemisa stackoflayersoffunctionality,formingapyramid. Lakos'sworkwasaprecursortomanydevelopmentsinsoftwareengineering,mostnotably Refactoring.Theideabehindrefactoringiscontinuouslysculptingthesoftwaretoensureit'is structurallysoundandflexible.AnothermajorcontributionwasbyDrRobertMartinfromObject Mentor,whowroteaboutdependeciesandacyclicarchitectures AmongtoolsthathelpengineersdealwithsystemarchitectureareStructure101developedby Headwaysoftware,andSA4Jdevelopedbymyformercompany,InformationLaboratory,andnow availablefromIBM.

JOBS
JavaSoftware Engineer
Quotient,Inc. Herndon,VA

InteractiveFlash Developer
BeanCreative Alexandria,VA

.NETSoftware Engineer
RedfishTechnology's Client Bethesda,MD

UIU/WebDeveloper
ROCS Mclean,VA

Sr.UIDesigner
Netw orkSolutions Herndon,VA
POWEREDBY

WebDeveloper
Geocentric Bethesda,MD (dow ntow nBeth...

2.ConventionsandTemplates
Namingconventionsandbasictemplatesarethemostoverlooked

MoreJobs>

open in browser customize

free license

pdfcrowd.com

softwarepatterns,yetprobablythemostpowerful. Namingconventionsenablesoftwareautomation.Forexample,Java Beansframeworkisbasedonasimplenamingconventionforgettersand setters.AndcanonicalURLsindel.icio.us:http://del.icio.us/tag/software taketheusertothepagethathasallitemstaggedsoftware. Manysocialsoftwareutilisenamingconventionsinasimilarway.For example,ifyourusernameisjohnsmiththenlikelyyouravataris johnsmith.jpgandyourrssfeedisjohnsmith.xml. Namingconventionsarealsousedintesting,forexampleJUnitautomaticallyrecognizesallthe methodsintheclassthatstartwithprefixtest. ThetemplatesarenotC++orJavalanguageconstructs.We'retalkingabouttemplatefilesthat containvariablesandthenallowbindingofobjects,resolution,andrenderingtheresultfortheclient. ColdFusionwasoneofthefirsttopopularizetemplatesforwebapplications.Javafollowedwith JSPs,andrecentlyApachedevelopedhandygeneralpurposetemplatingforJavacalledVelocity. PHPcanbeusedasitsowntemplatingenginebecauseitsupportsevalfunction(becarefulwith security).ForXMLprogrammingitisstandardtouseXSLlanguagetodotemplates. FromgenerationofHTMLpagestosendingstandardizedsupportemails,templatesareanessential helperinanymodernsoftwaresystem.

MoreJobs> PostaJob>

RWWPARTNERS

1.Interfaces
Themostimportantconceptinsoftwareisinterface.Anygoodsoftwareis amodelofareal(orimaginary)system.Understandinghowtomodelthe problemintermsofcorrectandsimpleinterfacesiscrucial.Lotsof systemssufferfromtheextremes:clumped,lengthycodewithlittle abstractions,oranoverlydesignedsystemwithunnecessarycomplexity andunusedcode. Amongthemanybooks,AgileProgrammingbyDrRobertMartinstands

open in browser customize

free license

pdfcrowd.com

outbecauseoffocusonmodelingcorrectinterfaces. Inmodeling,therearewaysyoucaniteratetowardstherightsolution. Firstly,neveraddmethodsthatmightbeusefulinthefuture.Beminimalist,getawaywithaslittleas possible.Secondly,don'tbeafraidtorecognizetodaythatwhatyoudidyesterdaywasn'tright.Be willingtochangethings.Thirdly,bepatientandenjoytheprocess.Ultimatelyyouwillarriveata systemthatfeelsright.Untilthen,keepiteratinganddon'tsettle.

Conclusion
Modernsoftwareengineeringissophisticatedandpowerful,withdecadesofexperience,millionsof linesofsupportingcodeandunprecidentedaccesstocloudcomputing.Today,justacoupleof smartpeoplecancreatesoftwarethatpreviouslyrequiredtheeffortsofdozensofpeople.Buta goodcraftsmanstillneedstoknowwhattoolstouse,whenandwhy. In this post we discussed concepts that are indispensible for software engineers. And now tell us please what you would add to this list. Share with us what concepts you find indispensible in your daily software engineering journeys. Image credit: cbtplanet.com

See Also
AdobeAnnouncesOpen-SourceCollaborationwithSourceforge NoAccessfortheAxis:SourceForgeBowstoGovernmentDemands 12UnitTestingTipsforSoftwareEngineers IcebergLaunches,NowEveryoneCanProgram

open in browser customize

free license

pdfcrowd.com

PostedinAnalysisandtaggedwithsoftwaredevelopment,softwareengineers

PriorPost

NextPost

Subscribe

EmailThis

PrintThis

Digg

Share

Showing20of78comments
GinaBartley

Sortbynewestfirst

Butsurprising,prettygoodpieceofwriting,particularanalyticoutlook,hopetoreadfromyou oncemore. valentinedayflowerdeliveryUSA


2monthsago Like Reply

KanserHaberleri

AlgorithmcomplexityandRelationalDB,thosetwopointsarereallygood.DBknowledgeis essentialforbuildingaperformancebasedarchitecture.http://www.maviadres.com
2monthsago Like Reply

javierlop

TenimportantConceptstohaveinmind.

open in browser customize

free license

pdfcrowd.com

javierlop www.javierlop.com
2yearsago Like Reply

sampaul

OhhGreatcommentaboutsoftwaredevelopmentijustwantedtotellaboutSoftware DevelopmentServicesifuwantmoreinformationtocheckoutmylinks http://www.cattechnologies.com/offshorePHPDevelopment.aspx


2yearsago Like Reply

MickRussom

@DAshcart

Softwarewrittenforhardwarebymostlyhardwareisnotwithouterror,buttheyfocuson routing,placement,simulationofaparticularproblemoreffectandsolveproblemswithhighly purposebuiltsoftware.TheauthorlistofsayaXilinxcompilerisamazingshorttoapileof flamingdogcraplikeC#/.NET/VisualStudio.Youcandomoredifficultandversatilethings withatoolchaindesignedforhardwarepeoplebyhardwarepeoplethan1000software clownidiotsmakingC#inthewakeofJavainthewakeofC++inthewakeof...younameit.


2yearsago Like Reply
free license

open in browser customize

pdfcrowd.com

JohnKelvie

Irespondedtothispostonmyownbloghttp://lightheatcode.com/?p=86takingissuewith yourviewofwhatisgoodinterfacedesign.

John
2yearsago Like Reply

BIRD

good!
2yearsago Like Reply

MikeBorozdin

@Mick,

Goodpoints,butnotforeveryoneandnotforeverysituation.Imeanyoucanhardlybuilda socialnetworkwebsitewithAssembler.Ontheotherhandyoucanhardlywritehardware drivers,operatingsystemsandeverythingthatislowlevelandperformancecriticalwithC#.

It'sallaboutchoosinganappropriatetoolforajob.

open in browser customize

free license

pdfcrowd.com

Regardingtheoriginalstory,I'dadd

#Communicationskills #Abilitytounderstandcustomersneeds #OOP #Networkingconcepts #Operatingsystemsconcepts


2yearsago 1Like Like Reply

erotikmarket

sadasddsfsdfsdfsdf
2yearsago Like Reply

seks

asdasdsadfsdfdsfs
2yearsago Like Reply

open in browser customize

free license

pdfcrowd.com

sex

dsfsdfdsfsdfsdfsdf
2yearsago 1Like Like Reply

seks

dsdsdsjdsodsododsds
2yearsago Like Reply

sex

csdasdsaddsfdsfsd
2yearsago Like Reply

SpeakertoAnimals

Andit'sobviousfromthespamthisforumisreceivingthatyouguysbadlyneedCaptchaon thisblog!!!
2yearsago 1Like Like Reply

SpeakertoAnimals

@panos,that's"hubris,"not"hybris;"IexpectedaguywithaGreekhandlewouldknowthat :P
2yearsago Like Reply
free license

open in browser customize

pdfcrowd.com

AldoBucchi

WhataboutKnowledgeRepresentation? Softwareisallaboutmodelingrealityintoasimplifiedcontrolled,andeditablerepresentation. Eveniftoolschangeorbecomeabstracted(securityforexampleisnotsomethingIdon't reallylookforinsomedevelopersbecauseitissolvedinanotherlevel),themodelingability isalwaysnecessary.

Tocommunicate,todesign,tobuild.

http://en.wikipedia.org/wiki/Knowledge_representation
2yearsago Like Reply

Akshay

Thankyouverymuchforthisarticle.Iwasreallyexitedtoknowabouttheconcepts
2yearsago Like Reply

Diziizle

Lotsofprogrammersdoesn'tcareaboutsoftwaresecurity.Thisisalsoincludesthesecurity ofdatabase.Programmersthinkthatprogrammingisjustwritingthecodewhicisenoughfor doingthejob.Theydon'tcareforthesecuritypart.Customersdoesn'thaveinformation

open in browser customize

free license

pdfcrowd.com

aboutittoo.Allprogrammersshouldknowsomethingaboutsecurity.
2yearsago Like Reply

Pascal

AlgorithmcomplexityandRelationalDB,thosetwopointsarereallygood.DBknowledgeis essentialforbuildingaperformancebasedarchitecture.

http://www.codesplunk.com/?s=c ProgrammingLanguageQuestions&Review
2yearsago Like Reply

Oigen

Ihavenowordstosay,it'srockindeed

http://www.bangbull.com/details/23800BE4/Amazing_natural_girl
2yearsago Like Reply

MSubscribebyemail S RSS

Loadmorecomments

open in browser customize

free license

pdfcrowd.com

Realtimeupdatingisenabled.(Pause)

AddNewComment
Pleasewait

Login

blogcommentspoweredbyDISQUS

Home|Features|Trends|BestofRWW|Archives|Status ReadWriteWeb|Startups|SmallBusiness|Enterprise|CloudComputing|Developers|Mobile

AboutRWW|Subscribe|Contact|Advertise|FMTech 20032011ReadWriteWeb

open in browser customize

free license

pdfcrowd.com

Você também pode gostar