Lesson1.pptx
Document Details
Uploaded by TrustingPeridot
Tags
Full Transcript
Introduction to Software Engineering Software is a program or set of programs containing instructions that provide the desired functionality. Engineering is the process of designing and building something that serves a particular purpose and finds a cost-effective solution to problems. W...
Introduction to Software Engineering Software is a program or set of programs containing instructions that provide the desired functionality. Engineering is the process of designing and building something that serves a particular purpose and finds a cost-effective solution to problems. What is Software Engineering? Software Engineering is the process of designing, developing, testing, and maintaining software. It is a systematic and disciplined approach to software development that aims to create high-quality, reliable, and 1.Software engineering includes a variety of techniques, tools, and methodologies, including requirements analysis, design, testing, and maintenance. 2.It is a rapidly evolving field, and new tools and technologies are constantly being developed to improve the software development process. 3.By following the principles of software engineering and using the appropriate tools and methodologies, software developers can create high- quality, reliable, and maintainable software that meets the needs of its users. 4.Software Engineering is mainly used for large projects based on software systems rather than single programs or applications. 5.The main goal of Software Engineering is to develop software applications for improving quality, budget, and time efficiency. 6.Software Engineering ensures that the software that has to be built should be consistent, correct, also on budget, on time, and within the required requirements. Key Principles of Software Engineering 1.Modularity: Breaking the software into smaller, reusable components that can be developed and tested independently. 2.Abstraction: Hiding the implementation details of a component and exposing only the necessary functionality to other parts of the software. 3.Encapsulation: Wrapping up the data and functions of an object into a single unit, and protecting the internal state of an object from external modifications. 4.Reusability: Creating components that can be used in multiple projects, which can save time and resources. 5.Maintenance: Regularly updating and improving the software to fix bugs, add new features, and address security vulnerabilities. 6.Testing: Verifying that the software meets its requirements and is free of bugs. 7.Design Patterns: Solving recurring problems in software design by providing templates for solving them. 8.Agile methodologies: Using iterative and incremental development processes that focus on customer satisfaction, rapid delivery, and flexibility. 9.Continuous Integration & Deployment: Continuously integrating the code changes and deploying them into the production environment. Main Attributes of Software Engineering Software Engineering is a systematic, disciplined, quantifiable study and approach to the design, development, operation, and maintenance of a software system. There are four main Attributes of Software Engineering. 1.Efficiency: It provides a measure of the resource requirement of a software product efficiently. 2.Reliability: It assures that the product will deliver the same results when used in similar working environment. 3.Reusability: This attribute makes sure that the module can be used in multiple applications. 4.Maintainability: It is the ability of the software to be modified, repaired, or enhanced easily with changing requirements. Dual Role of Software There is a dual role of software in the industry. The first one is as a product and the other one is as a vehicle for delivering the product. Objectives of Software Engineering 1.Maintainability: It should be feasible for the software to evolve to meet changing requirements. 2.Efficiency: The software should not make wasteful use of computing devices such as memory, processor cycles, etc. 3.Correctness: A software product is correct if the different requirements specified in the SRS Document have been correctly implemented. 4.Reusability: A software product has good reusability if the different modules of the product can easily be reused to develop new products. 5.Testability: Here software facilitates both the establishment of test criteria and the evaluation of the software concerning those criteria. 6.Reliability: It is an attribute of software quality. The extent to which a program can be expected to perform its desired function, over an arbitrary time period. 7.Portability: In this case, the software can be transferred from one computer system or environment to another. 8.Adaptability: In this case, the software allows differing system constraints and the user needs to be satisfied by making changes to the software. 9.Interoperability: Capability of 2 or more functional units to process data cooperatively. Program vs Software Product Parameters Program Software Product Software is when a program is made available for A program is a set of commercial business and is instructions that are given properly documented along Definition to a computer in order to with its licensing. achieve a specific task. Software Product = Program + Documentation + Licensing. Software Development usually follows a life cycle, which involves the feasibility Program is one of the stages study of the project, Stages Involved involved in the development requirement gathering, of the software. development of a prototype, system design, coding, and Advantages of Software Engineering 1.Improved Quality 2.Increased Productivity 3.Better Maintainability 4.Reduced Costs 5.Increased Customer Satisfaction 6.Better Team Collaboration 7.Better Scalability 8.Better Security Disadvantages of Software Engineering 1.High upfront costs 2.Limited flexibility 3.Bureaucratic 4.Complexity 5.Limited creativity 6.High learning curve 7.High dependence on tools 8.High maintenance