Presentation is loading. Please wait.

Presentation is loading. Please wait.

SOFTWARE ENGINEERING CS-5337: Introduction

Similar presentations


Presentation on theme: "SOFTWARE ENGINEERING CS-5337: Introduction"— Presentation transcript:

1 SOFTWARE ENGINEERING CS-5337: Introduction
Today the economies of ALL nations are dependent on software (SW). More and more systems are software controlled. The trend is "increasing". SW Engineering (SWE) is concerned with theories, methods and tools for professional software development. SWE expenditure represents a significant fraction of GNP (Gross National Product) in all developed countries. Software costs often dominate system costs. Typically, the costs of software are often greater than the hardware cost. SWE is concerned with cost-effective software development and delivery. 1

2 SOFTWARE ENGINEERING CS-5337: Introduction
Software is a very serious business: ~half a trillion dollars (from Gartner report: ~407 billion in 2013) business. more than 2.5 million direct jobs and increasing ~10 million (direct & induced) jobs and increasing ~100 K$/year "direct/paycheck" average salary of a software developer ( SRCH_KO0,17.htm) ~50 billion R&D Investment by Software Companies ~20% of all domestic business R&D and increasing by 2020 US Universities will satisfy ~1/3 of the total jobs available Conclusion: If ignored any longer, we are up to a significant disruption of the US/World economy!!! 2

3 SOFTWARE ENGINEERING CS-5337: Introduction
Software Engineering (SWE) is NOT Computer Science (CS) CS deals with theory and the fundamentals. SWE deals with the practicalities of building useful software. The web gives many definitions of SWE (look at them!). The following gives a good idea about CS & SWE relationship: CS is to SWE as Physics is to Engineering. CS theories are insufficient to “explain” SWE as Physics is not enough to explain all of engineering. 3

4 SOFTWARE ENGINEERING CS-5337: Introduction
Definition "adapted" from The Bureau of Labor Statistics—IEEE Systems and software engineering - Vocabulary[4] "SWE is the systematic application of scientific and technological knowledge, methods, and experience to the (1)gathering of requirements, (2)design, (3)implementation, (4)testing, and (5)documentation of software" … On the Web at: 4

5 SOFTWARE ENGINEERING CS-5337: Introduction
In time, as the size and complexity of software projects increased, so did the number of failed projects SWE was thought to be the cure by bringing into software development modeling tools, analytical techniques, appropriate documentation and an overall engineering discipline approach. However, … Chaos 2014 Report: 61% of the projects failed! That is, only 39% of the SW projects were successful 43% of the projects were challenged (over budget and late - money & time!) 18% of the projects failed (cancelled or never used) 5

6 SOFTWARE ENGINEERING CS-5337: Introduction
Three “key” strategies to ensuring delivery of: (a) High-Quality Software (i.e., SW that satisfies its requirements). (b) delivered On Time (i.e., on schedule) … and (c) completed Within Budget (i.e., with no overruns) Focused attention on software development environment (people/tools/management/etc.) “Disciplined” development processes Methodical use of metrics to gauge cost, schedule, and functional performance targets 6

7 SOFTWARE ENGINEERING CS-5337: Introduction
Summary: The Two Most Challenging Goals of SWE are: Software MUST BE on time! One of the most challenging elements of quality complex software development and therefore of software engineering is to deliver it on schedule. Software MUST BE in budget! The other most challenging aspect of quality complex software development and therefore of software engineering is to deliver the software within budget. 7

8 SOFTWARE ENGINEERING CS-5337: Introduction
From "Stack Overflow" page (list) on the Web at overflow-developers-survey-2019-vs-2018-technology-comparison/ we look at tools: Languages, Frameworks, Databases and Platforms: LANGUAGES: From the last 7 years, JavaScript is the most popular & commonly used language but Python is the fastest growing language. There’s no change in C#, Php & C++ position but Go & Kotlin gained popularity. FRAMEWORKS: This year Stack Overflow separated the Web & other general purposes Frameworks. This year JQuery leading the Web Frameworks list. React, Angular & Asp.net are at 2nd, 3rd & 4th positions respectively. DATABASES: Not a big change in this list. One thing to note is that there’s a decrease of about 10% in SQL Server usage. It might be because now people are moving toward lightweight solutions. PLATFORMS: Linux & Windows popularity increased as development platforms. (Stack Overflow added Docker for the first time in the list & It got the 3rd position). 8

9 SOFTWARE ENGINEERING CS-5337: Introduction
When we study SWE in the academia (or do research in the industry) we try to come up with a simplified representation of the process under study. (Think of Physics and how kinematics with only two simple definitions - velocity and acceleration - can create a solution to so many real life problems) Early in the process (1970), a simple model, the waterfall model, created a framework that allowed for a common language to discuss the SWE process. One of the most valuable addition to the understanding of the SWE process was the definition of the so called Software Lifecycle (SWLC). The SWLC included TWO main stages: Development (Requirements; Design; Coding/Implementation; Testing) Operations and Maintenance (the SWE project has been delivered and it is in use) The focus of this class is "S/W Development". 9

10 Waterfall Model (W. W. Royce 1970)
1. Requirements must be specified. 2. Four main tasks must be completed in sequence: requirements, design, code, and test, followed by integration. 3. Output of one stage feeds into the next stage in sequence, and thus is easily tracked (“controlled”) by management. Major Con: There is no feedback, what do we do when we encounter problems?

11 The Waterfall Model: with feedback at each stage
Requirements Definition System and Software Design Implementation and unit testing Integration and system testing Operation and maintenance There are many representations of the waterfall model with several stages (more than 5) but for our practical purposes we will use 4 stages for development. (Notice that ‘coding” takes place during the implementation stage).

12 Incremental Model – “Continuous Integration”
Each “major requirement/item” is developed separately through the same sequence of: requirement, design, code, and unit test. 2. As the developed pieces are completed, they are continuously merged and integrated into a common bucket for integrated system test.

13 Spiral Model or Meta-Model (B. Boehm, 1988)
– Software development activities are cycled through four phases. – A “risk-averse” process first proposed by Barry Boehm. – The presence of a prototype is a new feature for these models. – Prototypes have advantages and disadvantages for both the developer and the customer.


Download ppt "SOFTWARE ENGINEERING CS-5337: Introduction"

Similar presentations


Ads by Google