Software Engineering
IEEE defines SE as the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. In addition SEs aim is to construct, deploy, maintain and evolve high quality, reliable, extensible, idiot-proof software on time, within budget that meets the user requirements using methodologies, tools and techniques to resolve the practical problems that arise during these activities.

Spry over the years has accumulated experience in proven SE practices and learned from its mistakes. Spry can achieve the tasks of requirements analysis, design, development, testing, and deployment using some of the 'state of the art' SE techniques.

Spry has enough experience in using case tools, configuration management, quality assurance, rapid application development, process modeling, project management, and more than anything else Spry is committed to providing "most bang for the buck" to its customers. To achieve these goals Spry has setup an offsite and offshore Software Engineering center.

Spry believes its assets are its employees and encourages its employees to be up to date with SE techniques and guide them in emerging technologies. Spry believes a software system exists for one reason: to provide value to its users. All decisions should be made with this in mind.

Before specifying a system requirement, before noting a piece of system functionality, before determining the hardware platforms or development processes, ask yourself questions such as: "Does this add real value to the system?" If the answer is "no", do not do it.

SE is a very difficult job and Spry has the vast experience required for successfully completing projects. We understand that a Software Engineer requires two different, divergent skills.

  • Should be able to determine what the software should do, which is accomplished with domain knowledge and close work with the users. This process is usually achieved by requirements analysis, laying down architecture, specifications and developing high-level design. This process requires a software engineer to think on very high level and not worry about details.

  • Should also be able to take the work produced in the previous role and map them into more details, until the code is obtained in implementation phase. Taking the documents written in natural English (just think about the complexities, ambiguity of English language for a minute) and converting them to machine readable language is the most difficult, error prone and labor-intensive work. This process requires a software engineer to look at the big picture and also worry about minuscule details.

Also there are no physical precise measurements to measure the quality of work. The software does not have any physical characteristics or shapes, cost of reproduction is negligible, and no physical constraint on complexity.