0% found this document useful (0 votes)
6 views

Software Development - Lecture 3

The document outlines the software development process, emphasizing the importance of good processes for successful software projects. It details basic steps such as feasibility, requirements, design, implementation, acceptance, and maintenance, along with quality control measures and testing categories. It also discusses heavyweight and lightweight methodologies, highlighting their differences in approach and deliverables.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

Software Development - Lecture 3

The document outlines the software development process, emphasizing the importance of good processes for successful software projects. It details basic steps such as feasibility, requirements, design, implementation, acceptance, and maintenance, along with quality control measures and testing categories. It also discusses heavyweight and lightweight methodologies, highlighting their differences in approach and deliverables.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 16

Steps in the Software Development

Process
Software Engineering

Lecture
Software Process
• Fundamental Assumption:
– Good processes lead to good software.
– Good processes reduce risk.
– Good processes enhance visibility.
– Good processes enable teamwork.
• Software products are very varied and therefore, there is
no standard process for all software engineering projects.
• Successful software development projects all need to address
similar issues.
• This creates a number of process steps that should be part of all
software projects.
Basic Process Steps in all Software Development

• Feasibility and planning.


• These steps may be repeated many times during the
development cycle:
– Requirements.
– System and program design.
– Implementation.
– Acceptance and release.
• Operation and maintenance.
• Considerations of testing, security and
performance are part of many of these steps.
Quality Control Steps in all Software Development

• Validating the requirements.


• Validating the system and program design.
• Usability testing.
• Program testing.
• Acceptance testing.
• Bug fixing and maintenance.
Categories of Testing
• The term “testing” is used in several different
contexts, which are easily confused:
– User testing
• Versions of the user interface are tested by users. Their
experience may lead to changes in the requirements or the
design.
– Program testing
• The development team tests components individually (unit
testing) or in combination (system testing) against the design to
find bugs, etc.
– Acceptance testing
• The client tests the final version of the system or parts of the
system against the requirements.
Process Step: Feasibility
• A feasibility study precedes the decision to begin a
project.
– What is the scope of the proposed project?
– Is the project technically feasible?
– What are the projected benefits?
– What are the costs, timetable?
– Are the resources available?
– What are the risks and how can they be managed?
• A feasibility study leads to a decision: go or no-
go.
Process Step: Requirements
• Requirements define the function of the system from the client's
viewpoint.
• The requirements establish the system's functionality, constraints,
and goals by consultation with the client, customers, and users.
• They must be developed in a manner that is understandable by
both the client and the development staff.
• This step is sometimes divided into:
– Requirements analysis.
– Requirements definition.
– Requirements specification.
• The requirements may be developed in a self-contained study, or
may emerge incrementally.
• Failure to agree on the requirements and define them adequately is
one of the biggest cause of software projects failing.
Process Step: System and Program Design

•Design describes the system from the software developers'


viewpoint.
• System design:
– Establish a system architecture, both hardware and software, that
matches the requirements
• Program design:
– Represent the software functions in a form that can be
transformed into one or more executable programs
•Preliminary user testing is often carried out as part of the
design step.
•Models are used to represent the requirements, system
architecture, and program design. This course teaches the
basic concepts of the Unified Modeling Language (UML).
Process Step: Implementation
• Implementation (coding)
• The software design is realized as a set of programs or
program units.
• These software components may be written by the
development team, acquired from elsewhere, or
modified from existing components.
• Program testing
– Program testing by the development staff is an integral part of
implementation.
• Individual components are tested against the design.
• The components are integrated and tested against the
design as a complete system.
Process Step:Acceptance and Release

• Acceptance testing
– The system is tested against the requirements by
the client, often with selected customers and
users.
• Delivery and release
– After successful acceptance testing, the system is
delivered to the client and released into
production or marketed to customers.
Process Step: Operation and Maintenance

• Operation:
– The system is put into practical use.
• Maintenance:
– Errors and problems are identified and fixed.
• Evolution:
– The system evolves over time as requirements change, to
add new functions, or adapt to a changing technical
environment.
• Phase out:
– The system is withdrawn from service.
• This is sometimes called the Software Life Cycle.
Sequence of Processes
• Every software project will include these basic processes, in some
shape or form, but:
– The steps may be formal or informal.
– The steps may be carried out in various sequences.
• Major alternatives
– In this course, we will look at three categories of software
development processes:
– Sequential:
• As far as possible, complete each process step before beginning
the next.
Waterfall model.
– Iterative:
• Go quickly through all process steps to create a rough system, then repeat
them to improve the system. Iterative refinement.
– Incremental:
• An variant of iterative refinement in which small increments of software are
placed in production (sprints). Agile development.
Heavyweight and Lightweight Software Development

• In a heavyweight process, the development team works


through the process steps slowly and systematically, with
the aim of fully completing each process step and
delivering a complete software product that will need
minimal changes and revision.
– Example: Modified Waterfall Model.
• In a lightweight process, the development team releases
working software in small increments, and develops the
plans incrementally, based on experience. Each
increment includes all the process steps. There is an
expectation that changes will be made based on
experience.
– Example: Agile Software Development.
Heavyweight and Lightweight Methodologies

Heavyweight Lightweight

Processes and tools Individuals & interactions.


Specification Working software.
Client Client collaboration.
negotiation Responding to change.
Following a plan
Deliverables
• A deliverable is some work product that is
delivered to the client.
– In a heavyweight process, each process step
creates a deliverable, usually documentation, e.g.,
a requirements specification.
– In a lightweight process, the deliverables are
incremental working code, with minimal
supporting documentation.
Thanks!

You might also like