lecture 1- intro to se
TRANSCRIPT
-
7/31/2019 Lecture 1- Intro to SE
1/29
-
7/31/2019 Lecture 1- Intro to SE
2/29
Learning Outcomes
Illustrate the concept of software engineering
Apply the concept of software engineering in thesystem development
Produce formal specification and softwaremodeling in a collaborative team environment
-
7/31/2019 Lecture 1- Intro to SE
3/29
Assessment
Quiz 5%
Mid Term Exam 20%
Lab work/Assignments 10%
Mini project 25%
Final Exam 40%
-
7/31/2019 Lecture 1- Intro to SE
4/29
Lecture 1
An Introduction to SoftwareEngineering
-
7/31/2019 Lecture 1- Intro to SE
5/29
Objectives
To introduce software engineering and toexplain its importance
To set out the answers to key questions aboutsoftware engineering
To introduce ethical and professional issues and
to explain why they are of concern to softwareengineers
-
7/31/2019 Lecture 1- Intro to SE
6/29
Software engineering
The economies of ALL developed nations aredependent on software.
More and more systems are software controlled Software engineering is concerned with theories,
methods and tools for professional softwaredevelopment.
-
7/31/2019 Lecture 1- Intro to SE
7/29
-
7/31/2019 Lecture 1- Intro to SE
8/29
Figure1.11 The roles of the development team
Maintenance
System Design
Requirements Analysisand Definition
Program Design
Program Implementation
Unit Testing
Integration Testing
System Testing
System DeliverySO
FTWAREDEVELOPMENT
STEPS
DEVELOPERROLES
ANALYST
DESIGNER
PROGRAMMER
TESTER
TRAINER
-
7/31/2019 Lecture 1- Intro to SE
9/29
FAQs about software engineering
What is software?
What is software engineering?
What is the difference between softwareengineering and computer science?
What is the difference between software
engineering and system engineering? What is a software process?
What is a software process model?
-
7/31/2019 Lecture 1- Intro to SE
10/29
FAQs about software engineering
What are the costs of software engineering?
What are software engineering methods?
What is CASE (Computer-Aided SoftwareEngineering)
What are the attributes of good software?
What are the key challenges facing softwareengineering?
-
7/31/2019 Lecture 1- Intro to SE
11/29
What is software? Computer programs and associated
documentation such as requirements, designmodels and user manuals.
Software products may be developed for aparticular customer or may be developed for a
general market. Software products may be
Generic - developed to be sold to a range of different customerse.g. PC software such as Excel or Word.
Bespoke (custom) - developed for a single customer according
to their specification. New software can be created by developing new
programs, configuring generic software systemsor reusing existing software.
-
7/31/2019 Lecture 1- Intro to SE
12/29
Variety of Software ProductsExamples
Real time : air traffic control
Embedded systems : digital camera, GPS
Data processing : telephone billing, pensions
Information systems : web sites, digital libraries
Sensors : weather data
System software : operating systems, compilers
Communications : routers, mobile telephones
Offices : word processing, video conferences
Scientific : simulations, weather forecasting
Graphical : film making, design
-
7/31/2019 Lecture 1- Intro to SE
13/29
Categories of Software Product
Generic (e.g., Microsoft Excel)
Packages (e.g., Mathematica)
Customized versions of generic packages (e.g.,UTeM's payroll system)
Bespoke (customized) (e.g., IRS internal system)
Demonstration, prototype, research,
-
7/31/2019 Lecture 1- Intro to SE
14/29
What is software engineering?
Software engineering is an engineeringdiscipline that is concerned with all aspects of
software production.
Software engineers should adopt a systematicand organised approach to their work and use
appropriate tools and techniques dependingon the problem to be solved, the developmentconstraints and the resources available.
-
7/31/2019 Lecture 1- Intro to SE
15/29
Computer Science Customer
TheoriesComputer
FunctionsProblem
Software
Engineering
Tools andTechniques
to Solve
Problem
-
7/31/2019 Lecture 1- Intro to SE
16/29
What is the difference between softwareengineering and computer science?
Computer science is concerned with theory andfundamentals; software engineering is
concerned with the practicalities of developingand delivering useful software.
Computer science theories are still insufficient to
act as a complete underpinning for softwareengineering.
-
7/31/2019 Lecture 1- Intro to SE
17/29
What is the difference between software
engineering and system engineering?
System engineering is concerned with all aspectsof computer-based systems developmentincluding hardware, software and processengineering. Software engineering is part of this
process concerned with developing the softwareinfrastructure, control, applications anddatabases in the system.
System engineers are involved in system
specification, architectural design, integrationand deployment.
-
7/31/2019 Lecture 1- Intro to SE
18/29
What is a software process?
A set of activities whose goal is the developmentor 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.
-
7/31/2019 Lecture 1- Intro to SE
19/29
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; Iterative development; Component-based software engineering.
-
7/31/2019 Lecture 1- Intro to SE
20/29
Figure1.12 The key factors that have changed software development
Time to market
Shifts in economics
Desktop computing
Networking
Object technology Problems with waterfall
User interfaces
CHANGES IN
SOFTWARE
ENGINEERING
-
7/31/2019 Lecture 1- Intro to SE
21/29
Human Error Fault Failure
can lead to can lead to
-
7/31/2019 Lecture 1- Intro to SE
22/29
Software costs
Software costs often dominate computer systemcosts. The costs of software on a PC are oftengreater 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 timesdevelopment costs.
Software engineering is concerned with cost-
effective software development.
-
7/31/2019 Lecture 1- Intro to SE
23/29
-
7/31/2019 Lecture 1- Intro to SE
24/29
-
7/31/2019 Lecture 1- Intro to SE
25/29
Figure 1.5 McCalls quality model.
Correctness
Reliability
Efficiency
Integrity
Usability
MaintainabilityTestability
Flexibility
Portability
Reusability
Interoperability
Traceability
Completeness
Consistency
Accuracy
Error Tolerance
Execution Efficiency
Storage efficiency
Access control
Access audit
Operability
Training
Communicativeness
Simplicity
Conciseness
Instrumentation
Self-descriptiveness
Expandability
GeneralityModularity
Software System Independence
Machine Independence
Communications commonality
Data commonality
-
7/31/2019 Lecture 1- Intro to SE
26/29
What are the attributes of good software?
The software should deliver the required functionality andperformance to the user and should be maintainable, dependableand acceptable.
Maintainability Software must evolve to meet changing needs;
Dependability
Software must be trustworthy; Efficiency
Software should not make wasteful use of system resources; Acceptability
Software must accepted by the users for which it was
designed. This means it must be understandable, usable andcompatible with other systems.
-
7/31/2019 Lecture 1- Intro to SE
27/29
What are the key challenges facingsoftware engineering?
Heterogeneity, delivery and trust.
Heterogeneity Developing techniques for building software that can
cope with heterogeneous platforms and executionenvironments;
Delivery
Developing techniques that lead to faster delivery ofsoftware;
Trust Developing techniques that demonstrate that software
can be trusted by its users.
-
7/31/2019 Lecture 1- Intro to SE
28/29
Key points Software engineering is an engineering
discipline that is concerned with all aspects of
software production. Software products consist of developed
programs and associated documentation.Essential product attributes are maintainability,
dependability, efficiency and usability.
-
7/31/2019 Lecture 1- Intro to SE
29/29
Continue..
The software process consists of activities thatare involved in developing software products.Basic activities are software specification,development, validation and evolution.
Methods are organised ways of producingsoftware. They include suggestions for theprocess to be followed, the notations to be used,rules governing the system descriptions whichare produced and design guidelines.