Professional Documents
Culture Documents
SOFTWARE ENGINEERING
UNIT-1
4. SOFTWARE PROCESS
• Communication
– Involves communication among the customer and other stake holders;
encompasses requirements gathering
• Planning
– Establishes a plan for software engineering work; addresses technical tasks,
resources, work products, and work schedule
• Modelling (Analyze, Design)
2
– 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 and feedback
The umbrella activities in a software development life cycle process include the following:
1. Software project tracking and control: When plan, tasks, models all have been done
then a network of software engineering tasks that will enable to get the job done on time
will have to be created.
2. Formal technical reviews: This includes reviewing the techniques that have been used
in the project.
3. Software quality assurance: This is very important to ensure the quality measurement
of each part to ensure them.
4. Software configuration management: Software configuration management (SCM) is a
set of activities designed to control change by identifying the work products that are
likely to change, establishing relationships among them, defining mechanisms for
managing different versions of these work products.
5. Document preparation and production: All the project planning and other activities
should be hardly copied and the production gets started here.
3
Help you establish mind-set for solid software engineering practice (David Hooker 96).
1: The Reason It All Exists: provide values to users
2: KISS (Keep It Simple, Stupid! As simple as possible)
3: Maintain the Vision (otherwise, incompatible design)
4: What You Produce, Others Will Consume (code with concern for those that must maintain and
extend the system)
4
5: Be Open to the Future (never design yourself into a corner as specification and hardware
changes)
6: Plan Ahead for Reuse
7: Think! Place clear complete thought before action produces better results.
SOFTWARE MYTHS
Definition: Beliefs about software and the process used to build it. Myths have number of
attributes that have made them insidious (i.e. dangerous).
□ Misleading Attitudes - caused serious problem for managers and technical people.
There are three types of myths:
1. Management myths
2. Customer myths
3. Practitioner myths
Management myths
Managers in most disciplines are often under pressure to maintain budgets, keep schedules on
time, and improve quality.
Myth1: We already have a book that's full of standards and procedures for building software;
won't that provide my people with everything they need to know?
Reality:
□ Are software practitioners aware of existence standards?
□ Does it reflect modern software engineering practice?
□ Is it complete? Is it streamlined to improve time to delivery while still maintaining a
focus on quality?
Customer Myths
Customer may be a person from inside or outside the company that has requested software under
contract.
Myth 1: A general statement of objectives is sufficient to begin writing programs— we can fill
in the details later.
Reality: A poor up-front definition is the major cause of failed software efforts. A formal and
detailed description of the information domain, function, behavior, performance, interfaces,
design constraints, and validation criteria is essential. These characteristics can be determined
only after thorough communication between customer and developer.
Practitioner's myths
Myth1: Once we write the program and get it to work, our job is done.
Reality: Someone once said that "the sooner you begin 'writing code', the longer it'll take you to
get done." Industry data indicate that between 60 and 80 percent of all effort expended on
software will be expended after it is delivered to the customer for the first time.
PROCESS PATTERNS
a. A process pattern
5
iii. ISO 9001:2000 for Software—a generic standard that applies to any organization
that wants to improve the overall quality of the products, systems, or services that it
provides. Therefore, the standard is directly applicable to software organizations and
companies. [Ant06]
The V-Model:
1. V- Model means Verification and Validation model. Just like the waterfall model, the V-
Shaped life cycle is a sequential path of execution of processes.
2. Diagrammatic representation of v-model:
7
3. Principles of V – Model:
i. Each phase must be completed before the next phase begins.
ii. Testing of the product is planned in parallel with a corresponding phase of
development in V-model.
4. When to use the V-model:
i. The V-shaped model should be used for small to medium sized projects where
requirements are clearly defined and fixed.
ii. The V-Shaped model should be chosen when ample technical resources are
available with needed technical expertise.
5. Advantages of V-model:
i. Simple and easy to use.
ii. Testing activities like planning, test designing happens well before coding.
Hence higher chance of success over the waterfall model.
iii. Proactive defect tracking – that is defects are found at early stage.
iv. Avoids the downward flow of the defects.
v. Works well for small projects where requirements are easily understood.
6. Disadvantages of V-model:
i. Very rigid and least flexible just like water fall model.
ii. Software is developed only during the implementation phase, so no early
prototypes of the software are produced.
iii. If any changes happen in midway, then the test documents along with requirement
documents has to be updated.
1. In incremental model the whole requirement is divided into various builds. Multiple
development cycles take place here, making the life cycle a “multi-waterfall” cycle.
Cycles are divided up into smaller, more easily managed modules. Each module
passes through the requirements, design, implementation and testing phases.
Prototyping:
9
1. The basic idea here is that instead of freezing the requirements before a design or coding
can proceed, a throwaway prototype is built to understand the requirements. This prototype is
developed based on the currently known requirements and it enables the client to better
understand the requirements of the desired system.
2. Diagrammatic representation of prototyping model:
1. The spiral model places more emphasis placed on risk analysis. The spiral model has four
phases: Planning, Risk Analysis, Engineering and Evaluation. The baseline spiral, starting in
10
the planning phase, requirements is gathered and risk is assessed. Each subsequent spiral
builds on the baseline spiral.
3.
Different phases
of spiral
model:
i.
Planning Phase: Requirements are gathered during the planning phase. Requirements like
‘BRS’ that is ‘Bussiness Requirement Specifications’ and ‘SRS’ that is ‘System
Requirement specifications’.
ii. Risk Analysis: In the risk analysis phase, a process is undertaken to identify risk and
alternate solutions. A prototype is produced at the end of the risk analysis phase. If
any risk is found during the risk analysis then alternate solutions are suggested and
implemented.
iii. Engineering Phase: In this phase software is developed, along with testing at the end
of the phase. Hence in this phase the development and testing is done.
iv. Evaluation phase: This phase allows the customer to evaluate the output of the
project to date before the project continues to the next spiral.
Concurrent model
changes in requirements must be made, the modeling activity moves from the under
development state into the awaiting changes state.
The concurrent process model defines a series of events that will trigger transitions
from state to state for each of the Software engineering activities, actions, or tasks.
Component based development
1. Commercial off-the-shelf (COTS) Software components, developed by vendors who offer
them as products, can be used when Software is to be built. These components provide
targeted functionality with well-defined interfaces that enable the component to be integrated
into the Software.
2. The component-based development model leads to Software reuse, and reusability provides
Software engineers with a number of measurable benefits.
3. The component-based development model incorporates the following steps:
i. Available component-based products are researched and evaluated for the application
domain in question.
ii. Software architecture is designed to accommodate the components.
iii. Components are integrated into the architecture.
iv. Comprehensive testing is conducted to ensure proper functionality.
1. The Formal Methods Model encompasses a set of activities that leads to formal
mathematical specifications of Software.
2. Formal methods enable a Software engineer to specify, develop, and verify a computer-
based system by applying a rigorous, mathematical notation.
3. A variation of this approach, called clean-room Software engineering is currently applied
by some software development organizations.
4. Issues of formal methods model:
1. Aspects encapsulate functionality that cross-cuts and co-exists with other functionality.
2. Aspects include a definition of where they should be included in a program as well as
code implementing the cross-cutting concern.
3. An aspect is an abstraction which implements a concern. It includes information where it
should be included in a program.
4. A join point is a place in a program where an aspect may be included (woven).
5. A point cut defines where (at which join points) the aspect will be included in the
program.
13
1. Build self-directed teams that plan and track their work, establish goals, and own their
processes and plans.
2. Show managers how to coach and motivate their teams and how to help them sustain
peak performance.
3. Accelerate software process improvement by making CMM Level 5 behavior normal and
expected.
a. The Capability Maturity Model (CMM), a measure of the effectiveness of a
software process.
4. Provide improvement guidance to high-maturity organizations.
5. Facilitate university teaching of industrial-grade team skills.
1. The key feature: Software development is done in a series of fixed periods, for example,
between 2 and 6 weeks. Each period is called as iteration. At the end of each iteration, we
have an executable system.
2. Each iteration has its own requirement analysis, design, coding and testing.
3. The software development is incremental. Implement New features added apart from the
User’s suggested changes.
4. Time boxing an Iteration:
i. Each iteration is timeboxed i.e. fixed in length.
ii. The UP recommends each iteration to be between 2 and 6 weeks.
iii. It has no provision for the extension of an iteration period.
iv. If developers are unable to complete coding the given requirements within fixed
time, then decrease the number of requirements to code.
5. Diagrammatic representation of UP Model:
b) Elaboration:
i. System to be built is analyzed in detail.
ii. Use cases used to document the requirements. Main aim: Get the core
architecture and as many use cases as possible.
iii. The core architecture is coded, verified with user and baselined.
iv. Other high-risk requirements are identified and coded.
v. A project plan is drawn in this phase, resources are allocated and a
schedule is planned.
vi. UML diagrams are used to model the system under design.
c) Construction:
Agile model believes that every project needs to be handled differently and the existing methods
need to be tailored to best suit the project requirements. In Agile, the tasks are divided to time
boxes (small time frames) to deliver specific features for a release.
Iterative approach is taken and working software build is delivered after each iteration. Each
build is incremental in terms of features; the final build holds all the features required by the
customer.
Here is a graphical illustration of the Agile Model −
16
The Agile thought process had started early in the software development and started becoming
popular with time due to its flexibility and adaptability.
The most popular Agile methods include Rational Unified Process (1994), Scrum (1995),
Crystal Clear, Extreme Programming (1996), Adaptive Software Development, Feature Driven
Development, and Dynamic Systems Development Method (DSDM) (1995). These are now
collectively referred to as Agile Methodologies, after the Agile Manifesto was published in
2001.
Following are the Agile Manifesto principles −
Individuals and interactions − In Agile development, self-organization and motivation
are important, as are interactions like co-location and pair programming.
Working software − Demo working software is considered the best means of
communication with the customers to understand their requirements, instead of just
depending on documentation.
Customer collaboration − As the requirements cannot be gathered completely in the
beginning of the project due to various factors, continuous customer interaction is very
important to get proper product requirements.
Responding to change − Agile Development is focused on quick responses to change
and continuous development.
7. Explain Extreme Programming Process Model?
17
Creativity
Learning and improving through trials and errors
Iterations
Extreme Programming builds on these activities and coding. It is the detailed (not the only)
design activity with multiple tight feedback loops through effective implementation, testing and
refactoring continuously.
Extreme Programming is based on the following values −
Communication
Simplicity
Feedback
Courage
Respect
Extreme Programming takes the effective principles and practices to extreme levels.
Code reviews are effective as the code is reviewed all the time.
18
Short iterations are effective as the planning game for release planning and iteration
planning.
Advantages:
Extreme Programming solves the following problems often faced in the software development
projects −
Slipped schedules − and achievable development cycles ensure timely deliveries.
Cancelled projects − Focus on continuous customer involvement ensures transparency
with the customer and immediate resolution of any issues.
Costs incurred in changes − Extensive and ongoing testing makes sure the changes do
not break the existing functionality