Web and Mobile Software and Database Programming
GORGES designs and programs web and mobile applications from concept to completion. We serve businesses by:
- Defining their business goals
- Writing functional and technical specifications
- Designing intuitive user interfaces
- Programming a multi-tiered and scalable web application to match specifications
- Creating optimized databases to store information and transactions
- Providing post launch support and testing
THE NEED FOR A STRUCTURED APPROACH
Software development and web programming is a complex process. It involves the knowledge contributed by many individuals, numerous high-tech and low-tech tools for collaboration and development, and experienced designers, developers and managers using proven techniques.
We have developed and refined the software creation process outlined below over many years and hundreds of website and software programming projects.
PRE-PRODUCTION FOR SOFTWARE DEVELOPMENT
- Overall Project Planning
- Develop timelines, milestones, responsibilities, and appropriate contracts.
- Business Requirements
- The first step is often called a 'discovery period.' During this phase of the project, we gather knowledge from all key stakeholders, and attempt to capture the 'big picture' of what is needed. All needs and requirements of the software are identified and discussed on a high level.
- Process and User Flowcharts
- Process flowcharts. These are high level flowcharts showing the required business processes.
- User flowcharts. These take the perspective of each type of user of the system showing their workflow.
- Navigation and Information Architecture
- Determine top level menu items.
- Plan out hierarchy of content, generate list of needed content.
- Define Business Rules
- Identify and specify all business rules that the system needs to honor.
- Bring in all stakeholder knowledge into a document that describes the requirements for each screen or area of the application.
- Reports, Imports, 3rd Party Integrations
- Identify the needs for each report the system must generate.
- Similarly identify all 3rd party system integration needs (e.g. imports, exports, run-time web services).
- Wireframes or Storyboards
- Wireframes are 'mockups' of key screens in the application, that show a possible user interface for data entry and review.
- Initially, a few 'keyframes' are identified and reviewed. Once these are sufficiently detailed and accepted, all remaining user screens and forms are wireframed.
- The wireframes are edited and revised until all issues are clear and everyone understands what is being planned.
- Technology Planning
- Identify web server, application server, frameworks, database server, programming languages, tools for business objects and programming languages.
- Plan software architecture, e.g. AJAX, Web 2.0, module builder, content management system, etc.
- Select the most appropriate software framework and language, such as ASP.NET, PHP, Ruby On Rails, Java, AJAX, Cold Fusion, SQL Server, MySQL, PostGRES, or Oracle, from a wide range of available tools and techniques.
- Security and backup planning.
- Our decades of experience give us the skills to implement your business application on the best technology for your needs.
- Level of Effort(LOE), Calendar
- Once the wireframes are complete, an accurate cost and LOE can be established.
- Planning for all tasks to implement the wireframes, including milestones, tasks, etc. can be done at this time.
- Create production timeline.
PRODUCTION (DEVELOPMENT) OF WEB SOFTWARE
- Visual Designs
- The actual look and feel of key screens is developed, made from the wireframes.
- Create design guidelines and style sheet for all graphic elements.
- Administrative Screens (Dashboards)
- These are the 'back-office' pages, including administrative areas, tracking, access to reports and logs, etc.
- Database Design (ERD)
- Design and implement necessary data structures to support all functions, business rules, and interface requirements.
- Templates (HTML & CSS)
- Turn the visual designs into XHTML / CSS templates and objects that will be used in the final delivery of the live application.
- Develop dynamic user interactions, e.g. smart forms, auto-completers, drag and drop, etc.
- Application Programming, for each function or component of the system:
- Create a test script to validate that the business rules and functions of each component can be validated programmatically.
- Program application component.
- Test component.
- Commit code to versioning system for backups and version control.
- Code review by senior engineer or tech lead.
- Reports, Imports and Exports, Web Services
- Create a test script for each report, import, and export needed.
- Create necessary API or web service call for 3rd party systems.
- Write Programming.
- Test thoroughly.
- Data Conversion
- Plan for all data from other sources.
- Bring in initial data set to validate migration plan.
- System Administration Tasks
- Develop processes and scripts to publish code and data to test and production servers.
- Plan for all anticipated system-administrative tasks (replicating data, versioning, backups).
- Deploy BETA version of complete software to test server.
- Perform comprehensive quality assurance.
- Manual testing from each user perspective.
- Automated testing using the test suite.
- Revise and Debug.
- Release final version to production server.
- Finalize documentation.
- Monitor live release for errors or anomalies.
- Prepare for patches.
- Set up support processes and ticket tracking systems.
- Create, test, and release patches as needed to fix errors.
- Performance optimizations as needed.
The benefits to using a structured and planned approach to software engineering are many:
- All needs are identified up-front, ensuring that time is not wasted re-writing or re-engineering areas after programming has happened.
- A team approach is used so that all key personnel know that their input is valued, and when and how they are able to contribute.
- The cost and time to market can be accurately planned.
- The end product is best possible web or mobile software application to support maximum growth, revenue, and stability.