Methodology
At EObject Software, we use Agile Development and follow Extreme Programming (XP) in the outsouring.
Our development model
Prototyping: At EObject Software, we believe in delivering a fully functioning prototype to firms for testing and usage instead of waiting for "full project completion" before you can start enjoying the features of a new application.
Frequent delivery: In which functionality is incrementally released. Each aspect of the finished project is broken into different parts, which are sent through full quality assurance and testing before delivery to you. This way, the system is tested at your end, incrementally, ensuring that each part works the way it should.
Self-testing: Each system we build includes the ability to self-test, with the business logic automatically tested by the system itself. This is accomplished through the use of cutting-edge software tools including "cruise control" and others. Each time a programmer checks in code, the unit testing begins automatically, and the system administrator is notified if any problems occur.
Frequent testing during development:: uring the development phase, source code is reviewed and refactored at the end of each week. This prevents a common problem with traditional project development: weeks (even months) spent building and revising code, and ending up with code that is difficult to manage. By utilizing a strict code review and refactoring system at our facility, we can ensure a high level of adherence to industry quality and coding standards.
Agile Development
Up to 2/3 of all corporate IT firms are either now using, or have stated that they are considering turning to, agile programming.
The reasons for its popularity as a programming framework are numerous. Agile programming is lightweight and highly adaptable: as project needs change or corporate vision expands, it allows the programming to change. It also has by its definition increased ommunication and transparency, and decision-makers who want greater control in the development process are enjoying this benefit.
For instance, with traditional development approaches, it can take up to 6 months from project start to final implementation. By then, the original market may be gone, or the model outdated. But agile programming permits huge flexibility with incremental stop points that allow project re-evaluation, and the opportunity to make changes and controls as need. This is due to the fact that agile programming does not require the rigorous change control system employed with traditional development.
Instead, testing and analysis are continuous, conducted on a daily basis in many cases, with responses and impact determined each step of the way instead of at the end-point of final project completion. This allows huge flexibility, since development no longer is run on the assumption that corporate decision-makers know exactly what they need before they see it. Instead, agile programming is built on a highly collaborative model that encourages more direct user involvement, input, and change throughout the development process to in many cases improve upon the original concept.
Extreme Programming (XP)
Extreme programming gives us the methodology framework to deliver our solutions, based on its 4 main rules and practices:
Planning:
- Uses cases creation based on user stories
- Make frequent small releases
- The project is divided into iterations
- Iteration planning starts each iteratio
- A stand-up meeting starts each day
Designing:
- Simplicity - A simple design always takes less time to finish than a complex one. Keep things as simple as possible as long as possible by never adding functionality before it is scheduled
- Use UML artifacts (class diagrams, sequence and collaborators diagrams) to design the system as a team
- Never add functionality early - Concentrate on what is scheduled for today only
- Refactor whenever and wherever possible
Coding:
- Code must be written to agreed standards
- Code the unit test first
- Integrate often
Testing:
- All code must have unit tests
- All code must pass all unit tests before it can be released
Quality Control
Under the Agile Development, we are taking the following QA process to ensure the software quality.
- Bug Tracking:we use Bugzilla for bug tracking.
- Version Control:we use SVN source code version control system to manage different release for customer projects.
- Automatic Unit Test:write automatic unit test case for every function/bug to make sure it works as expected.
- Automatic System Test:write automatic system test case to every user story to make sure it works as customer expected
- Cruise Control Build System :Setup Cruise Control build system for every commit.
- Nightly Build:create full build every night and run tests against the build automatically.
- Pair Programming:two engineers sit together to finish core functions.
- Recruitment Process:we do believe qualified engineers provide quality services. Hence we only hire best talents with loyalty and responsibility. We are small company consists with group of geeks, and Happy Coding is our culture.
IP Protection
We understand that the protection of intellectual property is critical to our customers. At EObject, we have made the security control as part of our daily business process.
- Non Disclosure Agreements signed between client and employee
- Data backup and recovery mechanism
- Strict Internet/LAN access control, project-specific intranet setup and permission configuration
- Anti-virus applications installed, and virus definition will be updated once a week
- Firewall Protection
- File/Email exchange encrypted as requested
- Project-specific access control for information/knowledge