Sunday, February 26, 2023

Software Engineering: In Detail

Software engineering is the process of designing, creating, testing, and maintaining software products using engineering principles and methods. It involves applying engineering concepts to the development of software systems to ensure that they are reliable, efficient, and easy to maintain.


The software engineering process begins with the identification of the problem or need that the software is meant to address. This is followed by the analysis and specification of requirements, which involves determining what the software should do and how it should perform. Once the requirements are defined, the design phase begins, which involves creating a blueprint for the software system. This blueprint specifies the architecture, components, interfaces, and other details of the software system.


The next phase is the implementation phase, where the actual code is written and the software is developed. This phase includes programming, debugging, and testing. The code is written in a programming language, and the software is tested to ensure that it works as intended.


Once the software is developed and tested, it is deployed or released to users. The final phase is maintenance, where the software is updated and maintained to ensure that it remains functional and up-to-date. This includes bug fixes, enhancements, and other improvements.


Software engineering also involves the use of tools and techniques to support the development process. These tools include integrated development environments (IDEs), version control systems, testing frameworks, and project management software.


In summary, software engineering is a disciplined approach to developing software that involves designing, creating, testing, and maintaining software systems using engineering principles and methods. It is an essential discipline in the field of computer science and plays a critical role in the development of software applications that are reliable, efficient, and easy to maintain.

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.