Friday, October 21, 2016

Principles of Software engineering

Let me me first start with the question of "What's software engineering ? "Software engineering is the application of engineering to the design,development,implementation, testing and maintenance of software.
Software engineering often does involve writing code, but this is only one stage in the process. True software engineering has a well-articulated life cycle.

What are the main principles in software engineering ?

  1.  Separation of Concerns: the process of breaking a computer program into distinct features that overlap in functionality as little as possible. A concern is any piece of interest or focus in a program. Typically, concerns are synonymous with features or behaviors.
  2.  Modularity:  a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.For instance, using libraries and multiple static methods 
  3. Abstraction: is a technique for arranging complexity of computer systems. It works by establishing a level of complexity on which a person interacts with the system, suppressing the more complex details below the current level.
  4. Consistency: specifies a contract between programmer and system, wherein the system guarantees that if the programmer follows the rules, memory will be consistent and the results of memory operations will be predictable.
  5. Incremental Development:is a method of software development where the product is designed, implemented and tested incrementally (a little more is added each time) until the product is finished. It involves both development and maintenance.
  6. Anticipation of Change: Software, even when it is developed and commissioned for production, undergoes changes. When there are changes, additional costs will be incurred. A design goal in software development is to ensure cost is kept to a minimum. One approach is to anticipate where changes are likely to occur and make provisions for the changes during the design stage.

How's software engineering important in our lives ?

Well,without software engineering there will be lack of methodical planning,systemical planning,desing in our codes and more important than that is that our  code won't be ever tested so nothing will work as efficient as we want it to be.For example, below is a screenshot of a code that should function well because it's written correctly.However,it doesn't because it lacks the main principles of software engineering 

References:
1-https://d1wvhegsi0wquf.cloudfront.net/media/uploads/2016/08/03/softwarwee.jpg
2-http://3.bp.blogspot.com/ qW_1AuSbq60/UVRGncteqdI/AAAAAAAAAVo/yWlWCh8Bypk/s1600/software_engineering.png





No comments:

Post a Comment