Learning Approach 1. Lectures : Tuesday 11 a.m. - 1 p.m. 2. Laboratory/Tutorial : Wednesday 8 a.m. - 10 a.m. (Starts from next week, June 19 th ) Evaluation 1. Final Exam (attendance > 80 %) : 50% 2. Course Work - Written Test : 20% - Assignment/Project : 30% Text Book Ian Sommerville, Software Engineering, Ninth Edition, Pearson Publication
Focus on the concept of Software Engineering process and management Discuss the process, techniques and deliverables associated with engineering requirement Software verification and validation
Define and describes the software engineering terms and concepts Explain the software process, management, validation and verification Analyze the problem based on software engineering process models and specification document Apply software engineering techniques for engineering problem
Computer programs and associated documentation to perform specific tasks Software products may be developed for a particular customer or general market Example: Microsoft Offices Photoshop Games Smartphone Apps
Engineering discipline that includes all aspects of software production From the stages of system specification through to maintaining the system after utilization Includes technical process of development, project management, the development of tools, methods etc. to support software production
Nowadays, most of the individuals and society rely on electronic devices which requires advanced software systems. It is cheaper to use software engineering methods and techniques for software systems rather than personally write the programs. Most of costs are due to the software changing after it has gone into use.
2011 : Cash machine bug benefits customers by giving them extra money An Australian bank began giving out large sums of money from 40 cash machines across one city. Officials at the company said they were operating in stand-by mode, so could not identify the account balances of customers. 2012 : US elections vote glitch sees nomination problems Computer problems drew complaints across the US during the 2012 elections, with numerous problems with voting machine glitches reported by voters. An example was touch screen errors automatically changing the vote from one candidate to another and not allowing voters to reselect or correct the error. and many more
Definition Computer Science Study of theoretical foundation of computation and their application in computer system Software Engineering One of the computer science discipline concerned with practicalities of developing and delivering useful software Area/ Application/ Product Computer Graphics Artificial Intelligence Computer Security 3D Animation e.g. Maya Facial Recognition e.g. in Facebook Antivirus Software e.g. Norton and Mcfee
Definition System Engineering Interdisciplinary field of engineering, that focuses on the development and organization of complex artificial systems. Software Engineering One of the computer science discipline concerned with practicalities of developing and delivering useful software Objective Application /Product Building and developing systems that includes both hardware and software which considers the business and the technical needs of all customers Electronic device e.g. laptop and computer, Electronic video games e.g. PlayStation and XBox Building and maintaining software systems 3D Animation e.g. Maya, Anivirus Software e.g. Norton and Mcfee
Software costs often dominate computer system costs software cost > hardware cost Software requires professionals for development human power > machine Software costs more to maintain than it does to develop Software engineering is concerned with costeffective software development
1. Generic products Stand-alone systems that are marketed and sold to any customer e.g. PC software such as graphics programs, project management tools, CAD software 2. Customized products Software that is commissioned by a specific customer to meet their own needs e.g. Embedded control systems, air traffic control software, traffic monitoring systems.
1. Generic products The specification of what the software should do is owned by the software developer Decisions on software change are made by the developer. 2. Customized products The specification of what the software should do is owned by the customer for the software Customer make decisions on software changes that are required.
1. Software Specification customers and engineers define the software that is to be produced and the constraints on its operation 2. Software Development the software is designed, programmed and implemented 3. Software Validation the software is checked to ensure if it meets the requirement by the customer 4. Software Evolution the software is modified to reflect changing customer and market requirements
Product characteristic Maintainability Dependability and security Efficiency Acceptability Description Software should has the ability to evolve to meet the changing needs of customers due to the changing business environment Software dependability refers to reliability, security and safety Dependable software should not cause physical or economic damage in the event of system failure Malicious users should not be able to access or damage the system Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency includes responsiveness, processing time, memory utilisation, etc Software must be acceptable to the type of users for which it is designed It must be understandable, usable and compatible with other systems that they use
1. Heterogeneity Systems are required to operate as distributed systems on different types of computer and mobile devices 2. Business and social change Business and society need to be able to change their existing software as emerging economies develop and new technologies become available 3. Security and trust The software have to be secure to be trusted with important information
There are many different types of software system and there is no universal set of software techniques The software engineering methods and tools used depend on: i. type of application being developed ii. iii. requirements of the customer background of the development team
1. Stand-alone applications application systems that run on a local computer include all necessary functionality and do not need to be connected to a network e.g. : Office application, photo manipulation software etc. 2. Interactive transaction-based applications applications that execute on a remote computer and are accessed by users from their own PCs or terminals e.g. : web applications such as e-commerce, online shopping 3. Embedded control systems software control systems that control and manage hardware devices e.g. : software in mobile phone, cars, electronic appliance at home
4. Batch processing systems These are business systems that are designed to process data in large batches e.g. : phone billing system, salary payment system 5. Entertainment systems primarily for personal use and are intended to entertain the user e.g. : games 6. 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. e.g. : Heat transfer simulation, wind turbine simulation
7. Data collection systems systems that collect data from their environment using a set of sensors and send that data to other systems for processing. e.g. : Weather forecast, Gas monitoring 8. Systems of systems systems that are composed of a number of other software systems e.g. : Global Positioning System (GPS) which consists of multiple systems to transmit, calculate and send the data position to users.
Fundamental principles that apply to all types of software system: 1. Systems should be developed using a managed and understood development process 2. Dependability and performance are important for all types of system No failures, secure from external attack and efficient 3. Understanding and managing the software specification and requirements (as requested by customers/users) are important 4. Should be effectively reusable reuse of existing software that has already been developed rather than write new software
Computers have a central and growing role in modern development, therefore software engineers have significant opportunities or give other opportunity or influence others to do good or cause harm Therefore, code of ethics is produced A set of principles/standards of expected behaviour for professional software engineers Issues on professional responsibility: 1. Confidentiality Engineers should normally respect the confidentiality of their employers or clients whether or not a formal confidentiality agreement has been signed
2. Competence Engineers should not misrepresent their level of competence and should accept work within their ability 3. Intellectual Property Rights Engineers should be aware of local laws governing regarding the protection of the use of intellectual property (such as patents, copyright, etc) 4. Computer Misuse Software engineers should not misuse other people s computers, e.g. playing games on an employer s machine, or disseminating viruses.
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 Different types of system requires different software engineering tools and techniques for their development The fundamental ideas of software engineering are applicable to all types of software system Software engineers have responsibilities to the engineering profession and society, and also must obey the ethics codes
Name : Matric Number : Question: What are the four essential attributes of a good software?