2. 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
3. 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
4. Most software today is very much like an Egyptian pyramid with millions of bricks
piled 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?
6. 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
7. • 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?
9. Q. What are natural constrains or limits of software ?
Q. What are the consequences of the above constraints?
10.
11. 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
12. 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
13. 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
14. 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).
15. 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
21. 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.
22. 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.
24. 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.
25. • Overall maintainability may be overlooked
• The customer may want the prototype delivered.
• Process may continue forever (scope creep)
Prototyping disadvantages
30. 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 Design
Development and
Implementation Testing 1st Increment
Analysis Design
Development and
Implementation Testing 2nd Increment
Analysis Design
Development and
Implementation Testing 3rd Increment
33. Analysis Design
Development and
Implementation Testing 3rd Increment
Analysis Design
Development and
Implementation Testing 2nd Increment
Analysis Design
Development and
Implementation Testing 1st Increment
Incremental Model
35. 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
38. 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
39. 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.
40. Agile difficulties
1.Customer availability.
2. Individual team members personalities suitability to interact
with other teams
3. Priority determination may be extremely difficult especially
for many stakeholders.
4. Difficulty of shifting to a new model especially for large
companies
41. Agile and Plan-driven(water fall) methodologies
differences
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
42. Agile and Plan-driven methodologies
suitability
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
Hinweis der Redaktion
Due to increasing demands and low expectations of the software leads to its failure. Software engineering is derived from the software crisis. It regulates achieving a successful software.
Software engineering is a proud of achievement, without it we wouldn’t have explored space, internet and modern telecommunications
. There’s no natural limits or constrained by any physical laws.. Lack of the physical constraints leads to the software systems quickly become extremely complex , difficult to understand and expensive to maintain.
Q. What are natural constrains or limits of software ?Ans. There’s no natural limits or constrained by any physical laws.Q. What are the consequences of the above constraints?Ans. Lack of the physical constraints leads to the software systems quickly become extremely complex , difficult to understand and expensive to maintain.
IEEE defines Software Engineering: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: The Institute of Electrical and Electronics Engineers. that is dedicated to advancing technological innovation and excellence
- Software Process is a sequence of activities leading to production- Software development is the development of a software product. The term "software development" may be used to refer to the activity of computer programming, which is the process of writing and maintaining the source code, ideally in a planned and structured process. Therefore, software development may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products.
The systematic approach that is used in software engineering is sometimes called a software process. A software process is a sequence of activities that leads to the production of a software product. There are four fundamental activities that are common to all software processes. These activities are:1. Software specification, where customers and engineers define the software thatis to be produced and the constraints on its operation.2. Software development, where the software is designed and programmed.3. Software validation, where the software is checked to ensure that it is what thecustomer requires.4. Software evolution, where the software is modified to reflect changing customer and market requirements.
Software prototyping, refers to the activity of creating prototypes of software applications, i.e., incomplete versions of the software program being developed. It is an activity that can occur in software development. A prototype typically simulates only a few aspects of, and may be completely different from the final product. It's like a toy implementation of the product Types of prototyping: Software prototyping has many variants. However, all the methods are in some way based on two major types of prototyping: Throwaway Prototyping and Evolutionary Prototyping.1.Throwaway prototyping: Also called close-ended prototyping. Throwaway or Rapid Prototyping refers to the creation of a model that will eventually be discarded rather than becoming part of the final delivered software. After preliminary requirements gathering is accomplished, a simple working model of the system is constructed to visually show the users what their requirements may look like when they are implemented into a finished system.2. Evolutionary prototyping: The main goal when using Evolutionary Prototyping is to build a very robust prototype in a structured manner and constantly refine it. "The reason for this is that the Evolutionary prototype, when built, forms the heart of the new system, and the improvements and further requirements will be built. When developing a system using Evolutionary Prototyping, the system is continually refined and rebuilt. Evolutionary prototyping acknowledges that we do not understand all the requirements and builds only those that are well understood. This technique allows the development team to add features, or make changes that couldn't be conceived during the requirements and design phase. For a system to be useful, it must evolve through use in its intended operational environment. A product is never "done;" it is always maturing as the usage environment changes we often try to define a system using our most familiar frame of reference---where we are now. We make assumptions about the way business will be conducted and the technology base on which the business will be implemented. A plan is enacted to develop the capability, and, sooner or later, something resembling the envisioned system is delivered. Evolutionary Prototypes have an advantage over Throwaway Prototypes in that they are functional systems. Although they may not have all the features the users have planned, they may be used on an interim basis until the final system is delivered.3. Incremental prototyping: The final product is built as separate prototypes. At the end the separate prototypes are merged in an overall design.4. Extreme prototyping: Extreme Prototyping as a development process is used especially for developing web applications. Basically, it breaks down web development into three phases, each one based on the preceding one.
Iteration means the act of repeating a process usually with the aim of approaching a desired goal or target or result. Each repetition of the process is also called an “iteration”, and the results of one iteration are used as the starting point for the next iteration. You are building your whole system following the waterfall methodology steps and then return back from any process to another
A series of mini-Waterfalls are performed, where all phases of the Waterfall are completed for a small part of a system, before proceeding to the next incrementOverall requirements are defined before proceeding to evolutionary, mini-Waterfall development of individual increments of a system
The meanings of the manifesto items on the left within the agile software development context are described below:1.Individuals and interactions: in agile development, self-organization and motivation are important, as are interactions like co-location and pair programming.2.Working software : working software will be more useful and welcome than just presenting documents to clients in meetings.3.Customer collaboration:– requirements cannot be fully collected at the beginning of the software development cycle, therefore continuous customer or stakeholder involvement is very important.4.Responding to change: agile development is focused on quick responses to change and continuous development.
In practice, the principles underlying agile methods are sometimes difficult to realize: 1. Although the idea of customer involvement in the development process is an attractive one, its success depends on having a customer who is willing and able to spend time with the development team and who can represent all system stakeholders. Frequently, the customer representatives are subject to other pressures and cannot take full part in the software development. 2. Individual team members may not have suitable personalities for the intense involvement that is typical of agile methods, and therefore not interact well with other team members. 3. Prioritizing changes can be extremely difficult, especially in systems for which there are many stakeholders. Typically, each stakeholder gives different priorities to different changes. 4. Maintaining simplicity requires extra work. Under pressure from delivery schedules, the team members may not have time to carry out desirable system simplifications. 5. Many organizations, especially large companies, have spent years changing their culture so that processes are defined and followed. It is difficult for them to move to a working model in which processes are informal and defined by development teams.