Course Grading• Quizzes(Surprise/Announced): 3%• Assignments: 5%• Final Project: 10%• Class Participation, Attendance etc.: 2%• Mid. Term Exam: 30%• Final Exam: 50% “Interaction is necessary, please ask question”
Course Outlines• Introduction to Computer-based System Engineering• Project Management• Software Specification• Requirements Engineering• System Modeling• Requirements Specifications• Software Prototyping• Software Design: Architectural Design, Object-Oriented Design, UML modeling, Function-Oriented Design• Quality Assurance; Processes & Configuration Management• Introduction to advanced issues: Reusability, Patterns• Assignments and projects on various stages and deliverables of SDLC
What is Software!• Program: The program or code itself is included in software• Data: The data on which the program operates is also considered as a part of software• Documentation: One important thing which we often forget is documentation. All the documents related to software development are considered as part of software
Nature of Software• What is software – Computer programs and associated documentation• Software is intangible – Hard to understand development effort• Software is not easy to reproduce – Cost is in its development – In other engineering products, manufacturing is the costly stage
Nature of Software(Contd…)• Untrained people can not produce something together – Quality problems are hard to notice• Software is not easy to modify – People make changes without fully understanding it• Software does not ‘wear out’ – It deteriorates by having its design changed: • erroneously, or • in ways that were not anticipated, thus making it complex
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
Types of Software(Contd…)• Real time software –E.g. control and monitoring systems –Must react immediately –Safety often a concern• Data processing software –Used to run businesses –Accuracy and security of data are key• Some software has both aspects
Importance of Software• Business decision-making• Modern scientific investigation and engineering problem solving• Games• Embedded Systems
Problems: Software Development/1• Ariane 501 whose maiden flight on June 4, 1996 ended in the launcher being explodedbecause of a chain of software failures“The failure of the Ariane 501 was caused by the complete loss of guidance and attitudeinformation 37 seconds after start of the main engine ignition sequence (30 seconds afterlift- off). This loss of information was due to specification and design errors in the softwareof the inertial reference system.”• London Ambulance System where because of a succession of software engineering failures,especially defects in project management, a system was introduced that failed twice in theautumn of 1992. Although the monetary cost, at “only’ about £9m, was small by comparisonwith other examples, it is believed that people died who would not have died if ambulanceshad reached them as promptly as they would have done without this software failure.
Problems: Software Development/2• Therac-25 where between 1985 and 1987 six people (at least) suffered serious radiationoverdoses because of software-related malfunctions of the Therac-25 radiation therapymachine. Three of them are thought to have died of the overdoses. An important root causewas a lack of quality assurance, which led to an over-complex, inadequately tested,underdocumentedsystem being developed, and subsequently to the failure to take adequatecorrective action.• Taurus a planned automated transaction settlement system for the London Stock Exchange,The project was canceled in 1993 after having lasted more than five years. The project costwas around £75m; the estimated loss to customers was around £450m; and the damage tothe reputation of the London Stock Exchange was incalculable.
Engineering vs. Software Engineering• Engineering: The process of productive use of scientific knowledge is called engineering• Software Engineering: This is the process of utilizing our knowledge of computer science in effective production of software systems (Difference b/w Computer Science and Software Engineering)
What is 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 (By IEEE)• All aspects of software production’ software engineering is not just concerned with the technical processes of software developemnt but also with the activities such as project development of tools, methods and theories to support software production (By Ian Somerville)
What is Software Engineering!(Contd..)• It is the set of processes and tools to develop software• It is the combination of all the tools, techniques and processes that used in software production• Software engineering encompasses all those things that are used in software production – Programming Language – Programming Language Design – Software Design Techniques – Tools – Testing – Maintenance – Development etc
Well Engineered Software• Characteristics of well-engineered software – It is reliable – It has good user-interface – It has acceptable performance – It is of good quality – It is cost-effective