When I was developing my practice project for high-school graduation exam I did a mistake 15 minutes before end of dedicated time. I somehow deleted my source code. It was horrible and I knew that I did not have any time to rewrite it from a scratch. Fortunately I realized that my source code editor was automatically doing backups and that saved me.
I was lucky that time and I learnt my lesson that software factory cannot be chaos but it should be CHAOS: Continues Helpful Automated Organized and Smart. And I can tell that after 21 years I use more sophisticated software factory in my team which follows that principle:
I was lucky that time and I learnt my lesson that software factory cannot be chaos but it should be CHAOS: Continues Helpful Automated Organized and Smart. And I can tell that after 21 years I use more sophisticated software factory in my team which follows that principle:
IDE for development: allows fast writing/debugging/profiling of the code, documentation and configuration; the project setup must be generic so developers should be able to use any IDE without project setup change: Eclipse
Source code repository: provides effective & safe storing of the code, documentation and configuration with easy branching & merging option: Git, svn
Code review: helps with effective and quick code quality improvements: Eclipse, Git
Static code analyze: identifies a typical problems in the a code and enforces the best practices: SonarQube
Code review: helps with effective and quick code quality improvements: Eclipse, Git
Static code analyze: identifies a typical problems in the a code and enforces the best practices: SonarQube
Unit tests: ensures quality of the modules with all external dependencies mocked and good maintainability. Also provides safety net for a re-factoring and keeps information about developer intention and original specification. Runs from IDE or CI server: JUnit, Mockito
Software project management tool: makes builds easy from uniform build system and manages all dependencies: Maven
Continues integration server: continuously builds/tests software project and artifacts from source code and monitors executing of the external jobs: Jenkins
Repository manager: provides a centralized storage of the artifacts and dependencies: Nexus
Virtualization/cloud platform & tools: provides an infrastructure to deploy whole solution for engineering or production: Vagrant, Chef, Ansible, Docker, VirtualBox, AWS
Staging environment: place where all moving parts are assembled/integrated together: AWS
Pre-production environment: place where everything is ready for the production: AWS
API testing: makes sure that public APIs are working and integration is OK: FitNesse, SoapUI
E2E testing: allows front-end test automation: Selenium, FitNesse, Sikuli
Load testing: provides load tests capability and measure performance: JMeter
Test coverage: visualize and measure unit/integration/e2e test coverage: SonarQube with jacoco
Defect reporting: helps with the issues/defects tracking and management and forces agreed issue/defect workflow: JIRA
Test case management: helps to manage test cases, visualize results and test coverage map: Tarantula
Process: defines how the development will be organized and managed: SCRUM, Kanban, Scrumban
Workflow: defines the branching, commit & safe release strategy: Git flow
Documentation tool: everything is better then Word: DITA
API tool: helps build and document API (RESTful): Swagger
Collaboration tools: makes a remote communication and coordination easier: Skype, Webex, Mail, Confluence, Slack
Comments
Post a Comment