Web & Systems Analytics
Large Internet sites of public or private organizations require a continuous monitoring from different perspectives:
- It is necessary for their owners to evaluate the correct operation of the site, since a poor performance or a site flooded with errors can lead to the loss of traffic.
- It is also necessary to evaluate the societal impact reached by the site and the campaigns launched from it.
For a site to be successful (meaning that it reaches the targeted audience, creates awareness amongst it and provides them with valuable data to periodically visit the site), these former aspects must be carefully taken into consideration and depend on two deeply interrelated aspects: technical monitoring and user perception. MainStrat offers services in both fields:
Technical Monitoring
- External monitoring of Websites and Services availability and performance. Our external monitoring service, called EMS, is a network of monitoring nodes spread all over Europe that is available for our customers to constantly monitor the behaviour of their websites. Counting on a purely European Network provides a far more realistic measurement than other solutions, which nodes are mostly located in USA and, occasionally in a few European locations. EMS is fully customisable on demand, in opposition to the existing COTS applications in the market. We measure availability and response times of over 100 URL or subsections in every website.
- Analysis of log files and similar data collections. Every website produces log files that can be exploited to analyze several interesting aspects of its use and status. The daily automatic processing of these logs can be fully customized depending on the type of log and the objectives to achieve, but it requires a high expertise, as well as robust high-throughput specialized servers. By analyzing these logs we can provide statistics on every website’s sub-service, identify user navigation paths, create customized statistical reports, as well as many other outcomes.
- Statistical analysis and interpretation. We provide an expert interpretation of the raw data and statistics: what are the most common use patterns, which are the reasons behind the change of these patterns, which are the variations in the number of accesses per each sub-section, etc.
- Intrusion Testing. Websites are exposed to the attacks of malicious hackers that can eventually stop or distort the service, or even worse, have access to private sensitive data. Our experts conduct intrusion tests for our customers so they can detect security breaches and provide recommendations to fix them.
- SLA performance control of the hosting provider. Many websites have external or internal organisations responsible for their hosting, usually with SLA contracts in place ensuring minimum delivery requirements and eventual penalisations. MainStrat audits the site with the aim to ensure the fulfillment of the SLA, or to detect possible infringements to the SLA.
User perception
MainStrat provides the possibility to conduct pan-European multichannel surveys in order to measure the User’s perception about the websites of our customers. The surveying channels are:
- On-line Surveys. Intelligent on-line surveys, that dynamically change depending on the user profile and her/his interaction (depending on the answers given).
- Telephonic Surveys. Performed covering all necessary European languages by means of a network of collaborators all over the european territory.
- Face-to-face Surveys. These surveys/interviews are conducted in order to extract a more in-depth user feedback, and can be held under a free schema or following a previously designed script.
Software Engineering
Software Engineering is a discipline that applies an engineering approach to the construction of software. It comprises several sub-disciplines or practices such as Requirements Engineering, Systems Design, Software Quality Assurance, Software Testing, Configuration Management, and many others.
There are four major popularly accepted Software Engineering Paradigms, or processes, nowadays:
- Build & Fix. This paradigm is the least engineered one, since it consists on developing a system based on some specifications and fix it as long as customers or end-users report bugs.
- Waterfall. This is the most classic paradigm that comprises several sequential stages, being the output of one stage, the input of the next one. The main stages of this process are: Requirements, Design, Development, Testing, Deployment and Maintenance. Applying a Quality Assurance approach a Waterfall process becomes a V-Life Cycle paradigm, consisting on two branches: one for software construction containing the Requirements, Design, Development, Deployment and Maintenance stages, and one for quality assurance comprising different quality activities at each level, such as System Testing, Unit Testing, Integrations Testing, Validation and User Acceptance.
- Prototyping. It consists on the iterative specification, development and approval of a prototype that is normally dismissed when the final version of the software is ready.
- Incremental. As prototyping, it’s an iterative process where the main stages identified in waterfall (including Quality Assurance Activities) are repeated over time until achieving the definitive version of a product. This process generates valid intermediate versions, in opposition to the Prototyping Paradigm, where intermediate prototypes are deprecated. Among the most popular incremental methodologies we find RUP or the Agile Software Development Methodologies such as Extreme Programming, SCRUM, or Lean Software Development.
Our consultants have a wide experience managing complex distributed IT projects that have been developed following several paradigms and methodologies. We have been involved in Waterfall and RUP projects, and its subset specifically created for European Commission’s IT Projects called RUP@EC. We have introduced agile project management in most of our projects, mostly following SCRUM Methodology.
The services we provide in this field are:
- Design and implementation of an overall Software Engineering approach in Software Development projects, including definition of process and implementation of supporting tools.
- Implementation of methodologies and tools in specific Software Engineering practices, such as Requirements Engineering, Configuration Mangement or Software Quality Assurance. These services are further explained in the next sections.
- Support to the implementation of agile practices in software development and software project management, including the implementation of tools.
Requirements Engineering
Requirements Engineering is a sub-discipline of Software Engineering that comprises the application of methodologies, techniques and tools for gathering, analyzing and validating a collection of requirements. In this field our consultants provide the following services to our customers:
Implementation and coordination of Requirements Gathering Techniques. Mainstrat offers a multidisciplinary team with a wide expertise in IT and surveying techniques. This knowledge is used to organize Focus Groups, Workshops or personal interviews oriented to gather user requirements for the construction of a software system either in agile or traditional contexts. We also make use of on-line or face-to-face surveying techniques for this purpose. In an agile context we specifically organize workshops for the elaboration of an adequate set of User Stories.
Analysis and classification of requirements following specific standards, such as ISO/IEC 25010:2011 (former ISO 9126), where a specific quality model is proposed for software products, including several characteristics: Functional suitability, Performance efficiency, Compatibility, Usability, Reliability, Security, Maintainability, and Portability.
Support to the implementation and setup of Requirements Management tools such as Confluence-JIRA by Atlassian, Requisite PRO, or Caliber RM.
Software Quality Assurance
We understand Software Quality Assurance (SQA) as a Software Engineering sub-discipline that runs in parallel to the Software Design and Development process. The SQA staff accompanies the software development team during the project development life-cycle performing specific QA activities and supporting the development team in the effective application of specific QA activities such as Unit or Integration Testing, orchestration of code peer-reviews, etc.
SQA encompasses many activities that require different skills and capacities, e.g. technical skills for test automation, analytical skills for requirements verification and validation, management skills for SLA fulfillment verification, or negotiation of Quality Objectives. MainStrat collaborates in this field with one of the most acknowledged Software Quality Consultancy companies in Spain, MTP, providing a full support to SQA activities for our customers, offering services such as:
- Contract and Management Review, including auditing of SLAs.
- Design and implementation of Quality Models for specific projects or for the whole corporation, including the definition of Quality Objectives and models of Metrics.
- Implementation of tools to automatically verify fulfillment of the Quality Model.
- Definition and implementation of Verification and Validation strategies.
- Definition and Implementation of Automated Testing strategies.
- Introduction of SQA practices in Agile environments
ALM Tools
Current Software Development projects can be supported by numerous types of software solutions. The tools supporting the different stages of the software development life-cycle are known as ALMs or Application Life-Cycle Management tools. We can find extremely expensive tools in the market that support the whole development life-cycle (from requirements gathering to deployment and maintenance). Anyhow the trend in the recent years, boosted by the growing number of agile projects, is to create a fully customized toolchain based on integrating several open source solutions.
MainStrat supports IT companies in the implementation of ALM tools that really fit their needs. First of all, our consultants analyze the context where software development is carried out in order to, secondly, provide a custom solution based on open source or low cost commercial applications most of the times.
Herewith an example of an IT company using different solutions to compose its own ALM:
- Use of issue management tools for requirements management (e.g. Atlassian JIRA, bugzilla, red mine…) or requirements management specific tools (e.g. Doors, RequisitePro, VersionOne…).
- Those requirements are linked to design specifications stored in a wiki-like site (e.g. WikiMedia, Atlassian Confluence…).
- The development and deployment teams count on a Continuous Integration platform, based on technologies such as Jenkins or Bamboo, that allow them to automate deployment processes among environments based on the results of the automation of different sub-processes (e.g. Configuration Management with SVN or GIT, Unit Test Automation with language-denpendent Unit Test Frameworks, Functional Test Automation with Selenium, or Static Code Analysis tools with SonarQube ). Deployment will then be conditioned by the results of Automatic Unit and Functional Tests or by the results of the Static Code Analysis.
Managed Hosting Solutions
Mainstrat act as a proxy of hosting solutions, monitorig and controlling the quality of the service provided to the end user. Main activities performed by Mainstrat are:
- First Level and Second Level Helpdesk Support Services by means of our own ticketing system, or the system selected by the agency.
- System Monitoring Performance, i.e. monitoring of bandwidth consumption, server performance (CPU utilization, Memory, Disk, Disk bandwidth), back-up systems and networking elements (load balancers, routers). Timely alerts are generated to troubleshoot problems or prevent potential ones
- Website Monitoring Performance, including web response time and availability. Timely alerts are generated to troubleshoot problems or prevent potential ones.
- SLA metrics control as negotiated with the customer.
- Maintenance, including all tasks related to hardware & software maintenance in their different life cycles (adaptive, perfective, corrective, and preventive).