CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

45
CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD http://www.acadox.com/join/56 3R9V

Transcript of CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Page 1: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

CS251 – Software EngineeringLecture 1: A Course Overview

Slides by

Mohamed El-Ramly, PhD

http://www.acadox.com/join/563R9V

Page 2: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

جديد عام

من 1. و أدوم الطاعة على أنتم و عام كلأقرب الله

من 2. و أقدر البرمجة على أنتم و عام كلأقرب التخرج

شهيد 3. عملك على جديد عام

أبدا 4. يعود ال مضى إن فإنه فاغتنمه

Page 3: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Lecture 1 Outline

1.Course Objectives2.Software Crisis3.Introduction to Software Engineering 4.Tools5.Course Administration6.Assignment / Project7.Eiffel Option

Page 4: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .
Page 5: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

1. Course Objectives

• This course aims to teach students the disciplined way of engineering software products. It aims to:1. Educate the students about the cost of

software failures and the importance of software engineering.

2. Train the students on the application of engineering practices in software development

3. Introduce them to the Software Engineering Body of Knowledge.

Page 6: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

1. Course Objectives

• This course aims to teach students the disciplined way of engineering software products. It aims to:4. Train them on the basics of software

requirements engineering, modeling, design, construction, project management and quality assurance.

5. Train students on teamwork

Page 7: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .
Page 8: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

2. Software’s Chronic Crisis

• Many software system fail to serve their purpose or even may cause harm.

• Many projects never deliver. IBM survey of 24 companies developing

distributed systems:• 55% of the projects cost more than expected• 68% overran their schedules• 88% had to be substantially redesigned

Page 9: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

2. Software’s Chronic Crisis

• Software product size is increasing exponentially faster, smaller, cheaper hardware

• Software is everywhere: from TV sets to cell-phones

• Software is in safety-critical systems cars, airplanes, nuclear-power plants

Page 10: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

2. Software’s Chronic Crisis

• We are seeing more of distributed systems embedded systems real-time systems

• These kinds of systems are harder to build

• Software requirements change software evolves rather than being built

Page 11: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

2. Software’s Chronic Crisis

• Software’s chronic crisis: Development of large software systems is a challenging task Large software systems often: Do not provide

the desired functionality; Take too long to build; Cost too much to build Require too much resources (time, space) to run; Cannot evolve to meet changing needs

Page 12: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

2. Software’s Chronic Crisis

• We are the only industry that states something like this on their product licenses:

.1 " " "  . على و عليها التي بالحالة البرنامج ترخيص يتم الضمان عن المسؤولية إخالء ." " مسؤولية" تتحمل فإنك وبالتالي عليها توفيره يتم التي بالحالة و عالته

  تقدم.  ال الشركات ، MICROSOFTاستخدامه من وأٍي4 لها التابعون والموزعون )" " ( أية ، الموزعون باسم بعد فيما إليهم المشار والموردون المعنية لنا التابعة  . قد به يتعلق فيما أو البرنامج هذا بموجب صريحة شروط أو تعهدات أو ضماناتبك، الخاصة المحلية القوانين بموجب اإلضافية المستهلك حقوق بعض لك تكون  . القوانين به تسمح الذٍي الحد وإلى تغيرها أن االتفاقية لهذه يمكن ال والتيضمنية، شروط أو ضمانات أٍي أنفسهم عن الموزعون ينفي بك، الخاصة المحليةلغرض والمالءمة للتسويق بالقابلية الخاصة الشروط أو الضمانات ذلك في بما

. االنتهاك وعدم معين.2  . من تعويض على الحصول يمكنك واستثناؤها األضرار ومورديها Microsoftتحديد

مقابل دفعته الذٍي المبلغ ذلك يتجاوز ال بحيث فقط المباشرة األضرار مقابلذلك.  في بما أخرى أضرار بأية يتعلق تعويض أٍي على الحصول يمكنك ال البرنامج. العارضة أو المباشرة غير أو الخاصة األضرار أو األرباح خسارة أو الالحقة 3.األضرار

Page 13: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

2. Software’s Chronic Crisis

• Failure of software causes the loss of: Time Money User satisfaction, and LIVES

Page 14: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .
Page 15: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Werewolves

• Out of all the scary monsters of the past, werewolves were the scariest because the change shape without notice.

Page 16: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Software Werewolf

• Software is like a werewolf—it looks normal until the moon comes out and it turns into a monster Missed deadlines Blown budgets Buggy software

Page 17: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

No Silver Bullet

• In 1987, in an article titled:

“No Silver Bullet: Essence and Accidents of Software Engineering”

• Frederick P. Brooks made the argument that there is no silver bullet that can kill the werewolf software projects

Page 18: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Essence vs. Accident

• Essence vs. accident in software development We can get rid of accidental difficulties in developing

software This will increase productivity

• For example using a high level programming language instead of assembly language: The difficulty we remove by replacing assembly language

with a high-level programming language is not an essential difficulty of software development,

It is an accidental difficulty brought by inadequacy of assembly language for programming

Page 19: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

• Brooks argues that software development is inherently difficult

• “The essence of a software entity is a construct of interlocking concepts: data sets, relationships among data items, algorithms and invocations of functions. This essence is abstract in that such a conceptual construct is the same under many different representations. ... The hard part of building software is the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation.”

Essence vs. Accident

Page 20: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Inherent Difficulties in Software

• Software has the following properties in its essence: Complexity Conformity Changeability Invisibility

• Since these properties are not accidental representing software in different forms do not effect them

Page 21: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Complexity

• Software systems do not have regular structures, there are no identical parts

• Identical computations or data structures are not repeated in software

• In contrast, there is a lot of regularity in hardware for example, a memory chip repeats the same

basic structure millions of times

Page 22: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Complexity

• Software systems have a very high number of discrete states Infinite if the memory is not bounded

• Elements of software interact in a non-linear fashion

• Complexity of the software increases much worse than linearly with its size

Page 23: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Conformity

• Software has to conform to its environment Software conforms to hardware interfaces not

the other way around

• Most of the time software systems have to interface with an existing system

Page 24: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Changeability

• Software is easy to change, unlike hardware

• Once an Intel processor goes to the production line, the cost of replacing it is enormous (Pentium bug cost half billion dollars)

• If a Microsoft product has a bug, the cost of replacing it is negligible. Just put the new download on a webpage and

ask users to update their software

Page 25: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Changeability is not an Advantage

• Although it sounds like, finally, software has an advantage over hardware, the effect of changeability is that there is more pressure on changing the software

• Since software is easy to change software gets changed frequently and deviates from the initial design adding new features supporting new hardware

Page 26: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Invisibility

• Software is invisible and un-visualizable• Complete views can be incomprehensible• Partial views can be misleading• All views can be helpful• Geometric abstractions are very useful in other

engineering disciplines Floor plan of a building helps both the architect and the

client to understand and evaluate a building

• Software does not exist in physical space and, hence, does not have an inherent geometric representation

Page 27: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .
Page 28: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

3. What is this course about?

• This is the third in a series of courses on software development. Programming 1 (CS112) Programming 2 (CS213) Algorithms and Data Structures (CS214)

• File Organization (CS215)• Databases Systems 1 (IS211)

Software Engineering 1 )CS251( Software Engineering 2 )CS352( – )CS, IS(

Page 29: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

29

3. What is Software Engineering?

•The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time, and other constraints

•Other definitions: IEEE: (1) the application of a 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 optimize its production and support.

Page 30: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

30

REQ Software Requirements

DES Software Design

CST Software Construction

TST Software Testing

MNT Software Maintenance

CNF Software Configuration Management

MGT Software Engineering Management

PRC Software Engineering Process

TLSSoftware Engineering Tools and Methods

QLY Software Quality

SWEBOK’s Key 10 Knowledge Areas

SWEBOK 2004

SWEBOK 2013added 5 more KAs

Page 31: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Software Requirements

• The Software Requirements Knowledge Area (KA) is concerned with the elicitation, analysis, specification, and validation of software requirements.

• It is widely acknowledged within the software industry that software engineering projects are critically vulnerable when these activities are performed poorly.

• Software requirements express the needs and constraints placed on a software product that contribute to the solution of some real-world problem.

Page 32: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Software Requirements

Page 33: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Software Design

• Design is defined as both “the process of defining the architecture, components, interfaces, and other characteristics of a system or component” and “the result of [that] process.” Viewed as a process, software

• Software design is the activity in which software requirements are analyzed in order to produce a description of the software’s internal structure that will serve as the basis for its construction.

Page 34: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Software Construction

• The term software construction refers to the detailed creation of working, meaningful software through a combination of coding, verification, unit testing, integration testing, and debugging.

Page 35: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Sofwtare Testng

• Testing is performed to evaluate and improve product quality by identifying defects and problems.

• Software testing consists of the dynamic verification of a program’s behavior on a finite set of test cases, suitably selected from the usually infinite executions, against the expected behavior.

Page 36: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .
Page 37: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Software Maintenance

• Software development efforts result in the delivery of a software product that satisfies user requirements. Accordingly, the software product must change or evolve.

• Once in operation, defects are uncovered, operating environments change, and new user requirements surface. The maintenance phase of the life cycle begins

following a warranty period or post-implementation support delivery, but maintenance activities occur much earlier.

Page 38: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Software Configuration Management

• Software configuration management (SCM) is the task of tracking and controlling changes in the software, part of the larger cross-discipline field of configuration management.” 

• SCM practices include revision control and the establishment of baselines. If something goes wrong, SCM can determine what was changed and who changed it.

Page 39: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Software Engineering Management

• Software Engineering Management can be defined as the application of management activities — planning, coordinating, measuring, monitoring, controlling, and reporting—to ensure that the development and maintenance of software is systematic, disciplined, and quantified.

Page 40: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Software Engineering Process

• In this knowledge area “software engineering processes” are concerned with work activities accomplished by software engineers to develop, maintain, and operate software, such as software requirements, software design, software construction, software testing, software configuration management, and other software engineering processes.

Page 41: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Software Quality

• Software quality assurance (SQA) consists of a means of monitoring the software engineering processes and methods used to ensure quality. The methods by which this is accomplished are many and varied, and may include ensuring conformance to one or more standards, such as ISO 9000 or a model such as CMMI.

Page 42: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .
Page 43: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

Course Contents

We will cover as much of these as we can:• Overview of Software Engineering ½ Week • Software Disasters ½ Week • Review of OOP 1 Week• Software Lifecycle and Software Engineering Processes

1 Week • Requirements Engineering (SRS, use cases, storyboards, etc.)

1 Week• Software Modeling and Analysis and UML 3 Weeks• Software Patterns 1 Week• Software Architecture 1 Week• Software Construction 1 Week• Software Quality and Unit Testing 1 Week• Software Configuration and Project Management 1 Week

Page 44: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

4. Course Tools

• This course will introduce a combination of new tools for software Engineering, which will include some of these:

• Software Engineering tools (we teach): Models: UML SCM: GitHub Management: Scrum

 

Page 45: CS251 – Software Engineering Lecture 1: A Course Overview Slides by Mohamed El-Ramly, PhD .

4. Course Tools

• This course will introduce a combination of new tools for software Engineering, which will include some of these:

• Latest Technologies (You learn): Language: Java or Eiffel IDE: Eclipse or Eiffel Studio Technologies: Android or GWT