Introduction to Software Engineering
Topic Covered What is software? Attribute of good S/w? Computer Software? What is Software Engineering? Evolving Role of Software Engg? Software Crisis? IEEE Software Engineering?
Software Software is a set of items or objects that form a “configuration” that includes- Programs Documents Data... The software Software- Provides good product with useful information. Transforms the data so that it can be more useful in a local context. Manages business information to enhance competitiveness. Provides a gateway to worldwide networks like internet.
Components of software Software= Program+Documentation+Operating Procedures
What are the attributes of good software? The software should deliver the required functionality and performance to the user and should be maintainable, dependable and acceptable. Maintainability- Software must evolve to meet changing needs; Dependability- Software must be trustworthy; Efficiency- Software should not make wasteful use of system resources; Acceptability- Software must accepted by the users for which it was designed.
Functionality to meet stated and implied need Usability to be understood, learned and used Reliability To maintain a specified level of performance Portability To be adapted for different specified environment
Types of Software Custom For a specific customer Generic Sold on open market Often called COTS (Commercial Off The Shelf) Shrink-wrapped Embedded Built into hardware Hard to change
Software When a software succeeds—when it meets the needs of the people who use it, when it performs flawlessly over a long period of time, when it is easy to modify and even easier to use—it can and does change things for the better.
Software But when software fails—when its users are dissatisfied, when it is error prone, when it is difficult to change and even harder to use—bad things can and do happen. We all want to build software that makes things better, avoiding the bad things that lurk in the shadow of failed efforts. To succeed, we need discipline when software is designed and built. We need an engineering approach.
Computer software Become a driving force. Engine that drives business decision making. Serves as the basis for modern scientific investigation and engineering problem solving. A key factor that differentiates modern products and services. It is embedded in systems of all kinds: – transportation, – medical, – telecommunications, – military, – industrial processes, – entertainment, – office products,... (The list is almost endless. )
What is it? Computer software is the product that software engineers design and build. It encompasses programs that execute within a computer of any size and architecture, documents that encompass hard-copy and virtual forms, and data that combine numbers and text but also includes representations of pictorial, video, and audio information.
Who does it? Software engineers build it, and virtually everyone in the industrialized world uses it either directly or indirectly.
Why is it important? Because it affects nearly every aspect of our lives and has become pervasive in our commerce, our culture, and our everyday activities.
What are the steps? You build computer software like you build any successful product, by applying a process that leads to a high-quality result that meets the needs of the people who will use the product. You apply a software engineering approach.
What is the work product? From the point of view of a software engineer, the work product is the programs, documents, and data that are computer software. But from the user’s viewpoint, the work product is the resultant information that somehow makes the user’s world better.
Software Engineering Definition The technology encompasses a process, a set of methods, and an array of tools that we call software engineering. OR The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints. OR A discipline whose aim is the production of quality software, software that is delivered on time, within budget, and that satisfies its requirements. OR
Software Engineering Definition Software engineering is an engineering discipline which is concerned with all aspects of software production. Software engineers should- adopt a systematic and organized approach to their work use appropriate tools and techniques depending on the problem to be solved, the development constraints and use the resources available
The Evolving Role of Software Engg Software delivers the most important product of our time—”information”. – 1960’s Early Years-Machine Code – 1970’s Project Years-High Level Language – 1980’s Process & Project Years-4 th Gen Language – 1990’sProcess & Production Years-Object Oriented Development – 2000’s Production Years-Object oriented Development & Software Reuse
Software Crisis A software failure is a software project that has one or more of the following: – Over budget – Late – Does not satisfy user needs or expectations Does not meet functional or performance requirements Does not meet quality requirements
Software Crisis “The construction of new software, which is pleasing to both user and buyer and does not contain errors, is an unexpectedly hard problem”. It is perhaps the most difficult problem in engineering today. Referred to as the “software crisis,” it has become the longest continuing crisis in the engineering world, and it continues unabated.”
What is causing software crisis? Software requirements do not adequately describe user needs or customer expectations. Project planning is frequently unrealistic, incomplete, or ignored. Project cost and schedule estimates are underestimated or established by management edict. Software quality is difficult to specify, design, and build-to. Software development progress is difficult to see, progress is often unknown. Changes in requirements are not accompanied by changes in software plans. Design is changed without changing requirements. Standards are not used or documented.
Effort, Software Size, & Complexity
IEEE Software Engineering Exam (Certified Software Development Professional) Before taking exam, candidate needs- – At least a B.S. degree – A minimum of 9000 hours of software engineering experience – Must adhere to code of ethics Exam is 3.5 hours and is 180 multiple choice questions. Exam costs $450. Industry group prepares exam questions.
END