Lecture 1 - UniMAP Portal

advertisement
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.
Download