bissons.com logo
 

Software Engineering

Software engineering is an engineering discipline concerned with the practical problems of developing large software systems, and is set apart from the more specific disciplines of computer programming and computer science.

Computer programming is primarily concerned with the representation computable processes and structures in terms of a machine readable instructions; whereas computer science is concerned with the study of computable processes and structures in relation to requirements. In contrast, software engineering encompasses the whole software lifecycle comprising analysis, design, development and testing and is primarily concerned with the delivery of effective computing solutions to business problems.

Software engineering, in essence, is the production of well-engineered software at predictable cost, and within an acceptable timeframe.

Well-engineered software exhibits four main characteristics:

  • is reliable;
  • has an appropriate user interface;
  • is reasonably efficient;
  • and is maintainable.

Developing well-engineered computer systems within time and cost constraints is a complex and variable process comprising mostly 'soft' software process management techniques; a combination of formal, semi-formal, and informal techniques for requirements specification; software design; user interface design; programming and testing.

Software Systems

We have considerable experience developing software systems for a variety of business requirements based on mainly the Unix and Windows NT/2000 platforms:

  • Background, or service processes — Windows NT/2000 services, and Unix daemons. These applications are distinguished from application services in that they usually require little user-interaction beyond software configuration.
  • Internet-based applications and services — applications and services accessed primarily via the Internet and the World Wide Web.
  • GUI-based applications and services — client / server application and services accessed through clients running Windows.

Depending on the type of software system, and its requirements, we use a variety of techniques to assist us in the software development process:

  • Systems Analysis and Requirements Definition — which enables us to develop a clear understanding of the purpose and behaviour of the system under development.
  • System Modelling — where we capture both existing, and future data requirements and the relationships between the data.
  • Software Prototyping — where we build an active, though not necessarily complete, prototype of key parts of the system. This is especially important in user interface design, where the practical elements of a design can be assessed prior to implementation.
  • Formal Specification — which enables a mathematical model of a systems behaviour to be specified precisely. This technique is particularly useful as part of the analysis process for systems that have precise, although not necessarily well-documented requirements (particularly in financial, or safety critical applications). In many cases, formal methods represent a way of 'pre-programming' a solution, to identify areas of the system that are not well-understood.

For implementation, we generally select the most appropriate implementation language, and software platform for the application, subject to considerations such as your existing infrastructure, user interface, and the maintenance arrangements for the system.

Software Components

In addition to complete systems development, we also develop software tools, libraries and components for integration within larger systems:

  • Software Tools — which are small applications performing discrete, well defined tasks;
  • Software Libraries — collections of functions;
  • COM Components — based on Microsoft's Component Object Model (COM).

Specific examples of tools and components we have developed in the past include scripting periodic system backup processes; libraries for encryption and decryption, and COM components that provide a high-performance interface between server-side JavaScript (ASP) and certain operating system functions.

Systems Integration

We have experience in integrating systems based on nearly all common environments including Unix, Windows NT/2000, Macintosh, OS/400, and MVS.

Copyright © Bissons Limited, 2000 — 2004 | Terms of Service | Privacy Policy