software engineering ekt 420 mohamed elshaikh 0175171894 kkf 8a – room 4

28
Software Engineering EKT 420 MOHAMED ELSHAIKH 0175171894 KKF 8A – room 4

Upload: letitia-maxwell

Post on 31-Dec-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Software EngineeringEKT 420

MOHAMED ELSHAIKH0175171894KKF 8A – room 4

Course overview

Lectures 60% Two lectures per week (3 hours)

Lab 40% One lab per week (2 hours)

As follow: Final exam 50% Course work 50%

lab assignment 20% test 10% projects 20%

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

CO1: Understand the definition of software engineering, terms used in its discipline and ethics of software engineers

CO2: Understanding on software process together with its generic phases and able to discern the suitability of each software process/lifecycle model to a given problem

CO3: Ability to analyze a problem based on software engineer’s perspective, gather requirements to write specification document based on the standard documentation and build the analysis model

Course outcomes

CO4: Able to produce an architectural design and detail design of the software based on the requirement and generate programming code

CO5:To implement validation and verification on the software prototype

Lecture 1.

Software and software engineering Software Engineering definition Difference between computer science

and software engineering

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

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.