Analysis and Design

Technology Stack - Analysis & DesignOrganisations can easily identify that a business system is required to solve a particular challenge but are unsure how to best describe its functionality and purpose or fail to document it the level of detail required to produce an accurate description of the system, both functionally and technically (non-functional requirements) which has a major impact on architecture.

Surya Solutions provide consultancy to capture requirements and produce detailed Use Cases and UML design for software projects if an organisation does not possess these skills in-house. This is conducted in a workshop format with subsequent write ups of the requirements and design model and technical solution.

Understanding a client’s business and translating this into comprehensive design specifications ensures that any proposed technical solutions are both fit for purpose and highly cost effective. With expertise across the entire application life-cycle spectrum, Surya Solutions always applies best practice to software projects using modern development methodologies to ensure flexibility, participation and visibility to clients.

Our team of experienced developers work together with our project managers and business consultants to provide an end-to-end custom software development service including:

  • Requirements Gathering
  • Systems Architecture & Design using UML
  • Software Development
  • QA Testing & Automated Testing
  • Rollout and Deployment
  • Agile Project Management
  • Support & Maintenance

Follow the link to learn more about our software development methodology.


 Software Architecture

Technology Stack - Software Architecture

The architecture of a software system differs greatly depending its intended purpose. For example, the software that controlled the space shuttle would need to be very fast and very reliable meaning an appropriate real time computing language would be chosen during the design stages of the project.

A software system’s architecture refers to its high level structures, the discipline of creating such structures, and the documentation of these structures. The architecture of a software system is analogous to the architecture of a building.

Architectural considerations are fundamental to the design of the software and will prove costly to change at a later date. As such, it is vital to consider all requirements that may affect it during the Discovery phase of the project.

Surya Solutions use Discovery workshops to pose questions about many aspects of the intended use of the software to establish the non-functional requirements of the system and an appropriate architecture to support the current and future demands of the business on it.


Technology

Numerous technology frameworks, languages, databases are available to develop software, the technology used being dependent on the chosen architecture. Surya Solutions is a Microsoft Gold ISV & ALM Partner, and experts in the Microsoft  technology stack amongst others.  Technology capabilities include:

Technology Stack

Surya Solutions also have expertise in using 3rd party UI components & tools including Telerik Devcraft, KendoUI, Durandal  and Infragistics.

For more information on the technologies visit the following pages:


Testing

Technology Stack - TDDSurya Solutions utilises Test-Driven Development (TDD) for software development. Test cases are determined before code is written, and then only sufficient code is written to make those test cases pass, following which the code is refactored. As the system is developed, TDD is used to give feedback on the quality of both its implementation (“Does it work?”) and design (“Is it well structured?”).

Peer Reviews of tests, design and code form part of the “Definition of Done” (criteria that must be met in order to change the state of a piece of work from Active to Complete / Checked In). In addition to Peer Reviews, the practice of Pair Programming is used in certain circumstances; usually to assist in knowledge transfer, or on complex tasks where having additional intellectual input can maximise the output in terms of clean, maintainable solutions, helping to improve internal quality as a consequence.

3rd Party tools (e.g. JetBrains ReSharper) are used to provide immediate feedback during development in terms of technical debt – naming conventions, possible null reference exceptions, and additional common refactoring functionality that these tools provide, leading to lower defect rates and greater consistency in developed code.


Contact Surya Solutions or telephone 023 9282 2254 to discuss your custom and bespoke software development requirements.