Softwares are classified in following categories:-
1) Desktop application
2) Desktop web
3) Mobile web
4) Mobile app
5) Web services / APIs
6) BI reporting
I am trying to list down some of the common practice being followed for development. However, I am keeping BI out of this group as the applicaiton development needs are different. The technology I am focusing here is Microsoft .net.
Following are marjor elements required to do application development :-
1) Infrastructure
2) Development tools
3) Configuration managment
5) Continuous integration / deployment
6) A process / methodology to be followed for managing SDLC
7) Release management
8) Service management (including incident, problem & change management)
In today's world where most of the organisations are moving into devops model where a single team is responsible to handle all the different phases of SDLC i.e. design, develop, deploy and run using agile methodolgy.
Let's address the elements separately.
Infrastructure
In past companies used to have physical machines (desktop / laptop/servers) for development, test, production environment. Over a period of time, these have been changed to virtual machines which provides easy scaling and build machines with required configuration on demand.
Most of the companies have infrastructure using blades and racks for provisioning servers. This provide flexibility to add storage, memory and CPU with very less effort and downtime of existing system is nearly negligible. Slowly this is also shifting to cloud be it private, public or hybrid.
Most commonly used OS is windows 7 professional for dev and windows 2012 server for test, production environments. All of these comes with default IIS webserver (7.5 / 8).
Development Tools
There is a huge list of things which need to be taken care when it comes to development. We need to further break it into develop, package, deploy, test and automation plays a big role into moving fast and with quality.
Here is the list of tools used in different phases :-
1) Configuraiton management- Team foudation system (TFS), Clear case, Github are available which provides configuration management. TFS stands out as it's seamlessly work with microsoft development and having most of capabilities of ALM as well. This provides the capability of code branch/merge ability, continous integration using TFS build , integration of automated test, quality checks etc.
2) Development - Visual studio 2013 is widely used for developing application using C# / vb.net. There are different versions available for developing applications using .net framework version 2 to 4.5.
3) Testing - MSTest is used for the unit test and coded UI for automated test suit. There are other tools which are used for different purposes like servicetest, selenium, fiddler for service test. Jmeter, load runner is used for service performance testing. Visual studio profiler / ANT is used for performance testing and profiling of application. For DB performance test, SQL profiler / foglight are used based on fitment.
4) Packaging and deployment - Wix is used for packaging of application and create installable like MSI. Nuget is also used for packaging which can be shared as packages within organisation. For automated deployment tools like MSbuild, powershell, Nolio, CA automated deployment tools are used.
DB deployment package and incremental deployable script creation is another area which can be done in different ways. Tools like Flyway, DBdeploy, Microsoft DB project are very handy in achieving this. Howver, few organisations try to build their own custom tool to get the incremental scripts.
Tools like Jenkins are used to orchastrate the continous delivery pipeline.
Comments
Post a Comment
Thanks for your valuable comment