Development Process
Centric CRM development includes making enhancements and changes to the core web application framework, modules, components, supporting applications, database schemas, and installation and upgrade scripts.
In order to benefit all community members, a shared, collaborative process provides up-to-date project status and documentation. Members can see what features are being considered and developed, as well as contribute insight and expertise.
The following Project Management web site tools are extensively used throughout the Centric CRM project:
- Project announcements and news to stay up-to-date with current project events
- Resource allocation and contact management to see who is working on what
- Reference information and specifications
- Discussion groups for sharing ideas and gathering feedback
- Issue tracking for reporting and working through defects and enhancements
- Document repository for storing related project material
- Source code repository (Subversion) for centralizing code
Development begins with a well-understood project description, then typically steps through user needs, planning, specifications, design elements, code development, review, QA, testing, documentation and installation.
Use the following steps to ensure a successful contribution to the code.
Well-Understood Project Description
By preparing a well-understood project description, you will be certain to stay on track and allow others to understand what you are setting out to accomplish.
The description should include an introduction of what is being proposed, the goals that are to be achieved with this project, the scope of work to be done, and a high-level outline of deliverables.
Legal Issues
Any legal issues related to the project should be documented. These can be in reference to code ownership or regulatory compliance.
Remember, code contributions to Centric CRM cannot use GPL code or GPL libraries due to licensing restrictions. Typical acceptable licenses include Apache Software License, LGPL and BSD.
User Needs
Next, outline the business, system, and server environment in which the software will be used. For example, the implementation of a sophisticated graphing system might be demanding on processor power. However, if this process is only expected to be executed once per night, then the specifications might not require a queue.
Make sure to outline the stakeholders and the actors. These can be named individuals or roles that they play. List their needs and what they have in common. It's important to understand who will be using the system and why.
Specifications will be driven by these expectations.
Software Specifications
Before coding can truly begin, specifications need to be generated and agreed upon.
- Use Cases -- Specify how the stakeholders and actors will interact with the system. You should already know who these users are and why they need to use the system, but now you will show exactly what they can do in the system. These will include use-cases by functional area and by priority. Associate business objects with the roles as well.
- Functional Requirements -- List the feature set and implementation priorities.
- Non-Functional Requirements -- List the items that will have an impact and explain how to resolve them.
- Reliability/uptime
- Security
- Performance and scalability
- Maintainability and upgradeability
- Environmental Requirements
- Hardware
- Software
- Programming Interfaces
- Data import/export
Project Plan
Once the scope of the project is understood, the work to be done should be broken down into sections with time estimates so that a schedule can be devised. Risks that might impact the project should also be specified.
A project plan will serve as an outline for assessing milestones.
Design
- System Architecture: components, site-map
- User Interface: content model, wireframes, prototypes
- Persistence/Database Schema
- Security Model
QA
- Identify quality goals and rate them by priority
- Functionality
- Usability
- Security
- Reliability
- Efficiency
- Scalability
- Operability
- Maintainability
- Implement a QA Strategy
- Community review
- Unit testing
- System testing
Testing
- Business objects and operation
- Features
- Use-cases
Documentation
- Installation/Upgrade
- Release notes
- User Guide
Upgrade and Installation
Sign in to add your comment.