Escolar Documentos
Profissional Documentos
Cultura Documentos
TopTopics
Channels
Reports
International
SubscribetoReadWriteWeb
free license
pdfcrowd.com
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
free license
pdfcrowd.com
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
free license
pdfcrowd.com
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
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
free license
pdfcrowd.com
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.
free license
pdfcrowd.com
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>
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
free license
pdfcrowd.com
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
free license
pdfcrowd.com
PostedinAnalysisandtaggedwithsoftwaredevelopment,softwareengineers
PriorPost
NextPost
Subscribe
EmailThis
PrintThis
Digg
Share
Showing20of78comments
GinaBartley
Sortbynewestfirst
KanserHaberleri
AlgorithmcomplexityandRelationalDB,thosetwopointsarereallygood.DBknowledgeis essentialforbuildingaperformancebasedarchitecture.http://www.maviadres.com
2monthsago Like Reply
javierlop
TenimportantConceptstohaveinmind.
free license
pdfcrowd.com
javierlop www.javierlop.com
2yearsago Like Reply
sampaul
MickRussom
@DAshcart
pdfcrowd.com
JohnKelvie
Irespondedtothispostonmyownbloghttp://lightheatcode.com/?p=86takingissuewith yourviewofwhatisgoodinterfacedesign.
John
2yearsago Like Reply
BIRD
good!
2yearsago Like Reply
MikeBorozdin
@Mick,
It'sallaboutchoosinganappropriatetoolforajob.
free license
pdfcrowd.com
Regardingtheoriginalstory,I'dadd
erotikmarket
sadasddsfsdfsdfsdf
2yearsago Like Reply
seks
asdasdsadfsdfdsfs
2yearsago Like Reply
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
pdfcrowd.com
AldoBucchi
Tocommunicate,todesign,tobuild.
http://en.wikipedia.org/wiki/Knowledge_representation
2yearsago Like Reply
Akshay
Thankyouverymuchforthisarticle.Iwasreallyexitedtoknowabouttheconcepts
2yearsago Like Reply
Diziizle
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
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
free license
pdfcrowd.com