SERVICES

Embedded Software Development

More than just writing code, we aim to be a creative, innovative and a proactive partner to every customer both now and long into the future

SanCloud IoT & Embedded System Customers

New technologies emerging across all sectors and areas of life are a direct result of advancement in embedded software. Embedded software development is one of our core competencies.

Our capabilities include a wide range of embedded solutions from single-processor to multi-processor control applications. With more than 30 years of experience developing embedded software solutions, we understand the technical and business issues of your system and can develop embedded software to run reliably and with high performance on your chosen hardware.

As highly experienced developers of embedded systems and IoT solutions, SanCloud has a track record of delivering reliable, secure and readily manageable embedded software solutions, quickly and at reduced cost. We offer an end-to-end embedded capability, encompassing phases for build, connection and management. Our software development capabilities include real-time embedded code development, high and low level languages, autocode and algorithm development.

How can we help you?

Whether your requirement is a customised embedded project, proprietary design or off-the-shelf alternatives, we offer a range of embedded software services to deliver a fully functional system. 

Design, development and maintenance of automotive and industrial control software

Embedded applications such as GUIs, middleware and protocol stacks

Developing device drivers and board support packages

Software and application porting across different operating systems and platforms

Software optimisation, feature enhancement and performance tuning

Maintenance and support for existing products

Our software process

Software can be a complex ‘product’ that is developed and delivered through a series of steps. Like all products, software starts as an idea. The idea then becomes a document, or perhaps a prototype, depending on the method in use.

Whether a document, diagram or working software, the artifact created in one step becomes the input to the next step. 

The sequence of steps used by these methods is commonly referred to as the Software Development Lifecycle (SDLC).

  • Planning
  • Analysis
  • Design
  • Development
  • Testing
  • Maintenance
  • Delivery

The planning phase involves aspects of project and product management. This may include:

  • Resource allocation (both human and materials)
  • Capacity planning
  • Project scheduling
  • Cost estimation
  • Provisioning

 

The outputs of the planning phase feed into the analysis phase. Ideally, Project Managers and Development staff collaborate with Operations and Security teams to ensure all perspectives are represented.

The business must communicate with IT teams to convey their requirements for new development and enhancement. The requirements phase gathers these requirements from business stakeholders and Subject Matter Experts (SMEs).

Architects, Development teams, and Product Managers work with the SMEs to document the business processes that need to be automated through software.

The output of this phase in a Waterfall project is usually a document that lists these requirements.

Agile methods, by contrast, may produce a backlog of tasks to be performed.

The business must communicate with IT teams to convey their requirements for new development and enhancement. The requirements phase gathers these requirements from business stakeholders and Subject Matter Experts (SMEs).

Architects, Development teams, and Product Managers work with the SMEs to document the business processes that need to be automated through software.

The output of this phase in a Waterfall project is usually a document that lists these requirements.

Agile methods, by contrast, may produce a backlog of tasks to be performed.

This phase produces the software under development. Depending on the methodology, this phase may be conducted in:

  • time-boxed “sprints,” (Agile) or may proceed as a;
  • a single block of effort (Waterfall)

 

Regardless of methodology, development teams should produce working software as quickly as possible.

Business stakeholders should be engaged regularly, to ensure that their expectations are being met.

The output of this phase is testable and functional software.

The testing phase of the SDLC is arguably one of the most important. It is impossible to deliver quality software without testing. There is a wide variety of testing necessary to measure quality:

  • Code quality
  • Unit testing (functional tests)
  • Integration testing
  • Performance testing
  • Security testing

 

The best way to ensure that tests are run regularly, and never skipped for expediency, is to automate them. Tests can be automated using Continuous Integration tools.

The output of the testing phase is functional software, ready for deployment to a production environment.

The operations and maintenance phase is the “end of the beginning,” so to speak. The Software Development Life Cycle doesn’t end here.

Software must be monitored constantly to ensure proper operation. Bugs and defects discovered in Production must be reported and responded to, which often feeds work back into the process.

Bug fixes may not flow through the entire cycle, however, at least an abbreviated process is necessary to ensure that the fix does not introduce other problems (known as a regression.)

Application Release Automation (ARA) tools are used in medium and large-size enterprises to automate the deployment of applications to Production environments. ARA systems are usually integrated with Continuous Integration tools.

The output of this phase is the release to Production of working software.

Continuous improvement is a vital part of the software development process. 

Without feedback from the customer future iterations cannot be properly specified and implemented.

Related Links