software engineering dkt311 rohani binti s mohamed farook mohamed elshaikh 0175171894 kkf 8a –...
TRANSCRIPT
Software EngineeringDKT311
ROHANI BINTI S MOHAMED FAROOKMOHAMED ELSHAIKH0175171894KKF 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
software USERCUSTOMERS
DEVELPER MANAGMENT
SOFTWARE DEVELOPER
Stakeholders
Users Those whom use the
software Customers
Start design (decision) Software developers
Develop. Maintenance. Software engineers Recognized by their high
quality work. Work in teams.
Development manager Companies managers. Always looking for profit
( low design cost & pleasing customers.
useruser
managermanager
customercustomer
developerdeveloper
qualityquality
Software quality
Is this a high quality software? Customer:
Solves my problem.
Low cost (money and resources).
User: Easy. Efficient. Get job done.
useruser
managermanager
customercustomer
developerdeveloper
qualityquality
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 User
Developer Manager
Solve my problems Not costed Easy Efficient Get job done
Easy Maintainable Reusable Low design
costMoresell
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
Comments Complexity
Short term 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
Modifying Greenfield project
Developing from scratch
Build from existing components
Uses frameworks New for missed
details
Common project activity
Project life cycle: Requirement and specification
Understanding the problem Design
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
structures Entity description
Procedural abstraction Function and
procedure Action description
OOP is:
The object oriented paradigm is approach to the solution of problems in which all computations are performed in the context of object. The objects are instances of programming constructs, normally called class, which are data abstractions and which contain procedural abstractions that operate on the object.
Class & Object
Represents the abstracted entity into: Properties
To describe the current state. (what is your car color?)
Behavior 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:
Id:
School:
Grade:
Change school.
Change course.
Withdraw.
Mohamed
08998
Computer
B
Name
Attributes
methods
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 It used to implement the behavior of class
Operation 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
Current account
Inheritance is the implicit possession by a subclass of features defined in 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)SoftwareThe 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.