The first session of a software engineering module Presentation.pptx
TaolueChen1
13 views
21 slides
Oct 02, 2024
Slide 1 of 21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
About This Presentation
an introduction to software engineering, including different aspects such as requirement, UML, etc. It also discussed different challenges of software engineering
Size: 100.57 KB
Language: en
Added: Oct 02, 2024
Slides: 21 pages
Slide Content
Software Engineering I Session 1 Introduction to Software Engineering
Engineering Engineering is the utilisation of processes, methods, techniques and tools to design, build, and maintain objects . An engineer is a professional who applies processes, methods techniques and tools to solve problems within a specific domain (e.g. chemical engineering, aeronautical engineering, software engineering, etc.).
Software Software is a set of instructions for a computer to perform a specific task or tasks. Software is variously referred to as a program, a script or an application. There are many different classes of software including: Operating systems Embedded control systems Batch processing systems Entertainment systems Interactive transaction based applications
Software Engineering Software engineering is the engineering discipline that is concerned with all aspects of software production, from system inception through to system use and maintenance. It is the aggregation of processes , methodologies , techniques and tools that have evolved in the field of software development over the past forty years. Software engineering is distinct from systems engineering . Systems engineering includes hardware and network engineering in addition to software engineering.
Software Engineer A software engineer is a professional who is concerned with all or most aspects of software development, including designing, building, testing and maintaining software. The software engineer role is considered a generalist role rather than a specialist role like a systems analyst, a programmer, or a software tester. In practice, the specificities of the software engineering role tend to differ from organisation to organisation. In some organisations, for example, there is little distinction between programmers and software engineers, while in other organisations the distinction is clearer.
Software Engineering and Project Management Software engineering as a discipline is concerned with both the technical and project management aspects of software development. The technical aspect of software engineering is focused on individual technical skills, such as system modelling and programming. The project management aspect of software engineering is focused on activities with project wide scope, such as planning, risk management, people management, budget control, etc.
Importance of Software Engineering Software helps us confront many of the challenges facing us as a species (e.g. climate change mitigation, disease prevention, food production, etc.). We need to be able to build more effective software to meet these challenges. Software permeates and controls almost every aspect of our daily lives. The software we use needs to be reliable, secure, and safe. Good software engineering practices help to ensure reliability, security and safety.
Challenges of Software Engineering Diversity How to deal with the growing number of application types, devices and platforms. Complexity How to effectively produce larger and more complex systems. Interoperability How to make diverse, distributed, systems flexible enough to work together. Legacy Systems How to update, replace or maintain ageing systems. Business demands How to produce software quickly and in a cost effective manner. Ethics How to meet the evolving ethical challenges posed by the prevalence of digital technologies. Software engineers face significant challenges in the quest to design and build successful software. These include:
Software Engineering Diversity T here is no single software engineering approach that is applicable to all systems. The software engineering approach used will depend on: The type of application being developed. Software controlling a jumbo jet. An interactive game app for IOS devices. An accounts management system for a mobile phone company. The specific requirements of the customer. The size and scope of the system being developed. T he expertise of the development team. The procurement approach being employed (e.g. COTS, software reuse, bespoke, software as a service).
Software Engineering Processes A software process is an abstract representation of the activities needed for the development of a software product. There are several distinct software process models in software engineering (e.g. waterfall, incremental, iterative etc.). Four fundamental phases are common to all software process models. Software specification Defining the software and specifying constraints on its use. Software development Designing and building the software. Software validation Testing the software to ensure it meets requirements, and is safe, secure, dependable and reliable. Software evolution Modifying the software to meet changes in the business or organisational context.
Software Engineering Methodologies A software engineering methodology is a detailed set of guidelines for developing software. A software engineering methodology specifies elements such as: The required inputs and outputs of the software process phases. The documents that need to be produced during the development process. The techniques to be used for performing individual tasks. The tools to be used for completing tasks. Team roles and responsibilities in the development process. Examples of software engineering methodologies include Scrum , Unified Process , and Extreme Programming .
Software Engineering Techniques In software engineering, a technique refers to a set of detailed guidelines for how an individual task should be performed. Task Technique Requirements Specification FURPS, Use Cases Data Modelling Entity Relationship Modelling, UML Class Diagram Process Modelling Data Flow Diagram, UML Activity Diagram User Interface Modelling UX Design, Scenarios
Software Engineering Tools Software engineering tools are computer programs intended to assist the software development process. Tools can be applied at any stage of the development process (e.g. specification, development, etc.). Tools allow repetitive, well-defined actions to be automated, thus reducing the cognitive load on the software engineer. Commercially available tools range in size and complexity from simple code editors to complex integrated development environments (IDEs), capable of supporting an entire software project.
Characteristics of S uccessful S oftware Successful software will display the following characteristics: Maintainability Software should be sufficiently flexible so that it can adapt to a rapidly changing organisational context. Reliability Software should perform to expectations. It should be fault free. Safety Software should not pose a threat to the physical or mental well-being of users. Security Software should be resilient to malicious attacks. Efficiency Software should not waste system resources such as memory and processor cycles . Acceptability Software must be acceptable to users. It must be understandable, usable and compatible with other systems in the same class.
Software Failure There are countless examples of successful software projects. But there are also MANY examples of failures. Heathrow Terminal 5 Baggage System Nissan Airbags Ariane 5 RBS NHS Patient Record System The failure rate for software projects is significantly higher than in other engineering disciplines.
Impact of Software Failure Software failure can have diverse and significant impacts: Loss of life Injury Loss of investment Loss of revenue Loss of customer confidence Erosion of reputation/brand image
Reasons for Software Project Failure Software failure almost always stems from inadequacies in software engineering practices. Examples of inadequate software engineering practice that contribute to failure include: Poorly defined system requirements Poor communication among customers, developers, and users Inadequate testing Unmanaged risks Unrealistic project goals Poor development practices Poor project management
Measuring Software Performance Some software projects are obviously and unquestionably failures. However, the success or failure of the majority of software systems is more difficult to ascertain. To ascertain success or failure we use a range of software metrics . Example software metrics include: User satisfaction The extent to which a program meets pre-stated success criteria Cost effectiveness Application crash rate Code complexity Number of reported bugs Mean time between failures (MTBF)
The Context of Software Engineering Software engineering involves wider responsibilities than simply the application of technical skills . Software engineers have a responsibility to operate within existing legal, ethical and social frameworks.
The L egal Context of Software Engineering Software professionals have a responsibility to be aware of and to abide by the legislation which affects their practice. Significant pieces of legislation that relates to the development and use of software are: Failure to abide by legislation can lead to stiff penalties for organisations and individuals. Act of Parliament Year Focus Data Protection Act 1998 Privacy The Computer Misuse Act 1990 Hacking, phishing, etc. The Digital Economy Act 2010 Copyright, piracy, etc. The Protection from Harassment Act 1997 Cyberstalking
The Ethical Context of Software Engineering Software professionals should also be aware of their ethical responsibilities and avoid unethical behaviours. For example: Making false promises to customers Overstating qualifications and experience Charging for work not done Knowingly presenting substandard work. Ethical expectations for software engineers are set out in the codes of conduct of relevant professional bodies: British Computer Society . ACM/IEEE