Software Engineering Introduction PDF

Summary

This document provides an introduction to software engineering, covering topics such as software types (stand-alone, interactive, embedded, etc.), the cost of software, and different software development processes. It aims to be a useful introduction for understanding the concepts of software engineering.

Full Transcript

SOFTWARE ENGINEERING CHAPTER 1 “Introduction to Software Engineering” 1 Introduction to Software Engineering Software Engineering Softwa...

SOFTWARE ENGINEERING CHAPTER 1 “Introduction to Software Engineering” 1 Introduction to Software Engineering Software Engineering Software In a computer system, the software is a set of instructions or commands that tell a computer what to do. In other words, the software is a computer program that provides a set of instructions to execute a user’s commands and tell the computer what to do. Introduction to Software Engineering Software Engineering Dual Roles of Software Today, software is a product, and the vehicle for delivering a product.  As a product, it delivers the computing potential using computers  Example: Application Software  As the vehicle used to deliver the product: Form the basis for the control of the computer resources, networks, and control other programs  Example: OS, Vmware, and other software development tools. Software delivers the most important product of our time — information. Introduction to Software Engineering Software Engineering 8 Types of Software application 1. Stand-alone applications  Run on a local computer, such as a PC.  Do not need to be connected to a network. 2. Interactive transaction-based applications  Execute on a remote computer  Accessed by users from their own computers.  Example: web apps, Client-server applications. 3.Embedded control systems  Software systems that control and manage hardware devices.  Numerically, there are probably more embedded systems than any other type of system.  Examples: Image processing, motion detection, traffic control etc Introduction to Software Engineering Software Engineering 8 Types of Software application 4. Batch processing systems  Business systems designed to process data in large batches.  Example: Bill Process, payroll process 5.Entertainment systems  Primarily for personal use and intended to entertain the user.  Example: Home theater Models, video games console 6.Systems for modeling and simulation  Developed to model physical processes or situations  Example: Weather and climate models, car crash models etc Introduction to Software Engineering Software Engineering 8 Types of Software application 7. Data collection systems  Collect data from their environment using a set of sensors.  Send that data to other systems for processing. 8. Systems of systems  Composed of a number of independent software systems combine to accomplish goal together  Example: Department of Defense application, power grids, sensor NW Introduction to Software Engineering Software Engineering Software Cost Software costs often dominate computer system costs. The costs of software on a PC are often greater than the hardware cost. Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs. Software engineering is concerned with cost-effective software development. So, Software engineering comprise of theories, methods and tools for professional software development. Introduction to Software Engineering Software Engineering Software Engineering Generic Definition  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 maintainable software. The IEEE definition[IEEE93a]:  Software Engineering: The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. Introduction to Software Engineering Software Engineering Software Products In SE, Software products are grouped in Generic & Customized Generic software products  Stand-alone systems that are marketed and sold to any customer who wishes to buy them.  The specification of what the software should do, is owned by the software developer and decisions on software change are made by the developer.  Examples – PC software such as MS programs, graphics programs, project management tools; CAD software; Collaboration software such as Skype, MS Teams etc. Introduction to Software Engineering Software Engineering Software Products Customized software products  Software that is commissioned by a specific customer to meet their own needs.  The specification of what the software should do is owned by the customer or the software and they make decisions on software changes that are required.  Examples – embedded control systems, air traffic control software, traffic monitoring systems. Introduction to Software Engineering Software Engineering VULNERABILITY DETECTION & SOFTWARE DEVELOPMENT  Most of the vulnerabilities are injected during the early phases of software development  Detection of vulnerabilities decreases along the phases of software development  However, cost of fixing them after release is incredibly high, and risky than fixing in earlier stages https://studysection.com/blog/shift-left-approach-to-software-testing/ Introduction to Software Engineering Software Engineering 11 Why do Software Projects fail? Common Issues  Unrealistic project goals  Badly defined specifications (requirements)  Poor communication with stakeholders  Unmanaged risks  Poor System development practices  Poor project management  Stakeholder politics  Commercial pressures For more information: http://spectrum.ieee.org/computing/software/why-software-fails Introduction to Software Engineering Software Engineering 12 Importance of Software Engineering Introduction to Software Engineering Software Engineering Importance of Software Engineering Productivity: Because it contains testing systems at every level, proper care is done to maintain software productivity. Effectiveness: Following proper software development standard will create Effective software. Handling Big Projects: A corporation must use a software engineering methodology in order to handle large projects without any issues. Reliable software: It is the company’s responsibility to deliver software products on schedule and to address any defects that may exist. Introduction to Software Engineering Software Engineering Importance of Software Engineering To decrease time: It will save a lot of time if you are developing software using a software engineering technique. To manage the cost: Software engineering Programmers plan everything and so reduce all those unnecessary activities. Reduces complexity: Large challenges are broken down into smaller ones and solved one at a time in software engineering. Individual solutions are found for each of these issues. Introduction to Software Engineering Software Engineering Basic Software Development Process activities  There are many different software processes but all involve these activities  Specification – Defining what the system should do (stating the requirements)  Development – Defining the organization of the system (Design) and implementing the system  Validation – Checking that the system does what the customer wants  Evolution – Changing the system in response to customer needs. Note: Different software processes do the activities in different ways Introduction to Software Engineering Software Engineering 16 Essential attributes of good (Quality) software Software characteristic Description It includes flexibility and Integration. Software should be written in such away that it can evolve to meet the changing needs of customers. This is a critical attribute because Maintainability software change is an expected requirement of a changing business environment and compatible with other systems that they use. The degree to which the software is dependable over time and available when required Dependability/ Reliability (no downtimes) Software should not make wasteful use of system resources such as memory and processor Efficiency cycles. Efficiency therefore includes responsiveness, processing time, memory utilization, etc (e.g promptly responding to customers’ needs) Software must be acceptable to the type of users for which it is designed. This means that Acceptability/Usability it must be understandable, usable Software should not cause physical or economic damage in the event of system failure. Security Malicious users should not be able to access or damage the system and Introduction to Software Engineering Software Engineering 17 Fundamental principles of Software Engineering  Some principles apply to software design, irrespective of the development techniques Systems should be developed using a managed and understood development process. Of course, different processes are used for different types of software. It is very important to Understand and manage the software requirements and software specification (what the software should do). Where appropriate, you should reuse software that has already been developed rather than write new software. Introduction to Software Engineering Software Engineering 18 Software Engineering and the Web  The Web is now a platform for running application and organizations are increasingly developing web-based systems rather than local systems.  Web services allow application functionality to be accessed over the web.  Cloud computing is an approach to the provision of computer services where applications run remotely (“on the cloud’). Users do not buy software, they pay according to use (Pay as you go). Introduction to Software Engineering Software Engineering 19 Software Engineering (SE) Ethics Software Engineering (SE) Ethics Introduction to Software Engineering Software Engineering 20 Software Engineering (SE) Ethics SE involves wider responsibilities than simply application of technical skills. Software engineers must behave in a honest and ethically responsible way. Ethical behavior is more than simply following the law but involves following a set of principles that are morally correct. Introduction to Software Engineering Software Engineering Software Engineering (SE) Ethics Software Engineers should: Respect the confidentiality of the employers or clients irrespective of whether or not a formal confidentiality agreement has been signed. Not misrepresent (falsify) their level of competence. Be aware of local laws governing the use of intellectual property (IPR) such as patents, copyright, etc. Not use their technical skills to misuse other people’s computers. Introduction to Software Engineering Software Engineering Software Engineering (SE) Ethics Code of Ethics: Software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software in a beneficial and respected profession. For more information: Code of Ethics for Software Engineers Introduction to Software Engineering Software Engineering Software Engineering (SE) Ethics Code of Ethics: 1. Public – Software engineers shall act consistently with the public interest. 2. Client and employer – Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest. 3. Product – Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. 4. Judgment – Software engineers shall maintain integrity and independence in their professional judgment. Introduction to Software Engineering Software Engineering Software Engineering (SE) Ethics 5. Management - Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance. 6. Profession - SE shall advance the integrity and reputation of the profession consistent with the public interest. 7. Colleagues - Software engineers shall be fair to and supportive of their colleagues. 8. SELF - Software engineers shall participate in learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession. Introduction to Software Engineering Software Engineering

Use Quizgecko on...
Browser
Browser