Software Engineering Methodologies

43

Transcript of Software Engineering Methodologies

Page 1: Software Engineering Methodologies
Page 2: Software Engineering Methodologies

1. Importance of Software Engineering and usage

2. What’s a software?

3. Definition of Software Engineering

4. Software Engineering ethics

5. Software Engineering processes

6. Software Engineering methodologies

Contents

Page 3: Software Engineering Methodologies

1. Importance of Software Engineering and usage

2. What’s a software?

3. Definition of Software Engineering

4. Software Engineering ethics

5. Software Engineering processes

6. Software Engineering methodologies

Contents

Page 4: Software Engineering Methodologies

Most software today is very much like an Egyptian pyramid with millions of brickspiled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves. Alan Kay, ACM Queue,2005

Why Software Engineering?

Page 5: Software Engineering Methodologies

Software Engineering is a great achievement

Page 6: Software Engineering Methodologies

1. Importance of Software Engineering and usage

2. What’s a software?

3. Definition of Software Engineering

4. Software Engineering ethics

5. Software Engineering processes

6. Software Engineering methodologies

Contents

Page 7: Software Engineering Methodologies

• Software is a Computer programs and associated documentation defining a project.

• Good software should deliver the required functionality and performance to the user and should be maintainable, dependable, and usable

What’s software?

Page 8: Software Engineering Methodologies

Good software features

Page 9: Software Engineering Methodologies

Q. What are natural constrains or limits of software ?

Q. What are the consequences of the above constraints?

Page 10: Software Engineering Methodologies
Page 11: Software Engineering Methodologies

1. Importance of Software Engineering and usage

2. What’s a software?

3. Definition of Software Engineering

4. Software Engineering ethics

5. Software Engineering processes

6. Software Engineering methodologies

Contents

Page 12: Software Engineering Methodologies

Software Engineering is the application of a systematic, disciplined, quantifiable approach to development, operation and maintenance of software: that is, the application of engineering to software.”

IEEE Standard Computer Dictionary

IEEE defines Software Engineering

Page 13: Software Engineering Methodologies

1. Importance of Software Engineering and usage

2. What’s a software?

3. Definition of Software Engineering

4. Software Engineering ethics

5. Software Engineering processes

6. Software Engineering methodologies

Contents

Page 14: Software Engineering Methodologies

Software engineering ethics

1.Confidentiality: You should normally respect the confidentiality of your employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.

2. Competence: You should not misrepresent your level of competence. You should not knowingly accept work that is outside your competence.

3. Intellectual property rights: You should be aware of local laws governing the use of intellectual property such as patents and copyright. You should be careful to ensure that the intellectual property of employers and clients is protected.

4. Computer misuse: You should not use your technical skills to misuse other people’s computers. Computer misuse ranges from relatively trivial (game playing on an employer’s machine, say) to extremely serious (dissemination of viruses or other malware).

Page 15: Software Engineering Methodologies

1. Importance of Software Engineering and usage

2. What’s a software?

3. Definition of Software Engineering

4. Software Engineering ethics

5. Software Engineering processes

6. Software Engineering methodologies

Contents

Page 16: Software Engineering Methodologies

Software development

processes (SDLC)

Software Management

processes

Software Engineering processes are divided into

Software Process is a sequence of activities leading to production

Software engineering Processes

Page 17: Software Engineering Methodologies

Software specifications

Software development

Software validation

Software evolution

Software fundamental activities(General Model)

Page 18: Software Engineering Methodologies

1. Importance of Software Engineering and usage

2. What’s a software?

3. Definition of Software Engineering

4. Software Engineering ethics

5. Software Engineering processes

6. Software Engineering methodologies

Contents

Page 19: Software Engineering Methodologies

• Waterfall Model

• Prototyping Model

• Incremental Model

• Iterative Model

• Agile

Software engineering methodologies (techniques)

Page 20: Software Engineering Methodologies

Waterfall Methodology

Analysis(Requirements

Definitions)

Design(system and software

design)

Maintenance

Development and Implementation

System Testing

Page 21: Software Engineering Methodologies

Waterfall Advantages

• Easy to understand & Use.

• Easy to manage

•Phases are processed and completed one at a time.

• Works well for projects where requirements are clear & stable.

Page 22: Software Engineering Methodologies

Waterfall Disadvantages

• It’s hard to respond to changing customer requirements.

• Each phase output is an input to the next phase , so delay in one phase may delay the whole project.

•In practice, phases overlaps and displace achieved.

• software is produced late during the life cycle.

• Poor model for complex and requirements variant projects.

Page 23: Software Engineering Methodologies

Maintenance

Development and Implementation

System Testing

prototyping

Customer evaluation

Review

Design

Prototyping Methodology

Analysis(Requirements Definitions)

Design(quick design)

Customer approval

Page 24: Software Engineering Methodologies

Prototyping Advantages

• Customers can “see” the system requirements as they are

being gathered.

• Developers learn from customers .

• A more accurate end product.

• Allows for flexible design and development.

• Steady, visible signs of progress produced.

• Interaction with the prototype stimulates awareness of additional

needed functionality.

Page 25: Software Engineering Methodologies

• Overall maintainability may be overlooked

• The customer may want the prototype delivered.

• Process may continue forever (scope creep)

Prototyping disadvantages

Page 26: Software Engineering Methodologies

Analysis

Design

Development

Testing

Iterative Model

Product delivery and maintenance

Iterative = waterfall+ prototyping

Page 27: Software Engineering Methodologies

Iterative Model

Iteration 1

Page 28: Software Engineering Methodologies

Iterative Model

Iteration 2

Page 29: Software Engineering Methodologies

Iterative Model

Iteration 3

Page 30: Software Engineering Methodologies

Incremental Model•Divide into mini-Waterfalls

• It means you develop one part of the system and when it’s ready you develop the next part

Analysis DesignDevelopment and Implementation Testing 1st Increment

Analysis DesignDevelopment and Implementation Testing 2nd Increment

Analysis DesignDevelopment and Implementation Testing 3rd Increment

Page 31: Software Engineering Methodologies

Incremental Model Analysis Design

Development and Implementation Testing 1st Increment

Page 32: Software Engineering Methodologies

Analysis DesignDevelopment and Implementation Testing 2nd Increment

Analysis DesignDevelopment and Implementation Testing 1st Increment

Incremental Model

Page 33: Software Engineering Methodologies

Analysis DesignDevelopment and Implementation Testing 3rd Increment

Analysis DesignDevelopment and Implementation Testing 2nd Increment

Analysis DesignDevelopment and Implementation Testing 1st Increment

Incremental Model

Page 34: Software Engineering Methodologies

Agile Methodology

Incremental Model(Enhanced waterfall)

Iterative Model(Waterfall+protptyping)

+

Agile Model

Page 35: Software Engineering Methodologies

Agile Manifesto

1. Individuals and interactions over processes and tools

2. Working software over comprehensive documentation

3. Customer collaboration over contract negotiation

4. Responding to change over following a plan

Page 36: Software Engineering Methodologies

Agile Manifesto

Page 37: Software Engineering Methodologies

System Testing

Agile Model

Analysis(Requirements

Definitions)

Design(system and software

design)

Development and Implementation

Page 38: Software Engineering Methodologies

1. Extreme Programming (XP)

2. SCRUM

3. Crystal Family

4. Open Source

5. Adaptive Software Development (ASD)

6. Feature Driven Development (FDD)

7. Dynamic System Development Method (DSDM)

Agile

Page 39: Software Engineering Methodologies

Agile suitability

Agile methods have been very successful for some types of system development:

1. Product development where a software company is developing a small or medium-sized product for sale.

2. Custom system development within an organization, where there is a clear commitment from the customer to become involved in the development process and where there are not a lot of external rules and regulations that affect the software.

Page 40: Software Engineering Methodologies

Agile difficulties

1.Customer availability.

2. Individual team members personalities suitability to interact with other teams

3. Priority determination may be extremely difficult especiallyfor many stakeholders.

4. Difficulty of shifting to a new model especially for large companies

Page 41: Software Engineering Methodologies

Agile and Plan-driven(water fall) methodologiesdifferences

Agile Plan-driven

Iterative and Incremental Phased

Working Software every build Working software in final phase

More Visibility- working software Less visibility ,prototypes

Changes accepted in all phases

Changes accepted at certain stages

only

Conclusion

Page 42: Software Engineering Methodologies

Agile and Plan-driven methodologiessuitability

Agile Plan-driven

Short term projects Long term projects

Senior developers Junior / Senior developers

Requirements change often Requirements do not change often

Small number of developers Small/Large number of developers

Culture that responds to change Culture that demands order

Page 43: Software Engineering Methodologies