We analysed more than 40 000 000 questions and answers on stackoverflow.com to bring you the top of most mentioned books (5720 in total)

How we did it:

  • We got database dump of all user-contributed content on the Stack Exchange network (can be downloaded here)
  • Extracted questions and answers made on stackoverflow
  • Found all amazon.com links and counted it
  • Created tag-based search for your convenience
  • Brought it to you

For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks

Recomended tags

Top business-logic-layer books mentioned on stackoverflow.com

Working Effectively with Legacy Code

Michael C. Feathers

The average book on Agile software development describes a fairyland of greenfield projects, with wall-to-wall tests that run after every few edits, and clean & simple source code.


The average software project, in our industry, was written under some aspect of code-and-fix, and without automated unit tests. And we can't just throw this code away; it represents a significant effort debugging and maintaining. It contains many latent requirements decisions. Just as Agile processes are incremental, Agile adoption must be incremental too. No more throwing away code just because it looked at us funny.


Mike begins his book with a very diplomatic definition of "Legacy". I'l skip ahead to the undiplomatic version: Legacy code is code without unit tests.


Before cleaning that code up, and before adding new features and removing bugs, such code must be de-legacified. It needs unit tests.


To add unit tests, you must change the code. To change the code, you need unit tests to show how safe your change was.


The core of the book is a cookbook of recipes to conduct various careful attacks. Each presents a particular problem, and a relatively safe way to migrate the code towards tests.


Code undergoing this migration will begin to experience the benefits of unit tests, and these benefits will incrementally make new tests easier to write. These efforts will make aspects of a legacy codebase easy to change.


It's an unfortunate commentary on the state of our programming industry how much we need this book.

More on Amazon.com

Domain-driven Design

Eric Evans

Describes ways to incorporate domain modeling into software development.

More on Amazon.com

Patterns of Enterprise Application Architecture

Martin Fowler

This volume is a handbook for enterprise system developers, guiding them through the intricacies and lessons learned in enterprise application development. It provides proven solutions to the everyday problems facing information systems developers.

More on Amazon.com

Architecting Microsoft .NET Solutions for the Enterprise

Dino Esposito, Andrea Saltarello

Provides information on designing and building effective enterprise solutions, covering such topics as UML, the business layer, the service layer, and the data access layer.

More on Amazon.com

Professional Enterprise .NET

Jon Arking, Scott Millett

Comprehensive coverage to help experienced .NET developers create flexible, extensible enterprise application code If you're an experienced Microsoft .NET developer, you'll find in this book a road map to the latest enterprise development methodologies. It covers the tools you will use in addition to Visual Studio, including Spring.NET and nUnit, and applies to development with ASP.NET, C#, VB, Office (VBA), and database. You will find comprehensive coverage of the tools and practices that professional .NET developers need to master in order to build enterprise more flexible, testable, and extensible .NET applications with minimal upfront costs. Helps C#, VB.Net, and ASP.NET developers who wish to migrate both their applications and their own skillsets to newer, more flexible enterprise methodologies Describes each new pattern or feature along with its benefits, then outlines the pros and cons of its implementation Includes an introduction to enterprise development and a comprehensive overview of the differences between new enterprise patterns and older, traditional Microsoft programming Explains how to implement these patterns by upgrading an existing code base Covers benefits including flexibility, automated testing, extensibility, and separation; modular code; test-driven development, unit test, test automation, and refactoring; inversion of control; and object relational mapping Also covers enterprise design patterns: MVC including Ruby on Rails, Monorail, and ASP.NET MVC, MVP, observer, and more Contains a primer on object-oriented design Professional Enterprise .NET focuses on the often-inevitable compromise between forward-thinking design and the needs of business, helping you build applications that serve both.

More on Amazon.com

javac#c++c.netalgorithmphppythonjavascriptdesignasp.netlanguage-agnosticdesign-patternsandroidoopsqllinuxdatabasematharchitectureperformanceprogramming-languagesresourcesuser-interfacemysqlhtmlsql-serverwindowsiphonerubyiosmultithreadingdata-structuresresearchobjective-csecuritycomputer-scienceassemblyruby-on-railsjquerydatabase-designdocumentationasp.net-mvcunit-testingrcompiler-constructiontestingunixcsssoftware-engineeringwpfartificial-intelligenceweb-applicationsvb.netreferenceclassvisual-studioweb-servicesoptimizationarraysnetworkingproject-managementjava-eeumleclipseosxcoding-styleagilegraphicswinformsoperating-systemmemory-managementoracleembeddedspringwinapivisual-c++image-processingmodel-view-controllerajaxhardwareparsingfunctional-programmingregexamazonmemorytddtheoryinheritancefunction3dstatisticsperlopenglkernelopen-sourcexcodeapistringnlpxmlcocoawcfentity-frameworkdebuggingmachine-learninginterfacerefactoringactionscript-3concurrencymatlabrestdomain-driven-designdelphic#-4.0stlgraphpointersnode.jsscriptingopengl-estemplatessharepointidelispsilverlightdjangoprocessparallel-processingamazon-web-servicesuntaggedcommand-linex86scalasocketssql-server-2008visual-studio-2008frameworkshtml5audioobjectlistneural-networkproject-planningvb6visual-studio-2010flexswinglinux-kernelstandardslogicproductivitysearchencryptionc++11mobilec++-faqqtscrumgccscalabilityf#genericsmfcflashhaskelltsqlsortingsoftware-designversion-controllinqsql-server-2005treeweb-scrapingterminologyimagemethodologyasynchronousvbaxamlvariablesshellasp.net-mvc-3boostexcelooadopencvusbcryptographyc#-3.0eventsphysicstypesapachepluginsnetwork-programminghibernatetcpclojurematrixsyntaxmethodsssasrecursionsignal-processinggeometrycachingfortranpostgresqlcocoa-touchdependency-injectionschemestackipadgame-enginefileclass-designauthenticationinterpreterdeploymentarduinomodelruby-on-rails-32djsondirectxbluetoothfrontendusabilityspring-mvccomputer-visionformslambdasoawebinternalscollectionslinux-device-driverfilesystemsejbexceptionnhibernatevectorqadllcomlanguage-design.net-3.5linq-to-sqlvideogarbage-collectionhttpembedded-linuxjvmsqlitenaming-conventionssystembashimplementationmvvmtimezend-frameworkwebsitebddjspdata-access-layerthread-safetyscientific-computingvalidationindexingjunitosdevmockingopensslconstructorgrailsuser-experiencexpathreal-timerelational-databasecompilationmodelingtextmongodbdata-modelingormextreme-programmingprotocolsdevelopment-environmentprojectwebformsanalysisposixlow-levelclient-serversingletonservletsdata-miningsynchronizationclrcomparisonlanguage-featuresamazon-product-apimonocommon-lispmicrocontrollercontinuous-integrationhadoopxnacomplexity-theoryasp.net-mvc-4diagramcudasimulationencapsulationrandomhyperlinkdommacrosmusicshaderprojectsgwtjoinms-accesse-commercelinked-listwindows-phone-7linkerbinarydictionarystaticanti-patternscontent-management-systempolymorphismloopsstructurevisualizationstructactionscriptjpasvndata-warehouseabstract-classgroovyclosurescss3distributedprologtfsexception-handlinganimationdynamic-programmingdiscrete-mathematicssocial-networkingiorepository-patternif-statementcpuhashautomated-testssslkeyboardcode-reviewdynamicmetaprogrammingseleniumeclipse-pluginestimationheapgenetic-algorithmcode-generationlockingclassificationolapdrupalroboticsreverse-engineeringspecificationscomputational-geometryazurenormalizationmemory-leaksdriverssisopenclprofilingopengl-es-2.0grammarraspberry-picastingjava-meelectronicsmsbuildpthreadsarmxhtmlscreen-scrapingpropertiescanvastomcatuser-interactionrenderingpython-3.xstored-proceduresinputnullandroid-ndknosql.net-4.0scopeplsqlhistorydevice-drivervhdlios5pattern-matchingmessagingrequirementscommentscpu-architectureubuntujsfcommunicationasp.net-ajaxnunitipcinversion-of-controldesign-principlesclouderlangdefinitionworkflown-tierxsltnamespacesmoduleblogssolid-principlessharepoint-2010gitgpudelegatesextjsdatasetlayoutsoaphigh-availabilityfftmakefileintegration-testingparameterscomputer-architecturenetbeansswiftruntimereporting-servicesquery-optimizationlegacygoogle-app-engineios4windows-7pocograph-theorydsltransactionsasp-classicautomationconfigurationsharepoint-2007workflow-foundationuse-caseinitializationfacebookreflectionbuttoniteratorado.netbig-odata-visualization