0% found this document useful (0 votes)
8 views4 pages

Software Engineering

The document outlines various software development methodologies, including the traditional Waterfall model, the iterative Spiral model, and Agile practices, highlighting their advantages and disadvantages. It emphasizes the importance of communication in the development cycle and the evolution of Agile frameworks over time. Additionally, it discusses common challenges faced in software development, such as misunderstandings of Agile principles and the semantic gap between developers and domain experts.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views4 pages

Software Engineering

The document outlines various software development methodologies, including the traditional Waterfall model, the iterative Spiral model, and Agile practices, highlighting their advantages and disadvantages. It emphasizes the importance of communication in the development cycle and the evolution of Agile frameworks over time. Additionally, it discusses common challenges faced in software development, such as misunderstandings of Agile principles and the semantic gap between developers and domain experts.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

• Systems development life cycle:

o Old version: System concept → Implementation → Maintenance → Disposition.


o New version (DevOps): No final version of SW; Continuous development.
▪ Dev part includes: design, code, check-in, build, test and quality assessment.
▪ Ops part includes: monitoring, operating and deployment.
• Project management triangle:
o The value is the main element in the development decision.
o The quality of work is constrained by the project's budget (cost), deadlines (time) and features
(scope).
• Software development paradigms and models:
o Waterfall model (Herbert D. Benington, 1956):
▪ The breakdown of project activities into linear sequential phases, where each phase
depends on the deliverables of the previous one.
▪ The most well-known. Teams structure is functional.
▪ Functional/Cross-Functional team:
• Functional structure divides the organization into departments based on their
function.
• Cross-functional team is a group of people with different functional expertise
working toward a common goal.

Advantages Disadvantages
• Easy to understand and implement. • Idealized, doesn’t match reality well.
• Widely used and known • Doesn’t reflect iterative nature of
• Reinforces good habits: define- exploratory development.
before- design, design-before-code • Unrealistic to expect accurate
• Identifies deliverables and milestones requirements so early in project
• Document-driven • The software is delivered late in project,
• Works well on mature products delaying discovery of serious errors.
• Difficult to integrate risk management
• Significant administrative overhead, costly
for small teams and projects.
• Difficult and expensive to make changes to
documents (swimming upstream).

o V-shape model:
▪ An extension of the waterfall model and is based on the association of a testing phase for
each corresponding development stage.

Advantages Disadvantages
• Emphasize planning for verification • Does not easily handle concurrent events
and validation of the product in early • Does not handle iterations or phases
stages of product development • Does not easily handle dynamic changes
• Each deliverable must be testable in requirements
• Project management can track • Does not contain risk analysis activities
progress by milestones
o Spiral model:
▪ An iterative model which includes risk analysis and risk management.
▪ Key Idea: On each iteration identify and solve the subproblems with the highest risk.

Advantages Disadvantages
• Realism: the model accurately reflects • Needs technical expertise in risk analysis
the iterative nature of software to really work
development on projects with unclear • Difficult to understand and apply, hence
requirements not so widely used
• Flexibility: incorporates the • Needs competent professional
advantages of the waterfall and rapid management.
prototyping methods • High administrative overhead.
• Comprehensive model decreases risk
• Good project visibility.

o Incremental model:
▪ A method of software development where the product is designed, implemented and tested
incrementally (a little more is added each time) until the product is finished.
▪ It involves both development and maintenance.
▪ It combines the elements of the waterfall model with the iterative philosophy of
prototyping.
▪ Disadvantages:
• Due to the “contractual basis” and without regular communication with the client, it
is not possible to receive feedback on an ongoing basis.
• Changes in the project are also not desirable.
• The client receives the finished product only at the end of the development period.
o Agile Software development:
▪ Manifesto: while there is value in the items on the right, we value the items on the left
more.
• Individuals and interactions over processes and tools
• Working software over comprehensive documentation
• Customer collaboration over contract negotiation
• Responding to change over following a plan
▪ Teams overlap, that is they share responsibility and ownership of artifacts.
▪ Test Driven Development (TDD): is the idea of having the developers to write unit tests
along with the process of development and use them regularly.
▪ Other testing methods like Integration, Regression, Load, Penetration, Mutation and Soak
testing are done by the testing department.
▪ Any agile team should have a Customer Representative (Product Owner in Scrum); This
person is agreed by stakeholders to act on their behalf and should be available for
developers to answer questions throughout the iteration.
• Software methodologies and frameworks:
o Lean concept:
▪ Divide the work activities into the value-adding ones, and the non-value-adding ones
▪ Divide them again into the ones that are needed and the ones that are not needed.
• The value-adding, needed activities should be given the priority and support.
• The non-value-adding, needed activities needs reorganization and focus.
• The non-value-adding, not needed activities can be removed.
• Lack of communication between different people in development cycle leads to having the product totally
different from what the client expected
o This process is similar to the Chinese whispering game, in which the players form a line, the first
player comes up with a message and whispers it to the ear of the second person in the line. The
second player repeats the message to the third player, and so on. When the last player is reached,
they announce the message they heard to the entire group.
o The first person then compares the original message with the final version, errors typically
accumulate in the retellings, so the statement announced by the last player differs significantly from
that of the first player.
• Agile evolution:
o Spiral (1986) => Scrum (1993) => Team Software Process (1996) => Extreme programming (1996)
=> Agile Manifesto (2001) => Agile Unified Process (2005) => Disciplined Agile Delivery => Scaled
Agile Framework (2011) => Large-Scale Scrum (2013)
▪ DAD enables teams to make simplified process decisions around incremental and iterative
solution delivery.
▪ SAFe is the most common approach to scaling agile practices, it promotes alignment,
collaboration, and delivery across large numbers of agile teams.
▪ LeSS is a product development framework that extends Scrum with scaling rules and
guidelines without losing the original purposes of Scrum.
o Projects following Agile tend to be more challenged than waterfall, although they have smaller
chance to fail, and higher change to succeed.
• Dark side of Agile:
o A misunderstanding of the Agile manifesto, interpreting it as “the only way of SWD” and thinking of
the items on the right as useless.
o This advocates coding without discipline, planning and documenting.
o Agile manifesto has nothing to do with this false translation and they describe it as “an attempt to
legitimize hacker behavior”
• Half-Arsed (fake) agile:
o Another misunderstanding of the Agile manifesto, they are companies who pretend to follow agile,
while not letting go of the items on the right, they are ready to follow agile until it’s waterfall.
• Comparison between different type of programmers
Traditional Software Cowboy Coder Agile Software Engineer
Engineer
Analysis and Completes all the analysis Doesn’t do any analysis or Does only the necessary
design and design before design and rushes to code analysis and design then
proceeding to code. without thinking. starts working.

Documentation Writes all the Doesn’t write any Writes a clean, self-
comprehensive documentation. documenting code, and
documentation in a only the documentation
complete and pervasive that is needed by people.
way.
Deadlines Especially close to the Only close to the deadline, Especially close to the
deadline, he works like he works like crazy to get deadline, He works no
crazy to get the project the project done. more than 40h per week,
done. keeping a constant pace
and a fresh mind.
Code Doesn’t like others to Doesn’t like others to The code is of the team
modify his code. modify his code. and everyone is allowed to
modify it also extensively,
provided the tests keep
running.
Integration Integrates the system only Integrates the system only Integrates the system at
at the end, he defines at the end, he doesn’t least daily, to make sure
precise interaction know exactly what to do. there will be no problems
protocols and documents in production.
them with maximal details.
Customer Hides the product from the Tries to hide the product The customer should be
collaboration customer unless it’s in a from the customer unless constantly exposed to the
clean pre-done state, he it’s completely finished. product being built and to
contacts the customer only the development team,
by formal balanced and, whenever possible,
appointments. have a representative on
site.

Attitude to the If the code is working, he Even if the code is not Even if the code is working,
code doesn’t modify it. working, he doesn’t modify constantly refactor I, use
it, he tries to hide it. the test cases to ensure
you do not introduce an
undesired bug.
Planning Plans everything well in Doesn’t plan anything and Plans everything that he
advance thinking that tries not to change. can reasonably foresee and
there will be no need to is always ready to change;
change. changes occur naturally in
software projects.

• Common problems:
o Product owner knowing nothing about the product, while customer knows.
o Product manager forces the team to do some activities like meetings, retrospective, etc. without
telling them the benefits.
o Teams trying to reinvent the wheel, by using a hybrid development model to work with.
• Semantic Gap:
o Developers and domain experts use different language and terminology to describe the same thing,
leading to communication problems
o Solution is to use a ubiquitous language (creating a common dictionary by asking other about words
that are ambiguous) that connects all parts of the design and evolves during the whole development
process.
• Semantic memory: an abstract network of concepts that affords rich inferential ability.
• Episodic memory: specific events from which inference is difficult.
• Types of questions to ask during stakeholder interview:
o Opening questions
o Introductory questions
o Transition questions
o Key questions
o Ending questions.

You might also like