Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction To software engineering

Similar presentations


Presentation on theme: "Introduction To software engineering"— Presentation transcript:

1 Introduction To software engineering
CS 560 Lecture 1

2 Software engineering Introduction to software engineering
If you don’t understand it, you can’t program it. If you can’t measure it, you can’t improve it.

3 Software engineering Definition:
SE covers technical aspects of building software systems, along with management issues such as directing teams, scheduling, and budgeting. More and more systems are software controlled National infrastructures: utilities, communication, navigation Entertainment: music, movie/television, games Residential: community design, landscaping Science/Data Collection: biology, chemistry, physics, engineering, … Social Interactions: , social networks, text messaging

4 Software engineering vs. Computer Science
Study design of algorithms, languages, hardware and software architectures, and complexities such as space and time. Foundation based on mathematics and theory. Why does it work? Software Engineering: Study design of creating high quality software that provides a solution to a given problem using controlled, systematic, and efficient techniques. Foundation based on problem solving. How does it work?

5 Software engineering The economies of ALL developed nations are dependent on software. Software represents a significant fraction of GDP in all developed countries. 1997: $149 billion 1.7% U.S. GDP 2014: $1 trillion 6% U.S. GDP The use of software has also increased the productivity of other industries. 15% increase in all U.S. labor productivity from 2004 to 2012. Software accounted for $101 billion in overall production in 2012.

6 Software engineering Software Jobs:
1990: 778,000 1995: 1,083,000 2010: 2,095,000 2014: 2,501,000 2016: 3,360,000 Software jobs growing faster than any other jobs. 2014: 2.2% of all U.S. employment Software industry now directly responsible for ~4.2 million U.S. jobs Software industry employment grows on average by 3.1% Every Year. Average salary for new employees in the software industry: ~$60k Average salary per person in the U.S.: ~$30k

7 Software costs Software costs often dominate computer system costs.
The costs of software on a PC are often greater than the hardware cost.

8 Software costs A number of fundamental problems with the process of software development were identified: Software was never completed, even after further investment had been made. Removing flaws from “completed” software can take a considerable amount of time The functionality of the software seldom matched the requirements of the end-users. Once created, software was almost impossible to maintain.

9 Software costs Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs.

10 Software Engineering Body of Knowledge

11 Software Engineering vs. “other” engineering
How is software engineering different than other types of engineering? Exists entirely on and bounded by the rules of hardware. CPU has four processing cores Only two environmental sensors Silicon and magnetic data storage Software logic is not bounded by physical laws Software gives the ability to make a world where the developer defines the rules. What’s stopping you from replicating your own thought process using software? Capacity to incorporate massive complexity Few thousand lines of code for a mobile phone application ~2 billion lines of code for all Google Internet services Communication between different types of environments, hardware, operating systems, etc. Does not have problems due to product aging All software (currently) is an abstraction of manipulation of voltage levels in semiconductors. Basically, the software tells hardware switches to turn “on” and “off”, and those rules don’t change based on software age.

12 Software Engineering Why is software engineering difficult?
You need to understand the problem domain Problems for developing an autonomous robot Problems for developing a web based data storage software You need to understand the software domain Domain specific software for robotic movement Domain specific software for network traffic analysis Software is formal Functional requirements determine the software to be created Software languages are bound by rules Real world is informal There is no precise statement of what a client may want from a software development team Software engineering includes discovering a solution for a real-world problem

13 Software Engineering Computer Scientist:
Proves theorems about algorithms, designs languages, defines knowledge representation schemes, etc.

14 Software Engineering Software Engineer:
Creates the design for the real-world problem

15 Software Engineering Software Developer:
Generates the code for the real-world problem

16 Software Engineering Software engineering is concerned with cost- effective software development. First determine the needs of the client. These needs/requirements may change over time. Then design, construct, test, add features to the software system, and repeat. Each member of the CS 560 project teams will be providing roles computer scientist, software engineer, and software developer.

17 Software Engineering Role of the software engineer: (Each member of the project team should be involved with these roles) Research (CS) – Seek new principles and processes by employing mathematical and scientific concepts, experimental techniques, and inductive reasoning. Design (SE) – Select methods and materials to satisfy technical requirements and to meet performance specifications. Development (SD) – Apply results of research to useful purposes. Creative application of new knowledge may result in a working software prototype. Construction (SE) – Determine procedures that will economically and safely yield the desired software product. Management (SE) – Responsible for deciding how resources are used, project team management, determining feasibility, and resolving problems.

18 Frequently asked questions about software engineering
What are the key challenges facing software engineering? Coping with increasing diversity of software demands Demands for reduced delivery times Developing trustworthy software Working with a diverse project team

19 Essential attributes of good software
Maintainability: Software should be written so that it can evolve to meet the changing needs of the customers. Critical since software change is an inevitable Dependability and Security: Characteristics such as reliability, security, and safety should be included in software engineering and design. Efficiency: Software shouldn’t make wasteful use of system resources such as memory and CPU cycles. Acceptability: Software must be acceptable to the type of users for which it is designed. It must be understandable, usable, and compatible with other systems they use.

20 Software engineering diversity
There are many different types of software systems. There is no universal set of software techniques that is applicable to all of these. Ex: Techniques for building the embedded software system for autonomous robots versus techniques for building software systems used for metadata harvesting. The software engineering methods and tools used depend on: The type of application being developed The requirements of the client The background of the development team In this class, the teams will be diverse, and the client’s requests may change over time.

21 Feasibility study Analysis of the project in the form of a preliminary study and documentation Overview of the proposed project and goals Preliminary requirements Functional, non-functional, user, system Estimations of project scope and time Breaking the project down into different tasks Requirements gathering, software modeling/development languages, documentation, testing, organizational approach, etc. Technical feasibility Evaluate whether the proposed project will perform adequately based on requirements Schedule feasibility Assess the duration of the project How much time to complete each task How/When/Where to meet as a project group or subgroup Progress Visibility Risk Analysis


Download ppt "Introduction To software engineering"

Similar presentations


Ads by Google