Our Software Development Methodology
From inception Opus has always been not only process driven but also has varied the processes depending upon the project and business processes of the Client. With us the customers have the confidence of working within their business processes.
Our process has designed base on extensive user feedback and best practices. The principles that we have followed while designing this process are:
Provide maximum transparency to the customer and the management throughout the entire project. One of the main concerns of the customers in any outsource project is the amount of visibility into the project. The clients give out a part of development that it very critical to their business success and often it goes into a black box. The client can know how the project is proceeding only at the end of the process.
Develop well-defined interfaces to the process to ensure easy interaction with clients and their vendors. Usually in product development many parties need to be involved to give complete the solution. Functional experts, Graphics artists, and business analysts need to interface with the development team to provide their feedback and comments.
Provide phased delivery through progressive builds of the solution. Often users cannot visualize what they are going to get without seeing it first. Specification on paper can look totally different once the development is done. Our process is geared to address this through deliverable at every stage and immediate course correction.
Provide the fastest delivery of services possible. With Internet time becoming the standard development paradigm for software development, our process stresses on maximum parallelism to quickest route to solution delivery.
Optimize the use of diverse skills needed in product development to maximize speed and productivity. All product development depends on a diverse set of skills and technologies. Our process through its interfaces and phases aims to accommodate use of resources with diverse expertise for specific tasks in the system development. Our developers and project managers are trained in specific technology tracks – enterprise technologies, core Internet development, databases and QA. They are used in different projects depending on the need to minimize overhead.
Our process consists of the following phases. Each phase has a documented methodology and specific deliverables associated with it. The methodologies and sample output from each phase has been attached to this document.
During this phase, we go through intensive client interaction to discover what the problem/opportunity is? and what are the related problems? Discussions with the client lead to definition the problem/opportunity from a business point of view.
Items addressed in this phase are –
- a) Who are the potential users of the system?
- b) What are the needs that the system will serve?
- c) How are these needs being satisfied now?
- d) What are the current business practices?
- e) What would be the key benefits of the envisaged system?
Customer’s business, business success factors and constraints are understood in detail in this phase.
These questions help us define the scope of the system in terms of usage, performance, scalability and security. Time to market is also looked at and often decides the technologies to be used.
A detailed definition of the system along with system processes and dependencies is made during this phase. Estimate and schedules are also drawn up. Key technology decisions are made in this phase. Technologies and components used in the project are defined.
This phase focuses mainly on the technical aspects of the definition – user tasks, system objects, system processes and interactions are defined in this phase. Following items are identified by the end of this phase –
- a) Major user roles
- b) Major system components and services of the software
- c) Screen navigation diagrams for various user roles
- d) Sub-system interactions
- e) External system entities that the software needs to interact with.
Completion of definition phase ends with decisions about the technologies to use, components to buy, and delivery of estimate and schedules.
A high level design of the system is made taking all the above “discoveries” and “definitions” into account. We also address the high level needs of scalability, reliability and ease of maintenance in this phase. Following activities are completed in this phase-
(iv) Rapid Prototyping
- a) High level design of the system
- b) Low level design involving
- c) Identification of Components and Interfaces
- d) Identifying web pages to be mapped to Screen navigation diagrams
- e) Development of the data model
- f) Search of CSWL object repository to identify and retrieve reusable components. These are incorporated into the design
Those parts of the system that face most uncertainty and ambiguity are rapidly prototype during this phase and decisions made through client interaction. Mainly the UI and high technical uncertainty portions that threaten the execution of the project are addressed in this phase. Following activities are completed in this phase-
(v) Course Correction & Change Control
- a) Development and Acceptance of site graphics
- b) Development of major UI components
- c) Development of prototypes to explore any other system uncertainties like response time, scalability etc.
Based on the feedback from the previous phase course corrections are made and added to the initial specification. Course correction is also done at each of the milestones in the implementation phase. This is the interface for clients to provide their feedback. After each phased deliverable client gets a chance to course correct within a framework. The clients get a guided look into the system at least every week. Any changes that are suggested are categorized into bugs and feature requests. All feature requests go through a Change Control Process. These are implemented only after the effort estimate and cost are approved by the customer.
Coding of the system is done in this phase. This phase in itself is split into milestones and deliverables that are delivered to the client and his feedback taken. Actual “realization” of the system happens during this phase.
We have developed our coding process and set up our development environment in such a way that enables us to execute this in a massively parallel manner. Various components of the system, services, UI and database are all developed independent of each other based on the low level design.
(vii) Acceptance Testing
System is tested in our testing lab at every milestone. We take the system through functionality, stress, and load testing. We have customized tools and COTS (commercial off the shelf) packages that we use for various types of testing and bug tracking. Our clients also participate in this process through the same tools. An acceptance plan is made and submitted to the customer along with the detailed design. The system is accepted once the Client signs-off on all the items in the acceptance plan.
(viii)Deployment & Handover
A completely tested and approved system is deployed on customer specified location. This is also an iterative process in practice so that client’s feedback can be incorporated. We work with client’s development team to handover the system, with documentation.
This phase involves –
(ix) Application & Technical Support
- a) Installation of all components of the system at customer’s premises
- b) Aiding hosting outsourcers in deployment on production servers
- c) Training in-house staff to administer the site.
In most cases, we continue to support the system if the customer desires. All the above phases are iterative in case of e-business systems as these systems are generally rolled out in many versions.
Through the development of the companies’ in house system and infrastructure, OPUS is offering three categories of software services:
a) Web Based Application Development
- a) Web Based Application Development
- b) Desktop Database Solutions.
- c) TCustomized Integrated ERP.
- c) Outsourcing of software development.
Opus has already developed some desktop database solutions for the Bangladeshi business houses for their automation. To meet the client needs from 2009 we start our development in web Application.
b) Desktop Database Solutions
Opus has already developed some desktop database solutions for the Bangladeshi business houses for their automation. One of these solutions can meet the demand of the overseas users. On these types of solutions, OPUS itself analyses the specific need of business houses to automate their office works and develop the software, which can be used in general, using its’ own resources.
c) Customized Integrated MIS
Every business houses has its’ own operating system and Asset Management System are trained in that environment. For easy operation through computerizing, is to develop a unique integrated software system, which can be simultaneously operated by the entire organization. This will reduce the implementation time and cost, efficiency in operation and harmony among the inter-departmental jobs.
The basic job of OPUS in developing MIS is:
- a) WSystem analysis and design
- b) Software development
- c) Testing and debugging
- d) Implementation
- e) User training
- f) Outsourcing of software development
Outsourcing policy of OPUS allows business houses to use their IT department with more efficiently. As part of their IT team, OPUS can work in system analysis, software development or testing / debugging.
The company has its own server and 20 workstations linked by the networking system managed by own MCSE resources. The company has fifteen qualified developers who are continuously endeavoring themselves in a development process. Coupled with the company’s effort to upgrade the quality of their work, they are rapidly developing their skills. Three system analysts and expert programmers are working with OPUS. The company undertakes regular programmers for the developers and as a part of those programmers.
Application Development Solutions
Opus has been providing technology and application development solutions to hi-tech Companies and Corporations for the last 3 yrs. We have executed various application development solutions projects across a wide spectrum of high technology areas. Our strength is technology and we are continuously learning and improving ourselves.
We have established tried and tested software development processes and methodologies for our application development solutions, and these are followed rigorously. These processes are refined and modified to suit a particular work or project at hand. We provide you with a fully open development process, which can be monitored throughout for its progress and its deliverables.
Some of the areas we work in include Windows; Linux systems based application development, Enterprise solutions and Web Site engineering. Brief descriptions of some of the technologies we work with to offer our application development solutions are:
Internet Technologies have been one of the hottest areas that we have been working with extensively. Silverlight, ASP.NET, Java Scripts, Applets, HTML, PHP etc.
Oracle, MS SQL Server, My SQL, ODBC.
Programming and Front End development tools:
C/C++, Visual C++, Visual Basic, Visual FoxPro, D2k.