2. 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”
3. 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
4. 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
5. 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
6. 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
7. 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
8. 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
9. Importance of Software
• Business decision-making
• Modern scientific investigation and
engineering problem solving
• Games
• Embedded Systems
10. Problems: Software Development/1
• Ariane 501 whose maiden flight on June 4, 1996 ended in the launcher being exploded
because of a chain of software failures
“The failure of the Ariane 501 was caused by the complete loss of guidance and attitude
information 37 seconds after start of the main engine ignition sequence (30 seconds after
lift- off). This loss of information was due to specification and design errors in the software
of 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 the
autumn of 1992. Although the monetary cost, at “only’ about £9m, was small by comparison
with other examples, it is believed that people died who would not have died if ambulances
had reached them as promptly as they would have done without this software failure.
11. Problems: Software Development/2
• Therac-25 where between 1985 and 1987 six people (at least) suffered serious radiation
overdoses because of software-related malfunctions of the Therac-25 radiation therapy
machine. Three of them are thought to have died of the overdoses. An important root cause
was a lack of quality assurance, which led to an over-complex, inadequately
tested,underdocumented
system being developed, and subsequently to the failure to take adequate
corrective 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 cost
was around £75m; the estimated loss to customers was around £450m; and the damage to
the reputation of the London Stock Exchange was incalculable.
12. 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)
13. 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)
14. 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
15. 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