Upload
nesrine-shokry
View
190
Download
3
Tags:
Embed Size (px)
Citation preview
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
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
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?
Software Engineering is a great achievement
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
• 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?
Good software features
Q. What are natural constrains or limits of software ?
Q. What are the consequences of the above constraints?
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
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
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
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).
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
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
Software specifications
Software development
Software validation
Software evolution
Software fundamental activities(General Model)
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
• Waterfall Model
• Prototyping Model
• Incremental Model
• Iterative Model
• Agile
Software engineering methodologies (techniques)
Waterfall Methodology
Analysis(Requirements
Definitions)
Design(system and software
design)
Maintenance
Development and Implementation
System Testing
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.
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.
Maintenance
Development and Implementation
System Testing
prototyping
Customer evaluation
Review
Design
Prototyping Methodology
Analysis(Requirements Definitions)
Design(quick design)
Customer approval
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.
• Overall maintainability may be overlooked
• The customer may want the prototype delivered.
• Process may continue forever (scope creep)
Prototyping disadvantages
Analysis
Design
Development
Testing
Iterative Model
Product delivery and maintenance
Iterative = waterfall+ prototyping
Iterative Model
Iteration 1
Iterative Model
Iteration 2
Iterative Model
Iteration 3
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
Incremental Model Analysis Design
Development and Implementation Testing 1st Increment
Analysis DesignDevelopment and Implementation Testing 2nd Increment
Analysis DesignDevelopment and Implementation Testing 1st Increment
Incremental Model
Analysis DesignDevelopment and Implementation Testing 3rd Increment
Analysis DesignDevelopment and Implementation Testing 2nd Increment
Analysis DesignDevelopment and Implementation Testing 1st Increment
Incremental Model
Agile Methodology
Incremental Model(Enhanced waterfall)
Iterative Model(Waterfall+protptyping)
+
Agile Model
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
Agile Manifesto
System Testing
Agile Model
Analysis(Requirements
Definitions)
Design(system and software
design)
Development and Implementation
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
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.
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
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
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