33 Top Tools and Resources for Software Projects

Startup Tools

Working on a new start-up? Below is my list of must-have Top Tools and Resources for Software Projects. These are the some of the tools that I have enjoyed using in the past. Please feel to add your own in the comments.

Requirement Gathering

  • User story is a tool used in Agile software development to capture a description of a software feature from an end-user perspective. The user story describes the type of user, what they want and why.
    Check out – http://www.storyboardthat.com/articles/software-development/agile-user-stories
  • Mind Map is a diagram used to visually organize information. A mind map is often created around a single concept, drawn as an image in the center of a blank page, to which associated representations of ideas such as images, words and parts of words are added. Major ideas are connected directly to the central concept, and other ideas branch out from those. Mind maps can be drawn by hand, either as “rough notes” during a lecture, meeting or planning session, for example, or as higher quality pictures when more time is available. Check out – http://www.mindmapping.com/

Text Editor
Bracket is a modern, open source text editor that understands web design. Honestly, I have tried couple of editors in the past like Sublime, NotePad++, TextPad, etc. but by far Bracket is the best.

Mockup tools
My all time favorite is  Balsamiq. Click here for an article from mashable – 9 Excellent Tools for Design Mockups. Also, check out MockFlow (design UI workflows). I have heard good reviews about them. Another similar tool, I have used is GenMyModel . Worth giving it a shot.

Project Management
The best in my experience for small team Project Management and Todo tasks is Basecamp. Basecamp’s unique blend of tools is everything any team needs to stay on the same page about whatever they’re working on. Check it out – https://basecamp.com/

Database Design
You can use locally hosted tool like SQL Management Studio or SQL Developer to design, develop and maintain databases or you could online tools like Vertabelo.

Web Dev, Debug and API Tools

  • JSFiddle is an online playground to code and share code, this time with many flavors of JavaScript. Check it out – http://jsfiddle.net/
  • Koding is a software development in an online environment with lots of social activity. It’s StackExchange + Facebook + Cloud9 + Virtual Machines + a few other things. It’s a great idea and worth a try. Check it out – https://koding.com/
  • Regular expression tester with syntax highlighting, contextual help, video tutorial, reference, and searchable community patterns. Check it out – http://regexr.com/
  • Firebug is a free and open-source web browser extension for Mozilla Firefox that facilitates the live debugging, editing, and monitoring of any website’s CSS, HTML, DOM, XHR, and JavaScript. This one tool i cannot live without – http://getfirebug.com/whatisfirebug
  • Fiddler is a free web debugging proxy for any browser, system or platform. Check it out – http://www.telerik.com/fiddler
  • Rest API – One of the best testing REST API services is Postman. Please give it a try at https://www.getpostman.com/. Another super cool Firefox extension I have used before and love it is RestClient for Firefox. And of course I cannot miss out on swagger.io API Framework.

Team Messaging
Slack brings all your communication together in one place. It’s real-time messaging, archiving and search for modern teams.

Task Management
Trello is the free, flexible, and visual way to organize anything with anyone.

Issue Tracking
Undoubtedly the best in this space is Atlassian Jira.

Version Control
Stash (Bitbucket) – Git, your way. See what makes Bitbucket the Git solution for professional teams.

SourceTree is a free Mercurial and Git Client for Windows and Mac that provides a graphical interface for your Hg and Git repositories.

Build Tools
Integration build tools have plenty to do. They fetch software from the SCM, figure out dependencies, compile everything to make the deliverable product, package it up, and even deploy to test servers. Few nice Integration tools include:

IDEs in the Cloud
IDEs are traditionally used locally, on the developer’s workstation; however, some companies, including Cloud9, Compilr, and Nitrous, want developers to use their hosted IDEs in the cloud.

Continuous Integration (CI)
Per Wikipedia, Continuous integration (CI) is the practice, in software engineering, of merging all developer working copies to a shared mainline several times a day. It was first named and proposed by Grady Booch in his 1991 method,[1] although Booch did not advocate integrating several times a day. It was adopted as part of extreme programming (XP), which did advocate integrating more than once per day, perhaps as many as tens of times per day.

The CI server that everyone has heard of is Jenkins, but there are plenty more. Others include JetBrain’s TeamCity, CruiseControl, and Atlassian’s Bamboo. CI servers are also available as cloud services. Hosted CI has the added challenge of connecting with other hosted services. Codeship and Travis can all read from GitHub and write to Heroku.

Really useful links:
What are some great online tools for startups?
Top Startup Tools
Startup Tools by Steve Blank

REST vs SOAP

REST is an architecture, SOAP is a protocol.

Per Wikipedia, Representational state transfer (REST) is the software architectural style of the World Wide Web.  REST’s coordinated set of constraints, applied to the design of components in a distributed hypermedia system, can lead to a higher-performing and more maintainable software architecture. To the extent that systems conform to the constraints of REST they can be called RESTful. RESTful systems typically, but not always, communicate over Hypertext Transfer Protocol (HTTP) with the same HTTP verbs (GET, POST, PUT, DELETE, etc.) that web browsers use to retrieve web pages and to send data to remote servers.

And SOAP, originally an acronym for Simple Object Access Protocol, is a protocol specification for exchanging structured information in the implementation of web services in computer networks. It uses XML Information Set for its message format, and relies on application layer protocols, most notably Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP), for message negotiation and transmission.

So What is difference between the two?

 RESTSOAP
Business logicUses URI to expose business logicUses services interfaces
CacheableREST reads can be cached built in to the architectureRPC communications are often not cached as part of the HTTP stack
ComplexitySimple HTTP requests that return results in JSONSOAP is a more complex API that communicates by passing XML around
Data FormatHTML, JSon, XML, Plain text, etc.XML
Messaging SupportClient handles communication failure by re-trying.SOAP has successful/retry logic built in (WS-ReliableMessaging)
Mostly usedPublic API'sEnterprises
OperationsGET,POST,PUT,DELETEPOST
OverheadLess bandwidth and resources.More bandwidth and resources. SOAP Envelope to wrap each calls.
ProtocolHTTP (Typically)HTTP, FTP, SMTP, etc.
SecuritySSLSOAP supports SSL (just like REST) it also supports WS-Security
ShareYou can easily share the URL around.Unable to share the URI. SOAP describes a series of methods, along with their parameters and return values.
SpecificationLooseRigid
Transactions SupportYes, but it isn’t as comprehensive and isn’t ACID compliantFull Supports (WS-AtomicTransaction)
WADL/WSDLWADLWSDL

 

  • REST is good for exposing public API’s over the internet to handle CRUD operations.
  • REST is focused on accessing named resources through a single consistent interface.
  • REST is implementation-agnostic and much more transparent, and this makes it great for public APIs.
  • REST version are simpler, clearer, run faster, and uses less bandwidth.
  • SOAP brings focuses on operations and exposing pieces of application logic (not data) as services.
  • SOAP is focused on accessing named operations, each implement some business logic through different interfaces.
  • SOAP has very little if anything to do with the Web. REST provides true “Web services” based on URIs and HTTP.

References: