CS-367 Software Engineering Fall 2012 1 Organizational Details Class Meeting: 4:00am-6:45pm, Wednesday, Room SCIT-222 Instructor: Dr. Igor Aizenberg Office: Science and Technology Building, 104C Phone 903-334 6654 e-mail: igor.aizenberg@tamut.edu Office hours: Tuesday 12:15p-2:30p, Wednesday 12:00p-4:00p, Thursday 12:15p-2:30p; 3:45p-5:15p Class Web Page: http://www.eagle.tamut.edu/faculty/igor/CS-367.htm 2 Text Book • Ian Sommerville, Software Engineering, 9/e (2011), Addison-Wesley, Pearson 2012 • ISBN: 978-0-13-703515-1 3 Structure of the Course • Lectures (6-7 weeks) • Software design project (7-8 weeks) – we will design a simple image processing system for noise filtering and image enhancement (all students will work in a single team) 4 Control Essay on the stages and processes of software engineering (after the last lecture) Course Project 5 Grading Grading Method Essay: Course Project: 25% 75% Grading Scale: 90%+ A 80%+ B 70%+ C 60%+ D less than 60% F 6 Engineering and Software Engineering • Engineering is the analysis, design, construction, verification and management of technical (or social) entities • Software Engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use 7 Software • Computer software is the product that software engineers design and build. It includes: Source code The executable programs Documentation (both electronic and hard copy) Data associated with a program – this may take the form of numbers and text, or even pictorial and multimedia formats 8 Software • Software products may be developed for a particular customer or may be developed for a general market • Generic products Stand-alone systems that are marketed and sold to any customer who wishes to buy them. Examples – PC software such as graphics programs, project management tools; CAD software; software for specific markets such as appointments systems for dentists. • Customized products Software that is commissioned by a specific customer to meet their own needs. Examples – embedded control systems, air traffic control software, traffic monitoring systems 9 Product specification • Generic products The specification of what the software should do is owned by the software developer and decisions on software change are made by the developer • Customized products The specification of what the software should do is owned by the customer for the software and they make decisions on software changes that are required 10 Software Engineering: Key Points • The economies of ALL developed nations are dependent on software • More and more systems are software controlled • Software engineering is concerned with theories, methods and tools for professional software development • Software engineering expenditure represents a significant fraction of GDP in all developed countries 11 Software Engineering: Cost • Software costs dominate computer system costs. The costs of software on are usually much 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 costeffective software development 12 Software Engineering: Cost • After surveying 8,000 IT projects, Standish Group reported about 30% of all projects were cancelled. • Average cancelled project in U.S. is about a year behind schedule and has consumed 200% of expected budget (Capers Jones). • Work on cancelled projects comprises about 15% of total U.S. software efforts, amounting to as much much as $14 billion in 1993 dollars (Capers Jones). 13 Software Engineering: Cost • For generic software, roughly 60% of costs are development costs, 40% are maintenance costs • For customized software, a picture is opposite: development costs usually are significantly lower than development costs 14 Software Engineering: Cost Custom software 15 Software Engineering: Cost Custom software 16 Software Engineering: Cost • Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability • Distribution of costs depends on the development model that is used 17 What is a software process? • A set of activities whose goal is the development or evolution of software • Generic activities in all software processes are: Specification - what the system should do and its development constraints Development - production of the software system Validation - checking that the software is what the customer wants Evolution - changing the software in response to changing demands 18 What is a software process model? • A simplified representation of a software process, presented from a specific perspective • Examples of process perspectives are Workflow perspective - sequence of activities Data-flow perspective - information flow Role/action perspective - who does what • Generic process models Waterfall Evolutionary development Formal transformation Integration from reusable components 19 Software Engineering: Importance • Head of Air Force Systems Command: ‘‘Software is the Achilles heel of weapons development" • 7 out of every 10 major weapons development programs are encountering software problems and the rate is increasing. 20 Software Engineering: Key Issues • Of completed projects, 2/3 experience schedule delays and cost overruns • 2/3 of completed projects experience low reliabilityand quality problems in first year of deployment • Software errors in fielded systems typically range from 0.5 to 3.0 occurrences per 1000 lines of code (Bell Labs survey) • Civilian software: at least 100 English words produced for every source code statement • Military: about 400 words per 1 source statement 21 Software Engineering: Key Issues • Belady and Lehman’s Laws: Software will continually change • Software becomes increasingly unstructured as it is changed • Leveson’s Law: Introducing computers will not reduce personnel numbers or costs • Parkinson’s Law: "Software expands to fill the available memory" • Reiser’s Law: "Software is getting slower more rapidly than hardware becomes faster" 22 Why has software engineering become a discipline? • In the early years of computing (some 50+ years ago) the software applications that were created were small and relatively easy to test • With an increase in the speed of computers came the demand for larger more powerful applications 23 Why has software engineering become a discipline? • 40-50 years ago software project managers began developing software using informal approaches which led to software that was delivered late; over budget; unreliable; difficult to maintain • This “software crisis” became the motivation for a radically different developmental approach that needed to be both reliable and cost-effective 24 Why has software engineering become a discipline? This approach needed to answer the following questions: Why does it take so long to get software finished? Why are the development costs so high? Why can’t we find all the errors before the software is released? Why is there difficulty in measuring progress as the software is being developed? 25 Software Engineering Roles To understand software engineering roles the following definitions are required: • User - the person(s) who uses the software. • Software development - covers all aspects of software production before the product enters the maintenance phase, namely: requirements elicitation, authoring of specifications, design, implementation and testing 26 Software Engineering Roles These roles include: the customer, marketing and sales, program manager, product manager, project manager, business analyst, quality assurance and the software engineer. The customer is the individual or company for whom the product is developed The marketing and sales team markets and sells the product 27 Software Engineering Roles The program manager is responsible for coordinating interdependencies between projects in his/her portfolio. These projects might be for different software products The product manager is responsible for a given product in the program manager’s portfolio The project manager runs a given project 28 Software Engineering Roles The business analyst is responsible for getting requirements from clients and creating the relevant documentation The quality assurance personnel ensure that the software is functioning correctly The software engineer(s) are the individual (team) responsible for the production of the software 29 Role Relationship Diagram 30 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 31 CASE (Computer-Aided Software Engineering) • Software systems which are intended to provide automated support for software process activities. CASE systems are often used for method support • Upper-CASE – Tools to support the early process activities of requirements and design • Lower-CASE – Tools to support later activities such as programming, debugging and testing 32 Attributes of good software • The software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable • Maintainability – Software must evolve to meet changing needs • Dependability – Software must be trustworthy • Efficiency – Software should not make wasteful use of system resources • Usability – Software must be usable by the users for which it was designed 33 What differences has the web made to software engineering? • The web has led to the availability of software services and the possibility of developing highly distributed servicebased systems. Web-based systems development has led to important advances in programming languages and software reuse 34 The key challenges facing software engineering • Coping with legacy systems, coping with increasing diversity and coping with demands for reduced delivery times • Legacy systems – Old, valuable systems must be maintained and updated • Heterogeneity – Systems are distributed and include a mix of hardware and software • Delivery – There is increasing pressure for faster delivery of software 35 Software process activities • Software specification, where customers and engineers define the software that is to be produced and the constraints on its operation • Software development, where the software is designed and programmed • Software validation, where the software is checked to ensure that it is what the customer requires • Software evolution, where the software is modified to reflect changing customer and market requirements 36 Application types • Stand-alone applications – These are application systems that run on a local computer, such as a PC. They include all necessary functionality and do not need to be connected to a network. • Interactive transaction-based applications – Applications that execute on a remote computer and are accessed by users from their own PCs or terminals. These include web applications such as e-commerce applications. • Embedded control systems – These are software control systems that control and manage hardware devices. Numerically, there are probably more embedded systems than any other type of system 37 Application types • Batch processing systems – These are business systems that are designed to process data in large batches. They process large numbers of individual inputs to create corresponding outputs • Entertainment systems – These are systems that are primarily for personal use and which are intended to entertain the user • Systems for modelling and simulation – These are systems that are developed by scientists and engineers to model physical processes or situations, which include many, separate, interacting objects 38 Application types • Data collection systems – These are systems that collect data from their environment using a set of sensors and send that data to other systems for processing. • Systems of systems – These are systems that are composed of a number of other software systems 39 Key points • Software engineering is an engineering discipline that is concerned with all aspects of software production. • Essential software product attributes are: maintainability, dependability and security, efficiency and acceptability. • The high-level activities of specification, development, validation and evolution are part of all software processes • The fundamental notions of software engineering are universally applicable to all types of system development 40 Key points • There are many different types of system and each requires appropriate software engineering tools and techniques for their development • The fundamental ideas of software engineering are applicable to all types of software system 41