0% found this document useful (0 votes)
31 views

SE Lec1 Intoduction

This document discusses software engineering and related topics. It begins with an introduction to software engineering, noting that it aims to develop quality software on time and budget. It then discusses some key aspects of software engineering, including defining software, different types of software products, and the roles and goals of software engineers. The document provides examples to illustrate complex software systems and the software engineering process. It emphasizes understanding the problem domain as fundamental to developing successful software.

Uploaded by

ahmed.ibr2020
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views

SE Lec1 Intoduction

This document discusses software engineering and related topics. It begins with an introduction to software engineering, noting that it aims to develop quality software on time and budget. It then discusses some key aspects of software engineering, including defining software, different types of software products, and the roles and goals of software engineers. The document provides examples to illustrate complex software systems and the software engineering process. It emphasizes understanding the problem domain as fundamental to developing successful software.

Uploaded by

ahmed.ibr2020
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 47

The Rules

(and I really mean it!)

2
Software engineering
Software engineering is concerned
with theories, methods and tools for
professional software development
Ranking Top 200 Jobs (2012)
1. Software Engineer 104. Airline Pilot
28. Civil Engineer 133. Fashion Designer
38. Nurse 137. High School Teacher
40. Physician 163. Police Officer
47. Accountant 173. Flight Attendant
60. Mechanical Engineer 185. Firefighter
73. Electrical Engineer 196. Newspaper Reporter
87. Attorney 200. Lumberjack
InformationWeek 5/15/12. Based on salary, stress levels, hiring outlook,
physical demands, and work environment (www.careercast.com) 4
Course Themes
1. Leadership of large software projects
 Software as a product
Clients and their needs
Quality
 Requirements and specification
Usability
Evolution
 Project management
Personnel management
Economic, legal, and social factors
Course Themes
2. Large and very large systems
 Software design
Software architecture
Object-oriented design
 Dependable systems
Reliability
Verification
FAQs about software engineering
⚫ What is software?
⚫ What is software engineering?
⚫ What is the difference between software engineering
and system engineering?
⚫ What is a software process?
⚫ What is a software process model?
FAQs about software engineering

⚫ What are the costs of software engineering?


⚫ What are software engineering methods?
⚫ What is CASE (Computer-Aided Software Engineering)
⚫ What are the attributes of good software?
⚫ What are the key challenges facing software
engineering?
What is software?
⚫ Computer programs and associated
documentation
⚫ Software products may be
• Generic - developed to be sold to a range of
different customers
• Bespoke (custom) - developed for a single
customer according to their specification
• Embedded
• Built into hardware
• Hard to change
Introduction: Software is Complex

⚫ Complex  complicated

⚫ Complex = composed of many simple parts


related to one another

⚫ Complicated = not well understood, or explained


1
1
Complexity Example:
Scheduling Fence Construction Tasks

Nailing Painting
Setting posts Cutting wood
[ 2 time units for unpainted; [ 5 time units for uncut wood;
[ 3 time units ] [ 2 time units ]
3 time units otherwise ] 4 time units otherwise ]

Setting posts  Nailing, Painting


Cutting  Nailing

…shortest possible completion time = ?

[  “simple” problem, but hard to solve without a pen and paper ]


More Complexity

Suppose today is Oct. 29

What day will be on Dec. 3?

[ To answer, we need to bring the day names and the day numbers
into coordination, and for that we may need again a pen and paper ]
Software products
⚫ Generic products
• Stand-alone systems that are marketed and sold to
any customer who wishes to buy them.
• Examples – PC software such as editing, graphics
programs, project management tools; CAD
software; software for specific markets such as
appointments systems for dentists.
⚫ Customized products
• Software that is commissioned by a specific
customer to meet their own needs.
• Examples – embedded control systems, air traffic
control software, traffic monitoring systems.
13
Software
1. System software: such as compilers, editors, file management
2. Application software: stand-alone programs for specific needs.
3. Engineering/scientific software: such as automotive stress
analysis, molecular biology, orbital dynamics etc
4. Embedded software resides within a product or system. (key pad
control of a microwave oven, digital function of dashboard display in
a car)
5. Product-line software focus on a limited marketplace to address
mass consumer market. (word processing, graphics, database
management)
6. WebApps (Web applications) network centric software: remote
database and business applications.
7. AI software Robotics, expert system, pattern recognition game
playing
Software Engineering
• Software Engineering is the science and art of
building significant software systems that are:
1) on time
2) on budget
3) with acceptable performance
4) with correct operation.
1
6

The Role of Software Engg. (1)


A bridge from customer needs to programming implementation

Customer
Programmer

First law of software engineering


Software engineer is willing to learn the problem domain
(problem cannot be solved without understanding it first)
What is Software Engineering?
Some Definitions and Issues

“state of the art of developing quality software on time and


within budget”

⚫ Trade-off between perfection and physical constraints


• SE has to deal with real-world issues
⚫ State of the art!
• Community decides on “best practice” + life-long education
What is Software Engineering?
“multi-person construction of multi-version software”
⚫ Team-work
• Scale issue (“program well” is not enough) +
Communication Issue
⚫ Successful software systems must evolve
• Change is the norm, not the exception
1
9

The Role of Software Engg. (2)


Customer:
Requires a computer system to achieve some business goals
by user interaction or interaction with the environment
in a specified manner

System-to-be

Environment
Software-to-be
User

Software Engineer’s task:


To understand how the system-to-be needs to interact with
the user or the environment so that customer’s requirement is met
and design the software-to-be

May be the Programmer’s task:


same person To implement the software-to-be
designed by the software engineer
2
0

Example: ATM Machine


Understanding the money-machine problem:

1
7
4
0
2
5 3
8 6
9
Communication link

Bank’s
remote
ATM machine
datacenter
Bank
customer
2
1

How ATM Machine Might Work


Domain model Domain Model
created with help
of domain expert
Transaction
How may I record
help you? Cash

Bookkeeper
Speakerphone Safe
Safe keeper
Phone

Window clerk

Datacenter
liaison

Dispenser

Bank’s
remote
datacenter
Customer
Why Study Software Engineering?

⚫ To acquire skills to develop large


programs.
• Exponential growth in complexity and
difficulty level with size.
• The ad hoc approach breaks down
when size of software increases

22
2
3

Law of Software Engineering

⚫ Software should be written for people first


• ( Computers run software, but hardware quickly becomes
outdated )

• Useful + good software lives long

• To nurture software, people must be able to understand it


2
4

Understanding the Problem Domain

⚫ System to be developed

⚫ Actors
• Agents external to the system

⚫ Concepts/ Objects
• Agents working inside the system

⚫ Use Cases
• Scenarios for using the system
2
5

ATM: Gallery of Players

1
4 2
7 5 3
8 6
0 9

Bank customer System Bank’s remote


(ATM machine) datacenter

Actors (Easy to identify because they are visible!)


2
6

Gallery of Workers + Things

Window clerk Datacenter Bookkeeper Safe keeper Dispenser


liaison

Speakerphone Telephone Transaction Safe Cash


record

Concepts (Hard to identify because they are invisible/imaginary!)


What is the difference between software
engineering and system engineering?

⚫ System engineering is concerned with all


aspects of computer-based systems
development including hardware, software and
process engineering. Software engineering is
part of this process
⚫ System engineers are involved in system
specification, architectural design, integration
and deployment
What is a software process?

⚫ A set of activities whose goal is the development or


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
2
9

Software Development Methods


➢ Method = work strategy
▪ The Feynman Problem-Solving Algorithm:
(i) Write down the problem (ii) think very hard, and (iii) write down
the answer.
➢ Waterfall
▪ Unidirectional, finish this step before moving to the next
➢ Iterative + Incremental
▪ Develop increment of functionality, repeat in a feedback loop
➢ Agile
▪ User feedback essential; feedback loops on several levels of
granularity
3
0

Waterfall Method
Requirements

Design

Implementation

Testing
Waterfall
method Deployment &
Maintenance

Unidirectional, no way back


finish this step before moving to the next
Waterfall Process Model
Requirements
definition

System and
software design

Implementation
and unit testing

Integr ation and


system testing

Operation and
maintenance
Evolutionary Process Model
Concurr ent
activities

Initial
Specification
version

Outline Intermediate
Development
description versions

Final
Validation
version
Spiral Process Model
Determine ob jectiv es
Ev aluate altern atives
alternatives and id en tify, resolve risk s
cons traints Risk
analys is
Risk
analys is
Risk
analys is Opera-
Prototyp e 3 tional
Prototyp e 2 protoyp e
Risk
REVIEW analysis Proto-
ty pe 1
Requirements plan Simulations, models, b en ch marks
Life-cycle plan Concept o f
Operation S/W
requirements Prod uct
design Detailed
Requirement design
Develop ment
plan valid ation Code
Design Unit tes t
Integration
and test p lan V&V Integr ation
Plan next p has e test
Accep tance
Serv ice test Develop, v erify
next-level p rod uct
3
4

Software Measurement

⚫ What to measure?
• Project (developer’s work),
for budgeting and scheduling

• Product,
for quality assessment
3
5

Agile Project Effort Estimation


Software Quality...
⚫ Usability
• Users can learn it and fast and get their job done easily
⚫ Efficiency
• It doesn’t waste resources such as CPU time and memory
⚫ Reliability
• It does what it is required to do without failing
⚫ Maintainability
• It can be easily changed
⚫ Reusability
• Its parts can be used in other projects, so reprogramming is
not needed
Testing
Testing cannot show the absence of defects,
it can only show that software defects are present.

1. Testing is a process of executing a program


with the intent of finding an error.
2. A good test case is one that has a high
probability of finding an as yet undiscovered
error.
3. A successful test is one that uncovers an as yet
undiscovered error.
When software projects go wrong

• London Ambulance Service


– 1992, computerised ambulance despatch system fails
• Therac-25
– 2 people died and several others exposed to dangerous levels of
radiation because of software flaws in radiotherapy device
• OSIRIS
– £5M University financial package
– Expenditure to date more like £20-25M
• NPfIT?
– NHS £12 billion IT project
• comp.risks is a great source of others...
Testing Methods
⚫ Black-box testing
• Knowing the specified function that a product has
been designed to perform, tests can be conducted that
demonstrate each function is fully operational.

⚫ White-box or glass-box testing


• Knowing the internal workings of a product, tests can
be conducted to ensure that "all the gears mesh".
1. independent paths at least once
2. logical decisions both true and false
3. loops
4. internal data structures
Design patterns
⚫ Programs regularly employ similar design solutions
⚫ Idea is to standardise the way these are implemented
• Code re-use
• Increased reliability
• Fewer errors, shorter development time
⚫ An array is special case of a container type
• Way of storing a collection of possibly ordered elements.
• List, stack, queue, double-ended list, etc
⚫ Templates in C++ offer a way of providing libraries to
implement these standard containers
Future Experience
What will you be doing one year from now?
Ten years from now?
ESE — Introduction

Course schedule
Week Lesson
1 Introduction —
2 The Software Lifecycle
3 Project Management
4 Requirements Collection
5 Waterfall lifecycle model
6 Iterative model
7 Agile model
8 Modeling Objects and Classes
9 UML
10 Software Architecture
11 User Interface Design
12 Software Metrics
13 Software Quality
Software Validation

© Oscar Nierstrasz ESE 1.42


Projects

 Project teams, about 3 to 5 people.


 Select your own project, any branch of software engineering
 Real project for real client who intends to use the software in
production.
 Presentations:
requirements
design
final
4
4

Team Projects
⚫ Project Ideas:
Real life idea
⚫ No more than two (2) groups working on the same
topic
⚫ Email your project idea ASAP, before proposal is due,
for feedback
⚫ Y.fouad@alexu.edu.eg
4
5

Project Deliverables
Item Due week
1. Proposal 2

2. First report (Specification)


• Part 1 (Statement of Work & Requirements) 3
• Part 2 (Functional Requirements Spec & UI) 5
• Full Report #1 6

3. Second report (Design)


• Part 1 (Interaction Diagrams) 7
• Part 2 (Class Diagram and System Architecture) 8
• Full Report #2 9

4. First demo 10 ► ...


5. Third report (All reports collated) 11
6. Second demo 12► ...

7. Electronic Project Archive 13


Client (a.k.a Customer)

 The client provides resources and expects some product in


return.
 Client satisfaction is the primary measurement of success.
Question: Who is the client for Microsoft Excel?
47

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy