week 01-intro se

13
1 9/18/2006 1 Software Concepts FIT HCMUNS HCM 9/18/2006 2 Introduction to Software Engineering Attributes of Software-Intensive Systems Software Engineering Definitions Software Engineering as a Process Software Engineering Challenges Professional Responsibilities of Software Engineers

Upload: nguyen-tran

Post on 07-Dec-2014

431 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Week 01-intro se

1

9/18/2006 1

Software Concepts

FIT

HCMUNS

HCM

9/18/2006 2

Introduction to Software Engineering

� Attributes of Software-Intensive Systems

� Software Engineering Definitions

� Software Engineering as a Process

� Software Engineering Challenges

� Professional Responsibilities of Software Engineers

Page 2: Week 01-intro se

2

9/18/2006 3

Software-Intensive Systems

� Large Numbers (100s, 1000s, millions) of:� Users

� Developers

� Lines of code

� Pages of User Documentation and help screens

� Pages of Requirements and Design Documentation

� Customers: Governments, Businesses, Individuals, ….

9/18/2006 4

Software-Intensive Systems

� Implementation involves distributed objects, database systems, web servers. Portable across multiple platforms.

� Requirements and specifications obtained through extensive interviews, prototypes, and participant research.

� Detailed test plan with automated testing.

� Project requires 1-2 years.

� System will evolve for 20 years after initial installation.

Page 3: Week 01-intro se

3

9/18/2006 5

� What are the costs of software engineering?

� What is CASE (Computer-Aided Software Engineering)

� What are the attributes of good software?

� What are the key challenges facing software engineering?

FAQs about software engineering

9/18/2006 6

What is software ?

Page 4: Week 01-intro se

4

9/18/2006 7

What is software?

� Computer programs and associated documentation, installation and un-installation scripts, etc.

� Software products may be

� Generic - developed to be sold to a range of different customers

� Custom - developed for a single customer according to their specification

9/18/2006 8

What is software engineering?

Page 5: Week 01-intro se

5

9/18/2006 9

What is software engineering?

� A set of methods for the cost-efficient development and evolution of software systems.

� Issues, techniques, and lessons learned from previous software projects.

� Methods for acquiring and debugging requirements.

� Methods for refining and debugging specifications.

� Representations and languages for communicating with other software engineers.

� Methods for project management (costing and scheduling).

9/18/2006 10

What is the difference between software engineering and computer science?

Page 6: Week 01-intro se

6

9/18/2006 11

What is the difference between software engineering and computer science?

� Software engineering requires skills and knowledge from computer science, but also from management, speech communications, and writing.

� Computer science is concerned with the development of theory and technology.

� Software engineers apply this technology, but sometimes they stumble upon new problems that have not yet been formally studied by computer scientists.

� Real-world software projects are an important source of new problems for computer science.

9/18/2006 12

What is the difference between software engineering and system engineering?

Page 7: Week 01-intro se

7

9/18/2006 13

What is the difference between software engineering and system engineering?

� System engineering is concerned with all aspects of computer-based systems development including hardware, software, and process engineering. Software engineering is part of this process

� System engineers are involved in system specification, architectural design, integration and deployment

9/18/2006 14

What is a software process?

Page 8: Week 01-intro se

8

9/18/2006 15

What is a software process?

� A set of activities whose goal is the development or evolution of software

� Generic activities in all software processes are:

� Specification - what the system should do and its development constraints

� Development - production of the software system

� Validation - checking that the software is what the customer wants

� Evolution - changing the software in response to changing demands

9/18/2006 16

What is a software process model?

Page 9: Week 01-intro se

9

9/18/2006 17

What is a software process model?

� A simplified representation of a software process, presented from a specific perspective

� Examples of process perspectives are� Workflow perspective - sequence of activities

� Data-flow perspective - information flow

� Role/action perspective - who does what

� Generic process models� Waterfall

� Evolutionary development

� Formal transformation

� Integration from reusable components

9/18/2006 18

What are the costs?

0% 20% 40% 60% 80% 100%

Time

Specification

Design

Development

Integration/Testing

Evolution

Page 10: Week 01-intro se

10

9/18/2006 19

Development Costs

0% 20% 40% 60% 80% 100%

Time

Specification

Design

Development

Integration/Testing

9/18/2006 20

Lessons

� Most important goal: Reduce testing and evolution costs

� Get the requirements right!

� Coding is a small part of the software development cost.

Page 11: Week 01-intro se

11

9/18/2006 21

Computer-Aided Software Engineering?

9/18/2006 22

Computer-Aided Software Engineering?

� Software systems which are intended to provide automated support for software process activities. CASE systems are often used for method support

� Upper-CASE� Tools to support the early process activities of

requirements and design

� Lower-CASE� Tools to support later activities such as

programming, debugging and testing

Page 12: Week 01-intro se

12

9/18/2006 23

Attributes of good software?

9/18/2006 24

Attributes of good software?

� Deliver the required functionality and performance to the user.

� Maintainability (dễ bảo trì, nâng cấp)

� Software must evolve to meet changing needs

� Dependability (đáng tin cậy)

� Software must be trustworthy

� Efficiency (hiệu quả)

� Software should not make wasteful use of system resources

� Usability (tiện dụng)

� Software must be usable by the users for which it was designed

Page 13: Week 01-intro se

13

9/18/2006 25

What are the key challenges facing software engineering?

9/18/2006 26

What are the key challenges facing software engineering?

� Coping with legacy systems, coping with increasing diversity, and coping with demands for reduced delivery times

� Legacy systems

� Old, valuable systems must be maintained and updated

� Heterogeneity (tính hỗn tạp)

� Systems are distributed and include a mix of hardware and software

� Delivery

� There is increasing pressure for faster delivery of software