- Slides: 22
EKT 421 SOFTWARE ENGINEERING Introduction to Software Engineering Dr. Nik Adilah Hanin Zahri adilahhanin@unimap. edu. my
What is Software? • 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
What is Software Engineering? 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
Importance of Software Engineering • 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.
Software Failures 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.
Computer Science vs. Software Engineering Computer Science Definition Study of theoretical foundation of computation and their application in computer system Area/ Computer Graphics Application/ Product Artificial Intelligence Computer Security Software Engineering One of the computer science discipline concerned with practicalities of developing and delivering useful software 3 D Animation e. g. Maya Facial Recognition e. g. in Facebook Antivirus Software e. g. Norton and Mcfee
System Engineering vs. Software Engineering System Engineering Definition Interdisciplinary field of engineering, that focuses on the development and organization of complex artificial systems. Objective Building and developing systems that includes both hardware and software which considers the business and the technical needs of all customers Application/ Product Electronic device e. g. laptop and computer, Electronic video games e. g. Play. Station and XBox Software Engineering One of the computer science discipline concerned with practicalities of developing and delivering useful software Building and maintaining software systems 3 D Animation e. g. Maya, Anivirus Software e. g. Norton and Mcfee
Software Costs • 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
Software Products 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.
Software Product Specification 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.
Software Process Activities 1. Software Specification 2. Software Development customers and engineers define the software that is to be produced and the constraints on its operation 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
Attributes of Good Software Product characteristic Maintainability 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 Dependability and damage in the event of system failure security • Malicious users should not be able to access or damage the system Efficiency • Software should not make wasteful use of system resources such as memory and processor cycles. • Efficiency includes responsiveness, processing time, memory utilisation, etc Acceptability • 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
General Issues on Software 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
Software Engineering Diversity • 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. requirements of the customer iii. background of the development team
Application Types 1. 2. 3. 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. 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 Embedded control systems § software control systems that control and manage hardware devices § e. g. : software in mobile phone, cars, electronic appliance at home
Application Types 4. 5. 6. Batch processing systems § These are business systems that are designed to process data in large batches § e. g. : phone billing system, salary payment system Entertainment systems § primarily for personal use and are intended to entertain the user § e. g. : games 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. § e. g. : Heat transfer simulation, wind turbine simulation
Application Types 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.
Software Engineering Fundamentals • Fundamental principles that apply to all types of software system: 1. 2. Systems should be developed using a managed and understood development process Dependability and performance are important for all types of system l 3. 4. No failures, secure from external attack and efficient Understanding and managing the software specification and requirements (as requested by customers/users) are important Should be effectively reusable l reuse of existing software that has already been developed rather than write new software
Software Engineering Ethics l 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 l Therefore, code of ethics is produced l 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