Software Engineering
Ian Sommerville
Generic Process Framework
Communication
Involves communication among the customer and other stake holders; encompasses
requirements gathering.
Planning
Establishes a plan for software engineering work;
addresses technical tasks
work products
work schedule
Generic Process Framework
Modelling (Analysis, Design)
Encompasses the creation of models to better under the requirements and the
design.
Construction (code, Test)
Combines code generation and testing to uncover errors.
Deployment
Involves delivery of software to the customer for:
Evaluation
&
Feedback.
Modelling: Software Requirements Analysis
• Helps software engineers to better understand the problem they will work to solve.
• Encompasses the set of tasks that lead to an understanding of:
what the business impact of the software will be,
what the customer wants,
how end-users will interact with the software.
Modelling: Software Requirements Analysis
• Uses a combination of text and diagrams to depict requirements for
data, function & behavior.
Provides a relatively easy way to understand and review requirements for
correctness, completeness and consistency.
Modelling: Software Design
• Brings together customer requirements, business needs, and technical
consideration to form the “blueprint” for a product.
• Creates a model that provides detail about software data structures, software
architecture, interfaces, and components that are necessary to implement the
system.
Architectural Design
• Represents the structure of data and program components that are required to
build the software
• Considers the architectural style, the structure and properties of components that
constitute the system and interrelationships that occur among all architectural
components.
Modelling: Software Design
User Interface Design
• Creates an effective communication medium between a human and a
computer
• Identifies interface objects and actions and then creates a screen layout
that forms the basis for a user interface prototype
Component level design
• Defines the data structures, algorithms, interface characteristics, and
communication mechanisms allocated to each software component.
Traditional process models
Process model
Defines a distinct set of:
activities,
actions,
tasks,
milestones,
&
work products that are required to engineer high-quality software.
Traditional process models
• The activities may be:
linear, incremental, or evolutionary
Software Development Life Cycle
• Software Development Life Cycle (SDLC) is a process used by the software
industry to design, develop and test high quality software.
• It is also called as Software Development Process.
• SDLC is a framework defining tasks performed at each step in the software
development process.
Software Development Life Cycle
Waterfall Model(Diagram)
Waterfall Model (Description)
• Oldest software lifecycle model
• Used when requirements are well understood and risk is low
• Work flow is in a linear(i.e., Sequential)fashion
• Used often with well-defined adaptations or enhancements to current software
Waterfall Model (Description)
• The Waterfall Model was the first Process Model to be introduced. It is also
referred to as a linear-sequential life cycle model. It is very simple to understand
and use. In a waterfall model, each phase must be completed before the next phase
can begin and there is no overlapping in the phases.
• The Waterfall model is the earliest SDLC approach that was used for software
development.
• The waterfall Model illustrates the software development process in a linear
sequential flow. This means that any phase in the development process begins
only if the previous phase is complete. In this waterfall model, the phases do not
overlap.
Waterfall Model (Problems)
• Doesn’t support iteration, so change can cause confusion
• Difficult for customers to state all requirements explicitly and up front.
• Requires customer patience because a working version of the program doesn’t
occur until the final phase.
• High amounts of risk and uncertainty.
• Problems can be somewhat alleviated in the model through the addition of
feedback loops.(see the next slide)
Waterfall model with feedback loop
Waterfall Model (Advantages)
• simple and easy to understand and use
• Easy to manage due to the rigidity of the model. Each phase has specific
deliverables and a review process.
• Phases are processed and completed one at a time.
• Clearly defined stages.
• Well understood milestones.
• Easy to arrange tasks.
• Process and results are well documented.
When to Use Waterfall Model?
• You can use the Waterfall model if −
• Requirements are very well known.
• Product definition is stable.
• Technology is well understood.
• New version of an existing product.
• Porting an existing product to a new platform.
• Large organization with structured cross-functional teams.
• Communication channels are well established within the organization and with the
customer as well.