610 likes | 625 Views
This lecture provides an overview of software engineering, its importance, and the disciplined approach to engineering software products. It covers topics such as software requirements engineering, modeling, design, construction, and configuration management. The course aims to educate and train students on the cost of software failures, engineering practices, and teamwork.
E N D
Cairo University, Faculty of Computers and Information CS352 – 2017 / 2018 2nd TermSoftware Engineering IILecture 1: Welcome and Introduction By Dr. Mohamed El-Ramly
I am …… • Mohammad El-Ramly • Assistant Professor of Computer Sciences • Specialization: Software Engineering • B.Sc. of Computer Engineering, Ain Shams University, Cairo. • M.Sc. of Operations Research (DS), Cairo University. • Ph.D. of Computer Science, University of Alberta, Canada.
Lecture Outline • Introduction • Tell me about SE I • Course Objectives and Content • Introduction to Software Engineering • Course Administration • Course Resources
جدد النية • من سلك طريقا يلتمس فيه علما سهل الله له طريقا إلى الجنة • العلم يرفع بيتاً لا عماد لــه .... والجهل يهدم بيت العز والكرم • العلم نور يضيء العقول المتخلفة ونبراس يفتح الدروب المظلمة • قصة طاعون لندن • لا تنتظر التغيير و لكن اصنعه – نجاحك مسؤوليتك • قصة صاحب مزرعة الخيول
وقفة أمريكية An Hour of Code Code.org CodeCombat.com TouchDevelop.com وقفة أمريكية
US UK
High Demand for Qualified Developers & Software Engineers • Competition for software engineers continues to accelerate, with salaries being an area employers compete aggressively on to win talent.
Mohamed Gamal (2012) Google, Zurich, Switzerland Mohamed Magdi (2011) Booking.com AhmedAbdo(2009)GoogleCanada Mohamed Ahmed (2015) Orange Labs, Cairo Omar Elmohandes (2011) Amazon London Ahmed Abdelhay (2011) Game Developer, Holland Ahmed Aly (2009), Google USA, A2OJ Ahmed Abulkhair AUC, Amazon London Ahmed & Marwan (2012) FB, USA Ahmed Mamdouh Qatar Computing Reseach Institute Amr Samir (2001)Google, Zurich, Switzerland Mostafa Saad (2008) PhD Student, Canada Mohamed Abdelwahab (2001) PhD Student, Australia, ACM Most Famous Coach Abdelkareem Mamdouh Huessin Hesham (2008) Valeo, Egypt Yasser Yahia (2008) Amazon, Seattle, USA
Ark Survival (Instinct Games, Egypt)
From Coders to Software Engineers • Coders - Can pretty much figure out it. It'll work, but it won't be pretty. • Hackers - usually low level folks, skillful, with detailed understanding of some area deeply. • Programmer - Write code and understand algorithms. Often work alone and well. • Software Engineer - Are the best generalists, can use lots of different systems and languages. Are true and broad professionals, use disciplined approaches, follow ethics, work in teams and communicate well.
Sequence diagrams • UML • Design patterns (adapter, state, bridge, abstract factory, composite) • Testing (white box, black box, TestNG) • Requirements (F, N/F, ..) • SOLID Principles • OOP Design – 7 Design sins • Online store, desing and implemntation 2. What did you learn in SE I ?
Git Scrum Software Process Did you hear about … Strategy Pattern Sequence Diagram Design Patterns Use Case Unit Testing MVC SCM SRS Agile Sprint UML SOA
Design patterns • Testing • Arch. • ? • ? • ? What did you like to learn in SE II ?
Brain Teaser 1 • Connect 9 dots with 4 lines without lifting the pen.
Brain Teaser A1 • Connect 9 dots with 4 lines without lifting the pen.
Brain Teaser 2 • Connect 9 dots with 3 lines without lifting the pen.
Brain Teaser A2 • Connect 9 dots with 3 lines without lifting the pen.
Brain Teaser 3 • Connect 9 dots with 1 line without lifting the pen.
Brain Teaser A3 • Connect 9 dots with 1 line without lifting the pen.
Brain Teaser A3 • Connect 9 dots with 1 line without lifting the pen.
SE I Course Objectives • This course aims to teach students the disciplined way of engineering software products. It aims to: • Educate the students about the cost of software failures and the importance of software engineering. • Train the students on the application of engineering practices in software development
SE I Course Objectives • This course aims to teach students the disciplined way of engineering software products. It aims to: • Train them on the basics of software requirements engineering, modeling, design, construction, configuration management. • Train students on teamwork
What Is Software? • More than computer programs. • The collection of programs, documentation and configurationdata that ensures correct execution.
What Is Engineering? • Engineering is the discipline of applying technical and scientific knowledge and physicalresources to design and produce materials, structures, machines, devices, systems, and processes that meet a desired objective under specified criteria.
What Is Software Engineering? • The process of solvingcustomers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time, and other constraints
When Did Software Engineering Start? • A term used occasionally in 1950s, 1960s • Popularized in 1968 at NATO Software Engineering Conference • http://homepages.cs.ncl.ac.uk/brian.randell/NATO/
What Is Software Engineering? • IEEE Standard 610.12: • The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software. • “Designing, building and maintaining large software systems”. - I. Sommerville • “Multi-person construction of multi-version software”. - D. L. Parnas
What Is Software Engineering? • IEEE Standard 610.12: • The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software. • “Designing, building and maintaining large software systems”. - I. Sommerville • “Multi-person construction of multi-version software”. - D. L. Parnas
The Goal of Software Engineering Is Producing Quality Software • Can be quite different based on your viewpoint: Customer: - Solves problems at acceptable cost (time and resource). User: - Easy to learn - Efficient to use - Get work done Developer: - Easy to design and maintain - Successfully used and deployed Developer Manager: - Sells more and pleases customers - Costing less to develop and maintain
SWEBOK’s Key 10 Knowledge Areas SWEBOK 2004 SWEBOK 2013 added 5 more KAs
SWEBOKv3’s 15 Knowledge Areas SWEBOK 2014
Software’s Chronic Crisis • Gartner – CHAOS reports • 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
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
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
Software’s Chronic Crisis • We are the only industry that states something like this on their product licenses: • إخلاء المسؤولية عن الضمان. يتم ترخيص البرنامج "بالحالة التي عليها" و"على علاته" و"بالحالة التي يتم توفيره عليها".وبالتالي فإنك تتحمل مسؤولية استخدامه. لا تقدم MICROSOFT، والموزعون التابعون لها وأيٍ من الشركات التابعة لنا المعنية والموردون (المشار إليهم فيما بعد باسم "الموزعون")، أية ضمانات أو تعهدات أو شروط صريحة بموجب هذا البرنامج أو فيما يتعلق به. قد تكون لك بعض حقوق المستهلك الإضافية بموجب القوانين المحلية الخاصة بك، والتي لا يمكن لهذه الاتفاقية أن تغيرها. وإلى الحد الذي تسمح به القوانين المحلية الخاصة بك، ينفي الموزعون عن أنفسهم أي ضمانات أو شروط ضمنية، بما في ذلك الضمانات أو الشروط الخاصة بالقابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. • تحديد الأضرار واستثناؤها. يمكنك الحصول على تعويض من Microsoft ومورديها مقابل الأضرار المباشرة فقط بحيث لا يتجاوز ذلك المبلغ الذي دفعته مقابل البرنامج. لا يمكنك الحصول على أي تعويض يتعلق بأية أضرار أخرى بما في ذلك الأضرار اللاحقة أو خسارة الأرباح أو الأضرار الخاصة أو غير المباشرة أو العارضة.
Software’s Chronic Crisis • Failure of software causes the loss of: • Time • Money • User satisfaction, and • LIVES
Werewolves Out of all the scary monsters of the past, werewolves were the scariest because the change shape without notice.