computing and se ii introduction and overview er-yu ding software institute, nju

53
Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Upload: claribel-edwards

Post on 27-Dec-2015

224 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Computing and SE II

Introduction and Overview

Er-Yu DingSoftware Institute, NJU

Page 2: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Main Contents

1. What is SE (Software Engineering) ?2. SE .vs. CS (Computer Science)?3. Contents of SE4. About SE professional5. How to learn SE?6. Course overview

Page 3: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

1. What is SE ?Your thoughts here!

Page 4: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

What is Software Engineering?

• As defined in IEEE Standard 610.12:–( 1) The application of a systematic,

disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.

–( 2) The study of approaches as in ( 1 )

–( 1 )应用系统化的、学科化的、定量的方法,来开发、运行和维护软件,即,将工程应用到软件。

–( 2 )对( 1 )中各种方法的研究。

Page 5: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

What is software?

Your thoughts here!

Page 6: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Software

• In the first, software is not exist• When software is produced, it are

tools– Software = programs + documents + data

• About now, software is simulation more than tool– Knowledge is carried on software – Software = programs + documents + data

+ knowledge

Page 7: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Software is complex

• As simulation of the world, software must simulative to the real world mostly and can solve problems of the real world

• The real world is complex• So …

– Software is complex• Problems are complex• Solutions are complex

– Only programmers can’t deal with software development well

• They don’t know the problems and solutions• And none can tell them the knowledge clearly

– If we still produce software only with programming, badly things will happen.

Page 8: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Dimensions of software complexity

Walker Royce

Technique

Scale

Restriction

Embedded, Real-time, Fault-tolerant , High-performance

Large scale, Many stake holders

Distributed, Creative, Architectural Reengineering, Special technical difficulty

Mostly 4GL, or component-based Application reengineering Interactive performance Small scale Single stakeholder No special restriction

Page 9: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Software needed to be engineered

• 1968 年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机” (software crisis) 这个名词– 软件危机 : 指的是在计算机软件的开发和维护过程中所遇

到的一系列严重问题• 开发成本超出预算,实际进度比预定计划一再拖延。• 用户对“已完成”系统不满意的现象经常发生。• 件产品的质量往往靠不住。 Bug 一大堆, Patch 一个接一

个。• 件的可维护程度非常之低。• 软件通常没有适当的文档资料。• 软件的成本不断提高。• 软件开发生产率的提高赶不上硬件的发展和人们需求的

增长• 1969 年的后续会议中提出了“软件工程”的发展之路

Software engineering is about managing the complexity!

Page 10: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Engineering

• Examples– Mechanical engineering– Architectural engineering– Chemical engineering– Electrical engineering– Nuclear engineering– …

• Yours thoughts here– What is the word “Engineering” means?

Page 11: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

What is the “Engineering” means?• Engineering is …

– The application of scientific principles and methods to the construction of useful structures & machines which can solve some problems of the real world

– Creating cost-effective solutions to practical problems by applying scientific knowledge to building things in the service of mankind

Page 12: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Factors of Engineering

• Problem: Motivation

• Scientific Knowledge: Instrument

• Solution/Machine: Objective

• Cost-Benefit Effective: Condition

Page 13: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Software engineering• Problem

– Real world chaos• If the state of the real world do not accord with our

expectations , then there is a problem.– Broad scope

• All fields that mankind set foot in• In others engineering, problems are limited

– Mostly not clear, needed to be discovered• In others engineering, problems are specific and clear

• Can software engineer master so much knowledge?– As a software engineer, communication and negotiation skill

is very important– With all kinds of people, especially users.

Page 14: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Software engineering

• Scientific Knowledge– Computing science as the scientific basis

• Formal techniques– Based on mathematics and logic

– Many aspects have been made systematic

• Methods/methodologies/techniques• Languages• Tools• Processes

Page 15: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Software engineering• Scientific Knowledge

– Science .vs. Practice• Formalists: base

their work on the theoretical foundations of computing science

• Pragmatists: take that software engineering is a practical discipline that can be benefit from more than formal techniques

Page 16: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Software engineering

• Scientific Knowledge– Computing science knowledge is basis of SE

• Features of the computer• Software entities (program languages)• Methods/methodologies/techniques• …

– Practice knowledge should also be effective shared

• Methods/techniques• Problems/solutions• …

Page 17: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Software engineering

• Solution/Machine– General machine + specific solution

• Solution can be mapped into the general machine with the help of program languages

• Not different machines for different problems, like others engineering

– Development of solution is the essential task of SE

– Mapping solution into general machine is accidental task of SE

Page 18: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Tasks of software development

• All software construction involves essential tasks, the fashioning of the complex conceptual structures that compose the abstract software entity

• And accidental tasks, the representation of these abstract entities in programming languages and the mapping of these onto machine languages within space and speed constraints.

-------Frederick P. Brooks, Jr., No Silver Bullet, 1986

Page 19: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Software engineering

• Cost-Benefit Effective– Feasibility study

• Benefit is up to clients• Cost is up to software engineer

– There are always many ways to a destination, software engineers should choose the most cost-benefit effective one (not the most advanced one).

• Tradeoff is very important in SE– When cost-benefit is inessential, then SE may

disappears• Cost is small

– Small program• Benefit is implicit

– Exploration study• Cost is inessential

– Computer science study

Page 20: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

2. SE .vs. CS ?

• General machine– Computer construction

• How to design a computer to solve as many problems as we can?

– Computing theory: computable, Turing machine, λcalculus

• Computer architecture/Computer instructions

Page 21: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

2. SE .vs. CS ?

• General machine– Virtual machine

应用软件

编译器数据库管理系

统网络系

统 …

操作系统

硬件

Page 22: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

2. SE .vs. CS ?

• Problems/Solutions

Real world Problem Solution

General machineSolution machine

Expected world

Page 23: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Expected world

2. SE .vs. CS ?

• Problems/Solutions

Real world analysis Problem design Solution

General machineSolution machine

Implementatio

n

(Pro

gramming, T

est)

Installingmaintaining

Page 24: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Expected world

2. SE .vs. CS ?

• Problems/Solutions

Real world analysis Problem design Solution

General machineSolution machine

Implementatio

n

(Pro

gramming, T

est)

Installingmaintaining

MethodsTechniquesLanguages

Tools…

Page 25: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Expected world

2. SE .vs. CS ?

• SE

Real world analysis Problem design Solution

General machineSolution machine

Implementatio

n

(Pro

gramming, T

est)

Installingmaintaining

MethodsTechniquesLanguages

Tools…

Page 26: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Expected world

2. SE .vs. CS ?

• CS

Real world analysis Problem design Solution

General machine:OS, Compilers,DBMS,…

Solution machine

Implementatio

n

(Pro

gramming, T

est)

Installingmaintaining

MethodsTechniquesLanguages

Tools…

Theory

Page 27: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

What is the difference between software engineering and computer

science?Computer Science Software Engineering

is concerned with

Computer science theories are currently insufficient to act as a complete underpinning for software engineering, BUT it is a foundation for practical aspects of software engineering

theory fundamentals

the practicalities of developing delivering useful software

Page 28: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Scientist vs Engineer

• Computer Scientist– Proves theorems about algorithms, designs languages,

defines knowledge representation schemes– Has infinite time…

• Software Engineer– Develops a solution for an application-specific problem

for a client– Uses computers & languages, tools, techniques and

methods– Works in multiple application domains– Has limited time (maybe only 3 months...)– …while changes occurs in requirements and available

technology

Page 29: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Programming VS SE——The means of “software”

• When we say software, we are not talking about programs, but about program system products

• We all know all about programs, but what about program system products?

• Fred Brooks explains the difference and shows the effort involved

Page 30: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Programming VS SE ——Program and Program

system product (1)• Program– program is complete by itself– program is ready to run by author for planned

inputs on system on which it was developed, and probably under no other circumstances

• Product system– each program is a component in integrated

collection (system)– precisely defined interface to which all programs

in system must comply– each program must stick to reasonable resources– each program is tested with other programs;

number of combinations grows quadratically with each additional program

Page 31: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Programming VS SE —— Program and Program

system product (2)• Program Product:– product can be run, tested, repaired, extended

by anyone, not just author– product runs on multiple platforms – product accommodates many sets of data– range and form of input to product must be

generalized– product must test for validity of input and

provide response to invalid inputs– must be product documentation for

maintainers and users

Page 32: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Programming VS SE —— Program and Program

system product (3)• Program System Product:– all attributes of program system and– all attributes of program product

(multipliers may be bigger if the number of components is large)

Page 33: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Programming VS SE —— Program and Program

system product (4)• Perhaps the key problem is that when we should be thinking about program system product , we continue to think about programs, and all expectations are off by an order of magnitude.– ease vs. difficulties,– time,– costs,– …

• We see only the program and forget all the other junk that must be added to make it a program system product !

Page 34: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Programming VS SE

• Shortcomings with programming and without SE– Programming from scratch– Programming before reasoning– Implementing the first design– Designing for the implementer– Failing to understand problem scale– Writing throwaway exercises– Ignoring reliability, safety, economic, and other

system requirements• Practical, useful software doesn’t happen by

accident. It requires design skills not unrelated to traditional engineering design.

Page 35: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Another comparison:Software Engineering VS System

Engineering• What is a system?– Some part of reality that can be observed to

interact with its environmentSeparated from its environment by a boundaryA system receives inputs from the environment & send outputs to the environmentSystems have interesting emergent properties

Page 36: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Another comparison:Software Engineering VS System

Engineering• Information Systems – Software intensive systems exist to

support Human Activity

• System Engineering – Designing, implementing, deploying and

operating information systems which include hardware, software and people

• Software engineering• Hardware engineering• People engineering

Page 37: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

3. Contents of SE

• Software technologies– Technologies to produce software

• Software process and management– Methods to ensure engineering

principles

Page 38: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Software technologies

• Analysis• Design• Implementation• Testing• Maintaining• …

Expected world

Real world analysis Problem design Solution

General machineSolution machine

Implementatio

n

(Pro

gramming, T

est)

Installingmaintaining

Page 39: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Software technologies

Page 40: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Software process and management

• Management of resources– Including human, money, time, etc.– Project management / software management

• Management of activities– Process Management

• Management of output– Software configuration management

• Management of objective– Quality management

• Management of tools– Tools and environments

Page 41: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Software process and management

Page 42: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

4. About SE professional

• Systems Analyst -- analyzes requirements for an application, may also do business case analysis (economic analysis)

• Software Designer – design the solution structure• Software Architect – designs the overall structure of

the application• Software Programmer – implements the design using

software development tools• Software Tester (independent verification and

validation – e.g. NASA IV&V Facility, South Fairmont)• Software Project Manager –plan, organize, direct,

coordinate, control a software project (emphasis on risk management)

Page 43: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

4. About SE professional

• Software Configuration Manager – identify, change control, status accounting, audits and reviews

• Software Quality Manager/Engineer – software reliability modeling, statistical quality control, defect analysis

• Software Network Specialist – LAN/WAN Network design, installation, maintenance

• Software Systems Administrator – administers user accounts, technology refreshment, software deployment to users, software problem solvers

• Software Database Administrator – administers the database (installation, maintenance, backup, refreshment)

• …

Page 44: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

what knowledge is important to a software professional ( 200

0 )

Page 45: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

what knowledge is important to a software professional (2000)

Page 46: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

5. How to learn SE?

外因问题背景工具技术、方法

内因知识背景实践经验灵感

中间方案创造性 逻辑验证 解决方案

软件质量

问题软件工程活动 软件产品

If you want to be an excellent software engineer, you need to prepare these knowledge.

Page 47: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

5. How to learn SE?

• 外因:问题背景– 职业决定– 学习特殊领域的特点:嵌入式、信息系统、网络…

• 外因:工具– 掌握常用工具的使用 : 编程工具、管理工具…– 实践

• 外因:技术、方法(重要)– 课堂学习 : 结构化、面向对象…– 实践巩固

Page 48: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

5. How to learn SE?

• 内因– 知识背景(重要)

• 课堂学习基础• 课外大量阅读

– 实践经验(重要)• 多动手实践• 多参与交流(浏览专业论坛)

– 灵感• 各求多福

Page 49: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

5. How to learn SE?

• 软件质量– 学习、实践、阅读

Page 50: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

5. Course overview

• 目标– 建立软件工程的初步知识框架– 理解软件工程的工程性– 理解软件工程的基本活动– 了解软件工程中的各种常见方法与技

术– 了解软件工程的有效实践

Page 51: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

5. Course overview

• 内容– 软件技术

• 需求工程• 软件设计• 软件构造• 软件测试• 软件维护与软件演化

– 软件过程与管理• 项目管理• 过程管理• 质量管理• 配置管理• 工具与环境

– 软件实践• 技术实践• 管理实践

Page 52: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Any Question?

Page 53: Computing and SE II Introduction and Overview Er-Yu Ding Software Institute, NJU

Recommend paper《 Prospects for an engineering discipline of

software》 《 what knowledge is important to a software

professional 》

Next Lecture——A brief history of SE