Sunday, 19 February 2017

Software Engineering: Definition & Principles



Software Engineering: Definition
Software engineering is a field of science implemented in computer’s area used to develop various methods & techniques in order to achieve high quality software at lower cost, within scheduled time and at consistent production rate.
Software engineering is also defined as the systematic approach to the development, operation, maintenance and retirement of software.

  •   According to IEEE, software engineering is defined 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.

  •   According to Fritz Bauer, Software engineering is the establishment and use of sound engineering principles in order to obtain software that is reliable and works efficiently on real machines.

  •   According to Dennis, Software engineering is the application of principles, skills, and art to the design and construction of programs and systems of programs.

  •   According to Boehm, Software Engineering is the practical application of scientific knowledge in the design and construction of computer programs and the associated documentation required to develop, operate, and maintain them.

Principles Of Software Engineering:
Various principles of Software engineering that must be considered while developing software are as follows:
·         Simplicity: All system should be designed as simple as possible. It facilitates the easy understanding of    the system, which helps in making changes simple and easy.
·         Software  design should minimize the intellectual distance between the software and problem existing in the real world.
·         Modularity:A fundamental principle of software engineering for managing complexity is modularity which can be achieved by decomposing a large system into smaller and more manageable sub-units. These sub-units are called modules.
·         Abstraction: Abstraction is the mechanism to hide irrelevant details and represent only the
essential features so that you can focus on the important things at any point of time.
·         Reusability: The system should be designed in such a way that the existing design can be effectively reused. Reuse save both time and effort and thus increases productivity.
·         Various other major principles of Software Engineering are:
·         Make quality number one priority: The first requirement must be quality. A customer will not tolerate a poor-quality product.
·         High-Quality Software is possible: High-quality Software is possible by using techniques, skilled persons, simple design, conducting inspections, building prototype.
·         Give Products to Customers Early: Try to give products to the customer early.
·         Determine the Problem Before Writing the Requirements: Try to solve the problem by gathering all the requirements of the customers and understanding them before further proceedings.
·         Evaluate design Alternatives: After gathering all the requirements try to evaluate all the design alternative and then choose the best optimal solution for it.
·         Use an appropriate  Process Model: Various Process Models are available like Waterfall, Prototype, Spiral model. Each project must select the model that better describes it.
·         Use Different languages for different phases: Use a set of those languages and techniques  that best describes the phases.
·         Put Techniques Before Tools: Before using any tool understand and follow an appropriate software technique.
·         Get It Right Before You Make It Faster: Try to make right programs then to make it faster.
·         Inspect Code: Inspect code so that it results in error free software.

Thursday, 16 February 2017

Computer Software or Software

Computer software, or just software, is any set of machine-readable instructions that directs a computer's processor(CPU) to perform specific operations. Software is a general term. It can refer to all computer instructions in general, or to any specific set of computer instructions. It is inclusive of both machine instructions (the binary code that the processor "understands") and source code (more human-understandable instructions that must be rendered into machine code by compilers or interpreters before being executed).
Computer software is a set of programs, procedures, functions, associated data and/or its documentation,
1.Software possesses no mass,no volume,and no color which makes it a non-degaradable entity over a long period.
2.Software does not wear out or tired.
3.Software is responsible for managing,controlling,and integrity the hardware components of a computer system and to accomplish any given specific task.
Characteristics of Software:
Functionality
Software Characteristics are classified into six major components which are shown below:



Software Characteristics

        Functionality: It means that software performs all the functions easily or not. It also refers to the degree of performance of the software against its intended purpose.
·         Reliability: It means that all the functions performed by software are trustworthy. It refers to the ability of the software to perform a required function under given conditions for a specified period.
·         Usability: It refers the degree to which software is easy to use.
·         Efficiency: It refers to the ability of the software to use the system resource effectively and efficiently.
·         Maintainability: It means a software is ease to maintain with less or no changes. It refers to the ease with which a software system can be modified  to add capabilities, improve the system performance and correct errors.
·         Portability: Refers to the ease with which software developers can transfer software from one platform to another, without (or with minimum) changes. In simple terms, it refers to the ability of a software to function properly on different hardware and software platforms, without making any major changes in it.
Other than that Robustness and Integrity are also important.
·         Robustness: It means software performs all the functions properly even  under  the condition of wrong input.
·         Integrity: It means an unauthorized user cannot access the software. All the software is integrated together with proper control over its access.
Software Crisis:
Software crisis can be defined as a set of problems raised during the software development time. Software crisis was introduced in 1960’s.The factors responsible for software crisis are:

Small scale of Software: At that there is a problem of scale i.e the ways to develop a small software having hundreds of lines will not work for large systems having thousands of line. In other words, the methods used for developing small systems g
Do not scale up to large systems.
Budget: Softwares are expensive. The cost to develop a software is high as compared to hardware. The cost to develop a software by using highly qualified and skilled manpower is required that increases the budget of the software.
UnReliable: The unreliability means that software do not perform the required function. Many failures occur due to errors that get introduced in the software.
Late Delivery: Software never get completed within the specified period of time this leads to late delivery of software.
More Maintenance required: Softwares require more maintenance cost this increased the software cost.
Complex Systems: At that time there is a demand to develop large and more complex software systems.
As the demand get increased to develop large systems and to control this software crisis, some approach was needed for software development so the term “Software Engineering” was introduced.