ECM1005 Principles of Software Engineering Module – 1 Software Engineering Introduction Acknowledgement • The contents of this video lectures are prepared based on the following resources: • Roger Pressman, Software Engineering: A Practitioner's Approach, 8th Edition, McGraw-Hill, 2014. • Ian Sommerville, Software Engineering, 10th Edition, Pearson, 2015. Outlines • • • • • • • • • • Engineering Software Software cost Software failure Professional software development Software product and specification Attributes of good software Software Engineering Issues Application types Engineering • Engineering is the application of scientific and practical knowledge in order to invent, design, build, maintain and improve systems, process, etc. What is software? • Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market. • Collection of programs • Computer software, or simply software, is a collection of data or computer instructions that tell the computer how to work. Software cost • Software costs regularly govern computer system costs. The software costs is usually greater than the hardware cost in PC. • Software maintenance cost is more compared to development costs. For systems with a long existence, maintenance costs may be several times development costs. • Software engineering is concerned with cost-effective software development. Software project failure • Growing system complexity • When the demand changes, new software engineering techniques help us to build larger, more complex systems. • Systems have to be construct and delivered more quickly; larger, even more complex systems are required • New capabilities should be added to system that were previously thought to be impossible. • Software project failure(without using software engineering) • Software written without using software engineering methods and techniques is fairly easy. • Many companies developed their products without using software engineering methods and their software is quiet expensive and less reliable Professional software development • Commonly asked questions about software engineering • • • • • • • • • • What is software? What are the characteristics of good software? What is software engineering? What are the essential software engineering activities? What is the difference between software engineering and computer science? What is the difference between software engineering and system engineering? What are the key challenges facing software engineering? What are the costs of software engineering? What are the best software engineering techniques and methods? etc Software Product • Generic products • Stand-alone systems that are promoted 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 custom-built for a specific customer to meet their own requirements. • Examples – embedded control systems, air traffic control software, traffic monitoring systems. Essential attributes of good software • Maintainability • Dependability and security • Efficiency • Acceptability Software engineering • 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. • Engineering • Using appropriate theories and methods to solve problems bearing in mind organizational and financial constraints. • Aspect of software production • It covers project management, development tools, methods etc. to support software production. *Definition are referred from Ian Sommerville, Software Engineering, 10th Edition, Pearson, 2015. Significance of software engineering • Individuals and society rely more on advanced software systems. • Need to produce reliable and trustworthy systems economically and quickly. • Should be low cost • Long life • Using software engineering methods and techniques for software systems rather than just write the programs as if it was a personal programming project reduce the cost and complexity 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. Common issues that affect software • Heterogeneity • Systems are distributed across network and need to operate in different types of computer and mobile devices. • Business and social change • Able to adapt the new technologies and emerging economies for developing the new software quickly and made available to society. • Able to change their existing software and to rapidly develop new software. Common issues that affect software • Security and trust • It is important that , is we can trust the software or not. Since its intertwined with all aspects of our lives • Scale • Software has to be developed for global community and wide range of scales, from very small embedded systems in portable or wearable devices through to Internet-scale and cloud-based systems. Application types • Stand-alone applications • Individual applications that run on local computer ,such as PC and doesn’t require internet to access necessary functionalities. • Interactive transaction-based applications • Applications that carry out on a remote computer and are accessed by users from their own PCs or terminals. • Example: 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. Application types • Batch processing systems • Designed to process larger data in batches for business systems • Entertainment systems • Systems used for personally to entertain the user • Systems for modeling and simulation • These are systems that are developed by scientists and engineers to model physical processes or situations, which include many, separate, interacting objects. Application types • Data collection systems • Systems used to collect the environmental data using sensor network and send data to other system for processing. • Systems of systems • These are systems that are composed of a number of other software systems. Summary • Software Engineering • Attributes of good software • Software Cost/Failure • Issues in developing software • Application types