0% found this document useful (0 votes)
7 views48 pages

Overview of Software Engineering Careers

Software engineering focuses on the theories, methods, and tools necessary for professional software development, ranking as the top job in terms of salary and outlook. The document outlines key themes in software engineering, including project management, software design, and the importance of understanding customer needs. It also discusses various software processes, development methods, and the significance of software quality and testing.

Uploaded by

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

Overview of Software Engineering Careers

Software engineering focuses on the theories, methods, and tools necessary for professional software development, ranking as the top job in terms of salary and outlook. The document outlines key themes in software engineering, including project management, software design, and the importance of understanding customer needs. It also discusses various software processes, development methods, and the significance of software quality and testing.

Uploaded by

Menna Saed
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd

Software engineering

Software engineering is concerned


with theories, methods and tools for
professional software development
Ranking Top Jobs
Software Engineer ranks No. 1, followed by Actuary, Human Resources
Manager, Dental Hygienist and Financial Planner.

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 ([Link])
3
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
3

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.

15
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.
(keypad 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. Web Apps (Web applications) network centric software :remote
database and business applications.
7. AI software Robotics, expert system, pattern recognition game
playing
8. Driver Software
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
8

The Role of Software Engg. (1)


A bridge from customer needs to programming implementation

Customer
Customer
Programmer
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 must 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
2
1

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
2

Example: ATM Machine


Understanding the money-machine problem:

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

Bank’s
remote
ATM machine
datacenter
Bank
customer
2
3

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

24
2
5

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
6

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
7

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
8

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?
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
3
1

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
2

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 objectives
Evaluate alternatives
alternatives and identify, resolve risks
constraints Risk
analysis
Risk
analysis
Risk
analysis Opera-
Prototype 3 tional
Prototype 2 protoype
Risk
REVIEW analy sis Proto-
type 1
Requirements plan Simulations, models, benchmarks
Life-cycle plan Concept of
Operation S/W
requirements Product
design Detailed
Requirement design
Development
plan validation Code
Design Unit test
Integration
and test plan V&V Integr ation
Plan next phase test
Acceptance
Service test Develop, verify
next-level product
3
6

Software Measurement


What to measure?
• Project (developer’s work),
for budgeting and scheduling
• Product,
for quality assessment
3
7

Agile Project Effort Estimation

Estimated work duration


Work backlog
1) Prune Section 8 3.5 days (7pts)
2) Prune Section 7 2 days (4pts)
Items pulled by the team into an iteration
3) Prune Section 6 1 day (2pts)
4) Prune Section 5 2 days (4pts)

5) Prune Section 4 1.5 days (3p)

6) Prune Section 1 2 days (4pts)

7) Prune Section 2 3.5 days (7p)

8) Prune Section 3 5 days (10p)

Work items
21 days

1st iteration 2nd iteration n-th iteration

5 days
List prioritized by the customer Estimated completion date Time
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
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 a yet undiscovered
error.
3. A successful test is one that uncovers a yet
undiscovered error.
Testing Methods
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
14 Software Validation

© Oscar Nierstrasz ESE 1.43


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
5

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

[Link]@[Link]
4
6

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?
END
48

You might also like