Title: What is S.E?
1What is S.E?
- Describe S.E in terms of its mistakes
- Standish Group (www.standish.com)
- US - 250 Billion on IT projects.
- 31 projects are cancelled
- 52.7 of projects will cost 189 of their
original estimates - 81 billion (US) will be spent on cancelled
projects - 59 billion (US) will be spent for software
projects that will be completed but will exceed
original estimates - SE defined - discipline whose aim is the
production of fault free software delivered on
time and within budget and satisfies user needs. - SE scope is broad - economics, psychology
2Process of System Development
- A system development process is a set of
activities, methods, best practices,
deliverables, and automated tools that
stakeholders (Chapter 1) use to develop and
maintain information systems and software.
3Historical Aspects
- Software Engineering was first coined in 1967 at
a NATO SE conference - attempted to address
software crisis - Problem - SE not really like normal engineering
- Software not designed for all possible
consequences - Hardware is getting faster - this means software
is growing in size and complexity - Software maintenance can be a huge undertaking
quite different from a bridge maintenance job.
4Maintenance Aspects
- Software development goes through a series of
steps - requirements
- design
- implementation
- integration
- maintenance
- Figure 1.2 page 11 - 67 is devoted to maintenance
5Problems with Software Production
- Software is complex - the hardest thing we humans
do !!!! - Fred Brooks - No Silver Bullet
- Complexity
- Conformity
- Changeability
- Invisibility
6Principles of System Development
- Get the owners and users involved.
- Use a problem-solving approach.
- Establish phases and activities.
- Establish standards.
- Justify systems as capital investments.
- Dont be afraid to cancel or revise scope.
- Divide and conquer.
- Design systems for growth and change.
7Capability Maturity Model (CMM)
8(No Transcript)
9 10Alternative Routes through a Methodology
- Model-Driven Development (MDD)
- Rapid Application Development (RAD)
- Commercial Off-the-Shelf Software (COTS)
- Maintenance and Reengineering or hybrids of the
above
11Model-Driven Development Route
- Modeling is the act of drawing one or more
graphical representations (or pictures) of a
system. Modeling is a communication technique
based upon the old saying, a picture is worth a
thousand words. - Model-driven development techniques emphasize the
drawing of models to help visualize and analyze
problems, define business requirements, and
design information systems. - Structured systems analysis and design
process-centered - Information engineering (IE) data-centered
- Object-oriented analysis and design (OOAD)
object-centered (integration of data and process
concerns)
12(No Transcript)
13 14(No Transcript)
15 16 17 18(No Transcript)
19Planning User stories are written.Release
planning creates the schedule.Make frequent
small releases.The Project Velocity is
measured.The project is divided into
iterations.Iteration planning starts each
iteration.Move people around.A stand-up meeting
starts each day.Fix XP when it breaks.
Coding The customer is always available.Code
must be written to agreed standards.Code the
unit test first.All production code is pair
programmed.Only one pair integrates code at a
time.Integrate often.Use collective code
ownership.Leave optimization till last.No
overtime.
Designing Simplicity.Choose a system
metaphor.Use CRC cards for design
sessions.Create spike solutions to reduce
risk.No functionality is added early.Refactor
whenever and wherever possible
Testing All code must have unit tests.All code
must pass all unit tests before it can be
released.When a bug is found tests are
created.Acceptance tests are run often and the
scoreis published.