Showing posts with label Software Engineering. Show all posts
Showing posts with label Software Engineering. Show all posts

Sunday, May 29, 2016

Software Engineering

Software Engineering

  • It is an systematic approach for developing software, also the methods and techniques to develop and maintain quality software to solve problems.
  • According to Boehm,1976 it is a "Practical application of scientific knowledge in the design and construction of computer programs and the associated documentation required to develop, operate, and maintain them. "

Objectives

  • To improve quality of software products
  • To develop systems and software that are maintable and easily changed.
  • Provide an understandable process for software development.
  • To allow the process of creating computing - based systems to be repeatable and manageable.

Differences between S/W and traditional Engineering


  • Software is intangible. It has no mass, no volume, no color, no odor--- no physical properties. Source code is merely a static image of computer program, and while
    the effects produced by a program are often observable,the program itself not.
  • Software doesn’t degrade with time as hardware does.Software failures are caused by design and implementation error, not by degradation over time.
  • In classical engineering disciplines, the engineer is equipped with tools and the mathematical maturity to specify the properties of the product separately from those of design. The typical software engineering relies much more on experience and judgment rather than mathematical formula. 
     

The role of software engineer


 The evolution of software engineering field has defined the role the software engineer. A software engineer should have the following qualities:


• Should be a good programmer, be well-versed in data structures and algorithms, and be fluent in one or more programming languages.

 

• Should be familiar with several design approaches,be  able to translate vague requirement
 and desires into precise specifications and be able to converse with the use of a system in terms of applications.
 
  •  Needs the ability to move among several levels of abstraction at different stages of the project, from specific application procedures and requirements, to abstraction for software systems, to a specific design for system and finally to the detailed coding level.