SE Unit 1
SE Unit 1
Efficiency
• Software should not waste system-resources
such as:
• memory-cycles and
• Processor-cycles.
– Efficiency includes
– response-time
– processing-time and
– Memory-utilization.
Usability
• Software must be usable, without undue
effort, by the user.
• Software should have an appropriate
• user interface and
• Proper documentation
Generic products are developed for anonymous The customized products are developed for specific
customers customers.
The specifications are usually developed and controlled The software specifications are developed and controlled
by the Organization who develops the software product. by the Organizations who are buying the software.
3. Software Validation
• Software is checked to ensure that it is what the customer requires.
4. Software Evolution
• Software must evolve to meet the changing customer requirements.
PRESCRIPTIVE PROCESS MODELS
• The Waterfall Model
• Incremental Process Models
• Evolutionary Process
Models(Spiral,prototype,iterative)
• Concurrent Models
SPECIALIZED PROCESS MODELS
• Component-Based Development Model
• The Formal Methods Model
• Aspect-Oriented Software Development Model
Prescriptive process models
• Prescriptive process models were originally
proposed to bring order to the chaos of
software development. Prescriptive process
models define a prescribed set of process
elements and a predictable process work flow.
“prescriptive” because they prescribe a set of
process elements—framework activities,
software engineering actions, tasks, work
products, quality assurance, and change
control mechanisms for each project.
System Design
• It is the intermediate step between requirement analysis
and coding.
• The requirement specifications from first phase are studied
in this phase and the system design is prepared.
• This system design helps in specifying hardware and system
requirements and helps in defining the overall system
architecture.
• The customer requirements are broken down into logical
modules.
• Also the inter relation between the various logical modules
is established at this stage.
• Algorithms and diagrams are designed to define the scope
and objective of each logical model.
• This phase lays a fundamental for actual programming and
implementation.
Implementation and Unit Testing
• Coding is a step in which design is translated into
machine readable form.
• On receiving system design documents, the work is
divided into modules / units and actual coding is
started.
• The system is first developed in small programs called
units, which are integrated in the next phase.
• Each unit is developed is developed and tested for its
functionality, that is referred to as unit testing.
• If design is done with the sufficient details then coding
can be done efficiently.
Incremental Model
• Incremental Model is a process of
software development where
requirements divided into multiple
standalone modules of the software
development cycle. In this model, each
module goes through the requirements,
design, implementation and testing
phases. Every subsequent release of
the module adds function to the
previous release. The process
• The various phases of incremental model are as
follows:
• 1. Requirement analysis: In the first phase of
the incremental model, the product analysis
expertise identifies the requirements. And the
system functional requirements are
understood by the requirement analysis team.
To develop the software under the incremental
model, this phase performs a crucial role.
• 2. Design & Development: In this phase of the
Incremental model of SDLC, the design of the
system functionality and the development
method are finished with success. When
software develops new practicality, the
incremental model uses style and development
phase.
• 3. Testing: In the incremental model, the testing phase
checks the performance of each existing function as
well as additional functionality. In the testing phase,
the various methods are used to test the behavior of
each task.
• 4. Implementation: Implementation phase
enables the coding phase of the development
system. It involves the final coding that design
in the designing and development phase and
tests the functionality in the testing phase.
After completion of this phase, the number of
the product working is enhanced and
upgraded up to the final system product
Iterative Model
Concurrent Models
• The concurrent development model, sometimes called
concurrent engineering, allows a software team to
represent iterative and concurrent elements of any of the
process models.
• The concurrent model is often more appropriate for product
engineering projects where different engineering teams are
involved.
• These models provides a schematic representation of one
software engineering activity, within the modeling activity
using a concurrent modeling approach.
• The activity modeling may be in any one of the states noted
at any given time.
• Similarly, other activities, actions, or tasks (e.g.,
communication or construction) can be represented in an
analogous manner.
• The concurrent development model
• The concurrent development model is called as
concurrent model.
• The communication activity has completed in the first
iteration and exits in the awaiting changes state.
• The modeling activity completed its initial
communication and then go to the
underdevelopment state.
• If the customer specifies the change in the
requirement, then the modeling activity moves from
the under development state into the awaiting
change state.
• The concurrent process model activities moving from
one state to another state.
• Advantages of the concurrent development
modelThis model is applicable to all types of
software development processes.
• It is easy for understanding and use.
• It gives immediate feedback from testing.
• It provides an accurate picture of the current
state of a project.
• Disadvantages of the concurrent
development modelIt needs better
communication between the team members.
This may not be achieved all the time.
• It requires to remember the status of the
different activities.
AGILE DEVELOPMENT
WHAT IS AGILITY?
• Agile is a software development methodology to build software
incrementally using short iterations of 1 to 4 weeks so that the
development process is aligned with the changing business needs.
• An agile team is a nimble (smart)team able to appropriately
respond to changes.
• Change is what software development is very much about.
• Changes in the software being built, changes to the team
members, changes because of new technology, changes of all
kinds that may have an impact on the product they build or the
project that creates the product.
• Support for changes should be built-in everything we do in
software, something we embrace because it is the heart and soul
of software.
• An agile team recognizes that software is developed by individuals
working in teams and that the skills of these people, their ability to
collaborate is at the core for the success of the project.
Agile Process
• Any agile software process is characterized in a manner that
addresses a number of key assumptions about the majority of
software projects:
• 1. It is difficult to predict in advance which software
requirements will persist and which will change. It is equally
difficult to predict how customer priorities will change as the
project proceeds.
• 2. For many types of software, design and construction are
interleaved. That is, both activities should be performed in
tandem so that design models are proven as they are created. It is
difficult to predict how much design is necessary before
construction is used to prove the design.
• 3. Analysis, design, construction, and testing are not as
predictable
Agility Principles
1. Our highest priority is to satisfy the customer through early
and continuous delivery of
valuable software.
2. Welcome changing requirements, even late in
development. Agile processes harness
change for the customer’s competitive advantage.
3. Deliver working software frequently, from a couple of
weeks to a couple of months, with
a preference to the shorter timescale.
4. Business people and developers must work together daily
throughout the project.
5. Build projects around motivated individuals. Give them the
environment and support they
need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and
within a
development team is face-to-face conversation.
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors,
developers, and users
should be able to maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good design enhances
agility.
10. Simplicity—the art of maximizing the amount of work not done—is
essential.
11. The best architectures, requirements, and designs emerge from self–
organizing teams.
12. At regular intervals, the team reflects on how to become more effective,
then tunes and adjusts its behavior accordingly.
Human Factors
• Agile development focuses on the talents and skills of individuals,
molding the process to specific people and teams.” The key point
in this statement is that the process molds to the needs of the
people and team
• Competence. In an agile development context, “competence”
encompasses innate talent, specific software-related skills, and
overall knowledge of the process that the team has chosen to
apply. Skill and knowledge of process can and should be taught to
all people who serve as agile team members.
• Common focus. Although members of the agile team may
perform different tasks and bring different skills to the project, all
should be focused on one goal—to deliver a working software
increment to the customer within the time promised.
• To achieve this goal, the team will also focus on continual
adaptations (small and large) that will make the process fit the
needs of the team.
• Collaboration. Software engineering (regardless of process) is
about assessing, analyzing, and using information that is
communicated to the software team; creating information that
will help all stakeholders understand the work of the team; and
building information (computer software and relevant databases)
that provides business value for the customer. To accomplish these
tasks, team members must collaborate—with one another and all
other stakeholders.
• Decision-making ability. Any good software team (including agile
teams) must be allowed the freedom to control its own destiny.
This implies that the team is given autonomy—decision-making
authority for both technical and project issues.
• Fuzzy problem-solving ability. Software managers must recognize
that the agile team will continually have to deal with ambiguity
and will continually be buffeted by change.
• Mutual trust and respect. The agile team must become what
DeMarco and Lister call a “jelled” team. A jelled team exhibits the
trust and respect that are necessary to make them “so strongly
knit that the whole is greater than the sum of the parts.”
• Scrum
• SCRUM is an agile development process focused
primarily on ways to manage tasks in team-based
development conditions.
• There are three roles in it, and their responsibilities
are:
• Scrum Master: The scrum can set up the master
team, arrange the meeting and remove obstacles
for the process
• Product owner: The product owner makes the
product backlog, prioritizes the delay and is
responsible for the distribution of functionality on
each repetition.
• Scrum Team: The team manages its work and
organizes the work to complete the sprint or cycle.
• SCRUM is an agile development method
which concentrates specifically on how to
manage tasks within a team-based
development environment. Basically, Scrum is
derived from activity that occurs during a
rugby match. Scrum believes in empowering
the development team and advocates working
in small teams (say- 7 to 9 members). Agile
and Scrum consist of three roles, and their
responsibilities are explained as follows:
• Crystal Methodologies
• Crystal Methodology is based on three concepts
1. Chartering: Various activities involved in this phase
are creating a development team, performing a
preliminary feasibility analysis, developing an initial
plan and fine-tuning the development methodology
2. Cyclic delivery: The main development phase
consists of two or more delivery cycles, during which
the
1. Team updates and refines the release plan
2. Implements a subset of the requirements through one or
more program test integrate iterations
3. Integrated product is delivered to real users
4. Review of the project plan and adopted development
methodology
3. Wrap Up: The activities performed in this phase are
deployment into the user environment, post-
deployment reviews and reflections are performed.
Agile Modeling suggests a wide array of “core” and “supplementary” modeling principles,
those that make AM unique are :
Travel light
As software engineering work proceeds, keep only those models that will provide long-term
value and throw the remaining models.
Every work product that is kept must be maintained as changes occur.
This represents work that slows the team down.
Every time you decide to keep a model you trade-off agility for the convenience of having that
information available to your team in an abstract manner
Content is more important than representation
Modeling should impart information to its intended audience.
A syntactically perfect model that imparts little useful content
is not as valuable as a model with flawed notation that
nevertheless provides valuable content for its audience.
Know the models and the tools you use to create them
Understand the strengths and weaknesses of each model and
the tools that are used to create it.
Adapt locally
The modeling approach should be adapted to the needs of the
agile team
Modeling: UML representations of the business and problem domains are created.
Testing: Like XP, the team designs and executes a series of tests to uncover errors and
ensure that the source code meets its requirements.
Deployment. Like the generic process activity deployment in this context focuses on the
delivery of a software increment and the acquisition of feedback from end users.
REQUIREMENTS ENGINEERING
• Requirements analysis, also called requirements engineering, is
the process of determining user expectations for a new or
modified product. Requirements engineering is a major software
engineering action that begins during the communication activity
and continues into the modeling activity.
• It must be adapted to the needs of the process, the project, the
product, and the people doing the work. Requirements
engineering builds a bridge to design and construction.
Validation:
• The work products produced as a consequence of requirements engineering are
assessed for quality during a validation step. Requirements validation examines the
specification to ensure that all software requirements have been stated
unambiguously; that inconsistencies, omissions, and errors have been detected and
corrected; and that the work products conform to the standards established for the
process, the project, and the product.
• The primary requirements validation mechanism is the technical review.
• The review team that validates requirements includes software engineers,
customers, users, and other stakeholders who examine the specification looking for
errors in content or interpretation, areas where clarification may be required,
missing information, inconsistencies, conflicting requirements, or unrealistic
requirements.
Requirements management:
• Requirements for computer-based systems change, and the desire to change
requirements persists throughout the life of the system. Requirements management
is a set of activities that help the project team identify, control, and track
requirements and changes to requirements at any time as the project proceeds.
Many of these activities are identical to the software configuration management
(SCM) techniques.
Requirements Analysis
We can use their feedback to modify the prototype until the customer is
satisfied continuously. Hence, the prototype helps the client to visualize the
proposed system and increase the understanding of the requirements.
Helps you verify the functionality of the Helps you to verify the performance of the
Objective
software. software.
Documentation Describe what the product does Describes how the product works