Software Engineering
DKT311
ROHANI BINTI S MOHAMED FAROOK
MOHAMED ELSHAIKH
0175171894
KKF 8A – room 4
Course overview
Lectures 60%
Wednesday 1 – 3 pm at BKQ 6
Lab 40%
Thursday 9 – 11 am at MKQ1
As follow:
Final exam 50%
Practical 50%
lab assignment 30%
test 10%
Lab test 10%
Guide lines
Early study
Object-Oriented Software Engineering
Practical software development using UML and
JAVA, 2nd edition, (Timothy C. Lethbridge and
Robert Laganiere)
Lecture notes
provided materials
Take notes during the lecture
Assignments
For self development
Counted lab assignment
Course outcomes
to describe software engineering concepts
and terms used in its discipline
to analyze a problem based on different
software development models, to write
specification document based on the
standard documentation
to design and develop software prototype
based on the specification and verification
and validation
to apply software engineering skills to
project management
Lecture 1.
Software and software engineering
Software Engineering definition
Difference between computer science
and
software engineering
Review to Object Orientation
Class and objects
Instances variables
Methods, operations and polymorphism
Inheritance
Questions you need to answer
What is software?
What is software engineering?
What is the difference between software
engineering and computer science?
What are the costs of software
engineering?
What are software engineering methods?
What are the attributes of good software?
What are the key challenges facing
software engineering?
What is software
Computer programs and associated
documentation such as requirements, design
models and user manuals.
Software products may be developed for a
particular customer or may be developed for a
general market.
Software products may be
Generic - developed to be sold to a range of
different customers e.g. PC software such as Excel
or Word.
Bespoke (custom) - developed for a single customer
according to their specification.
Embedded software – to adopt hardware
functionality.
New software can be created by developing new
programs, configuring generic software systems
or reusing existing software.
Software problems
Software crisis
Poor software design.
Doesn't meet their expectations.
Never delivered or late delivered.
Over budget.
Software bugs.
Software engineering methods
To meet expectations.
Avoid crisis.
Software designing artifacts
Software unlike other engineering
products are:
Illusive.
Low mass production.
Un-engineered designs are easy to
collapse.
no expiry date.
Software engineering
Solve problems
Economically
systematic
High quality
Satisfactory
Reliable
Maintainable
Flexible
Other definitions
IEEE: (1) the application of systematic,
disciplined, quantifiable approach to the
development, operation, maintenance of
software ;that is, the application of
engineering to software. (2) the study of
approaches as in (1).
The Canadian Standards Association: the
systematic activities involved in the
design, implementation and testing of
software to optimized its production and
support.
Software engineering vs. computer
science
Computer science is concerned with
theory and fundamentals; software
engineering is concerned with the
practicalities of developing and delivering
useful software.
Computer science theories are still
insufficient to act as a complete
underpinning for software engineering
(unlike e.g. physics and electrical
engineering).
Stakeholders
DEVELPER
MANAGMENT
CUSTOMERS
software
SOFTWARE DEVELOPER
USER
Stakeholders
Users
Customers
developer
Start design (decision)
Software developers
Those whom use the
software
Develop.
Maintenance.
Software engineers
Recognized by their high
quality work.
Work in teams.
user
quality
Development manager
Companies managers.
Always looking for profit (
low design cost
& pleasing customers.
manager
customer
Software quality
Is this a high quality
software?
Customer:
Solves my
problem.
Low cost (money
and resources).
User:
Easy.
Efficient.
Get job done.
developer
user
quality
manager
customer
Cont.
Developer:
Easy to design
Maintainable
Reusable
Development
manager:
More selling
Satisfactory
Low design &
maintaining cost
Developer
Easy to design
Maintainable
Reusable
Quality software
Customer
Solve my problems
User
Not costed
Easy
Developer
Easy
Maintainable
Efficient
Get job done
Manager
Reusable
Low design
cost
More
sell
Satisfactory
Cont.
It is very hard to say this is a high quality
software, but we may consider the most
important five quality attributes:
Usability
Efficiency
Reliability
Maintainability
Reusability
Cont.
Make your objectives
Internal quality
Short term
Comments
Complexity
Does it meets the immediate needs?
Sufficient, efficient for today data?
Long term quality
What about maintainability?
What about future needs?
Software engineering project
Team work
Few people for small
projects
What about big projects
Three categories:
Evolutionary project
Greenfield project
Modifying
Developing from
scratch
Build from existing
components
Uses frameworks
New for missed
details
Common project activity
Project life cycle:
Requirement and specification
Design
Understanding the problem
How to implement the requirements
Modeling
Software representation
Cont.
Programming
Translate what you did to high level
programming language (coding)
Quality assurance
Meet the quality objectives
Reviews and inspections
Testing
Deployment
Distributing and installing the system
Cont.
Managing the software configuration
Identifying the components
All software engenderers must
participate for their components.
Managing the process
Estimate the cost of the system
Planning
Object Orientation (OO)
In it is very common name OOP
Object oriented programming
Abstraction “software less complex”
Combines procedural abstraction with
data abstraction?
Class and objects
Instances variables
Methods, operations and polymorphism
Inheritance
Abstraction
Data abstraction
Records and
OOP is:
structures
Entityoriented
description
The
object
paradigm is approach to the
solution
of problems in which all computations
Procedural
are performed in the context of object. The
abstraction
objects are instances of programming constructs,
Function
normally
calledand
class, which are data abstractions
procedure
and which
contain procedural abstractions that
operate
on the
object.
Action
description
Class & Object
Represents the abstracted entity into:
Properties
Behavior
To describe the current state.
(what is your car color?)
The acts and reacts of the object.
(I may change my car color..)
Class is a software module that represents and
defines a set of similar objects.
Object is a chunk of structure data in a running
software.
Lets look at some examples…
Human as a class
Accounting system
Instances variables
Objects are class’s instance
Example:
Student
Name
Name:
Attributes
Id:
School:
Grade:
Change school.
methods
Change course.
Withdraw.
Ex.
General motors
Boeing 777
Mary smith
Board game
University course SEG 2100
The game of chess between tom and jane
Automobile company
Chess
Airplane
The car with serial number WQH 8062
Methods, operations and polymorphism
Method = function, procedure
Operation
It used to implement the behavior of class
High level procedural abstraction
To specify type of behavior
Polymorphism
Is a property of object oriented software by
which an abstract operation may be performed
in different ways, typically in different classes.
Polymorphism
Example:
Bank interest
Average daily balance
Minimum daily balance
Can you give another example….
Car
Student
Inheritance
Classes with
common attributes
To avoid
duplication
Super class
contains the
common attributes
Account
Saving account
Checking account
Inheritance is the implicit possession
by a subclass of features defined in
Current account
the super class. Feature include
variables and methods.
Any
question.
Thank you…..
Questions for this lectures
Define the following terms:
Software engineering(IEEE, Canadian
Standards Association)
Software
The differences between software
and software engineering?
Object, Class, polymorphism,
inheritance.
Stockholders
Software engineering quality
Describe the role of each
stockholder in a software
engineering project?
Draw a class box for each of the
following stating the class name,
attributes, and methods:
Cars
Students
Server
Human
Home
In example project there are two
classes namely (Human, student,
lecturer, child), draw a diagram
showing the inheritance relationship
between these classes.