320 likes | 346 Views
Learn why software engineering is crucial, explore ethical and professional issues, understand the relation to systems analysis, and discover the challenges faced in the field. Explore software development crises and the need for a disciplined approach to avoid errors.
E N D
Overview • Objectives • FAQs about software engineering • Ethical and professional issues • SW engineering vs. Systems Analysis • Course Syllabus
Objectives • Introduce what software engineering is and why it is important • Understand ethical and professional issues that are important for software engineers • Understand the relation between this course and the systems analysis and design • View of topics to be discussed this course
Class Activity: Technology and us With your team write down a list of everyday devices we use that contain software?
Software development crises Projects were: • Late • Over budget • Unreliable • Difficult to maintain • Performed poorly
Software errors... the cost Errors in computer software can have devastating effects
CNN: Computer glitch delays dozens of UK flights Saturday 3rd October 2009-London, England (CNN) Dozens of flights from the UK were delayed Saturday after a glitch in an air traffic control system in Scotland, but the problem was fixed a few hours later. The agency said it reverted to backup equipment as engineering worked on the system. The problem did not create a safety issue but could cause delays in flights. Read more at http://edition.cnn.com/2009/WORLD/europe/10/03/uk.flights.delayed
Loss of the Mars Climate orbiter in 1999 because an error in a Metric to English conversion formula (pounds and Kilograms)[1]
Ariane 5 Explosion • Caused by an overflow error. • Watch the video http://www.youtube.com/watch?v=z-r9cYp3tTE
Therefore.. A well-disciplined approach to software development and management is necessary. This is called engineering.
Software engineering The notion of software engineering was first proposed in 1968.
What is software? • Software is a product that software engineers design and build • It encompasses programs, documents, and data
What is Software Engineering? “An engineering discipline that is concerned with all aspects of software production from the early stages of system specification to maintaining the system after it has gone into use” [4]
Software Types There are two types of software products • Generic products • Customized or bespoke products
What is the difference between software engineering and computer science? • Computer science Theory and fundamentals • Software engineering Practicalities of delivering useful software • Software engineers need computer science knowledge
What is the difference between software engineering and system engineering? System engineering Hardware + Software + Process Older than software engineering Software engineering is part of system engineering
What is a Software Process? • Set of activities and associated results that produce a software product. • There are four fundamental activities common to all software process models • SW specification: • What does the customer need “Requirements”? • What are the constraints? • SW development • Design & programming • SW validation: • Checking whether it meets requirements • SW evolution: • Modifications (e.g. customer/market)
What is a Software Process Model? • A simplified description of a SW process that presents one view of that process • Examples of process perspectives are • Workflow perspective • Sequence of activities: Human Actions • What is input, output, and dependencies • Data-flow perspective - information flow; • Activities = transformations of information • How the input is transformed into output • Role/action perspective • What is the role of people step of the process?
What are the costs of SW engineering? • No simple answer, depends on : • The process used, and • The type of software being developed • Each generic approach has a different profile of cost distribution. • Roughly 60% of costs are development costs, 40% are testing costs. • For custom software, evolution costs often exceed development costs.
What are software engineering methods? • Structured approaches to software development which include system models, notations, rules, design advice and process guidance. • Model descriptions • Descriptions of graphical models which should be produced; • Rules • Constraints applied to system models; • Recommendations • Advice on good design practice; • Process guidance • What activities to follow.
What is CASE? • CASE (Computer Aided Software Engineering) • Programs used to support software process activities such as system modeling, debugging, and testing • Some CASE tools include automatic code generation from diagrams.
What are the attributes of good software? Some essential attributes :
Activity What are the key attributes for..
Professional and Ethical responsibility Please read from the book section 1.2 pages 14-17
What you studied in System Analysis course constitutes part of software engineering. Software Engineering is a broader subject. To be a software engineer, you must master several skills, one of which is analysis and design. SW engineering vs. Systems Analysis
References • PRESS&SUN-BULLETIN, The Binghamton Press Co., Binghamton, NY, October 1,1999. • “Software Hell: Is there a way out?”, BUSINESS WEEK, December 6, 1999. • IEEE Standards Collection: Software Engineering, IEEE standard 610.12-1990, IEEE 1993. • Sommerville, Ian “Software Engineering”, 8th edition, Addison-Wesley.