Significance of Software Engineering: Processes & Agile Methods - Dr. Tom Way's Lectures, Study Guides, Projects, Research of Computer Science

An overview of software engineering, its importance, and various software development processes, focusing on the waterfall model, evolutionary development, incremental development, and the spiral model. Additionally, it introduces agile methods, including extreme programming (xp), and discusses their benefits and challenges.

Typology: Study Guides, Projects, Research

Pre 2010

Uploaded on 08/13/2009

koofers-user-4lb
koofers-user-4lb 🇺🇸

10 documents

1 / 5

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Dr. Tom Way CSC 4181 Slide 1
CSC 4181 – Compiler Construction
Software Engineering Lectures
Part 1
Dr. Tom Way CSC 4181 Slide 2
Software engineering Facts
zFact: The economies of ALL developed nations are
dependent on software.
zFact: More and more systems are software controlled
zFact: Expenditure on software represents a
significant fraction of GNP in all developed countries.
zFact: Software often costs more than the computer it runs
on.
zFact: Software costs more to maintain than to develop
Dr. Tom Way CSC 4181 Slide 3
What is software?
Software is:
zComputer programs
Source code
Executables, binaries, runtimes
zAssociated documentation
Requirements
Design models
User manuals
Dr. Tom Way CSC 4181 Slide 4
What is software engineering?
zSoftware engineering (SE) is the design,
development, and documentation of software
by applying technologies and practices from
computer science, project management,
engineering, application domains, interface
design, digital asset management and other
fields.
zTerm was invented in 1968
zUsed to be called “programmer” or “systems
analysis”
Dr. Tom Way CSC 4181 Slide 5
Why do we need Software Engineering?
zSoftware is big business
zBad software is expensive to a company
zStakes are very high
zHaving a good plan and good process improves
chances for success
zLots of high paying jobs in software
Dr. Tom Way CSC 4181 Slide 6
Software Development Processes
pf3
pf4
pf5

Partial preview of the text

Download Significance of Software Engineering: Processes & Agile Methods - Dr. Tom Way's Lectures and more Study Guides, Projects, Research Computer Science in PDF only on Docsity!

Dr. Tom Way CSC 4181 Slide 1

CSC 4181 – Compiler Construction

Software Engineering Lectures

Part 1

Dr. Tom Way CSC 4181 Slide 2

Software engineering Facts

z Fact : The economies of ALL developed nations are

dependent on software.

z Fact : More and more systems are software controlled

z Fact : Expenditure on software represents a

significant fraction of GNP in all developed countries.

z Fact: Software often costs more than the computer it runs

on.

z Fact: Software costs more to maintain than to develop

Dr. Tom Way CSC 4181 Slide 3

What is software?

Software is:

z Computer programs

  • Source code
  • Executables, binaries, runtimes

z Associated documentation

  • Requirements
  • Design models
  • User manuals Dr. Tom Way CSC 4181 Slide 4

What is software engineering?

z Software engineering (SE) is the design ,

development , and documentation of software

by applying technologies and practices from

computer science, project management,

engineering, application domains, interface

design, digital asset management and other

fields.

z Term was invented in 1968

z Used to be called “programmer” or “systems

analysis”

Why do we need Software Engineering?

z Software is big business

z Bad software is expensive to a company

z Stakes are very high

z Having a good plan and good process improves

chances for success

z Lots of high paying jobs in software

Software Development Processes

Dr. Tom Way CSC 4181 Slide 7 The software process z A structured set of activities required to develop a software system

  • Specification;
  • Design;
  • Validation;
  • Evolution. z A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective. Dr. Tom Way CSC 4181 Slide 8 The old way z The way software is engineered has evolved over the years z The “new” ways of software engineering resemble the “old” ways in a lot of ways z See if you can make out the resemblance Dr. Tom Way CSC 4181 Slide 9 Waterfall model Dr. Tom Way CSC 4181 Slide 10 Waterfall Model z Inflexible partitioning into distinct stages makes it hard to deal with changing customer requirements. z Only works when requirements are well-known and few changes are expected… which is rare! z The waterfall model is still used for some large, multi-site projects, but used less and less Evolutionary development Evolutionary development z Problems
  • Throw-away prototyping might waste work
  • Lack of process visibility
  • Systems are often poorly structured, evolve
  • Special skills (e.g. in languages for rapid prototyping)

may be required

z Applicability

  • For small or medium-size interactive systems;
  • For parts of large systems (e.g. the user interface);
  • For short-lifetime systems.

Dr. Tom Way CSC 4181 Slide 19 The Agile Approach (2)

z Projects are built around motivated individuals, who

should be trusted

z Continuous attention to technical excellence and good

design

z Simplicity

z Self-organizing teams

z Regular adaptation to changing circumstances

z From the Agile Manifesto (Google it)

Dr. Tom Way CSC 4181 Slide 20 Extreme programming z Perhaps the best-known and most widely used agile method. z Extreme Programming (XP) takes an ‘extreme’ approach to iterative development.

  • New versions may be built several times per day
  • New version delivered every 2 weeks
  • All tests run with each build, all must pass
  • Doesn’t reinvent the wheel – use COTS whenever

possible and affordable

Dr. Tom Way CSC 4181 Slide 21 The XP release cycle Dr. Tom Way CSC 4181 Slide 22 Extreme programming practices 1

Incremental planning Requirements are recorded on Story Cards and the Stories to be

included in a release are determined by the time available andtheir relative priority. The developers break these Stories into

development ŌTasksÕ.

Small Releases The minimal useful set of functionality that provides businessvalue is developed first. Releases of the system are frequent and

incrementally add functionality to the first release.

Simple Design Enough de sign is carried out to meet the current requirements

and no more.

Test first development An automated unit test framework is used to write tests for a new

piece of functionality before that functionality itself isimplemented.

Refactoring All developers are expected to refactor the code con tinuously assoon as possible code improvements are found. This keeps the

code simple and maintainable.

Extreme programming practices 2

Pair Programming Developers work in pairs, checking each otherÕproviding the support to always do a good job.s work and

Collective Ownership The pairs of developers work on all areas of the system, so that

no islands of expertise develop and all the developers own all thecode. Anyon e can change anything.

Continuous Integration As soon as work on a task is complete it is integrated into thewhole system. After any such integration, all the unit tests in the

system must pass.

Sustainable pace Large amounts of over-time are not considered acceptable as thenet effect is often to reduce code qua lity and medium term

productivity

On-site Customer A representative of the end-user of the system (the Customer)should be available full time for the use of the XP team. In an

extreme programming process, the customer is a member of thedevelopment team and is responsible for bringing system

requirements to the team for implementation.

Problems with agile methods

z It can be difficult to keep the interest of customers who

are involved in the process.

z Team members may be unsuited to the intense

involvement that characterises agile methods.

z Prioritizing changes can be difficult where there are

multiple stakeholders.

z Maintaining simplicity requires extra work.

z Contracts may be a problem as with other approaches to

iterative development.

Dr. Tom Way CSC 4181 Slide 25 Testing in XP z Test-first development z For each and every component (class, module, whatever) you develop, add one or more tests at the same time z Building means compiling the code and running all the tests, automatically z Keeps software working all the time Dr. Tom Way CSC 4181 Slide 26 Pair programming

z In XP, programmers work in pairs, sitting together to

develop code.

z This helps develop common ownership of code and

spreads knowledge across the team.

z It serves as an informal review process as each line of

code is looked at by more than 1 person.

z It encourages refactoring as the whole team can benefit

from this.

z Measurements suggest that development productivity

with pair programming is similar to that of two people

working independently.

SCRUM Approach z Backlog – list of all of the tasks to get done z Sprint – short iteration, get current backlog items done in this time z Scrum – short, daily stand-up meeting z Planning session – start of each sprint, plan which backlog items will be done z Heartbeat retrospective – end of sprint, reflect about the past sprint SCRUM stuff z Scrum Master - removes impediments to the ability of the team to deliver the sprint goal, not the team leader z Self organizing teams – magically everybody gets organized z Easily adapt to change – major benefit