Professional Documents
Culture Documents
Software Engineering
Software Engineering
Importance
➢ Reduce complexity
➢ To minimize software cost
➢ To decrease time
➢ Handline big projects
➢ Reliable software
➢ Effectiveness
Characteristics
1. Intangible product
2. No standard software processes
3. Large projects are often one-off
4. Rapid change in technology
Spiral Model
The spiral model combines the idea of iterative development with the systematic,
controlled aspects of the waterfall model.
Design - The spiral model has four phases. A software project repeatedly passes
through these phases in iterations called Spirals.
➢ Objectives determination and identify alternative solutions- with
gathering the business requirements in the baseline spiral. In the subsequent spirals
as the product matures, identification of system requirements, subsystem
requirements and unit requirements are all done in this phase. This phase also
includes understanding the system requirements by continuous communication
between the customer and the system analyst.
➢ Identify and resolve Risks or design- The Design phase starts with the
conceptual design in the baseline spiral and involves architectural design, logical
design of modules, physical product design and the final design in the subsequent
spirals.
➢ Develop next version of the Product/ Construct or build - The Construct
phase refers to production of the actual software product at every spiral. In the
baseline spiral, when the product is just thought of and the design is being
developed a POC (Proof of Concept) is developed in this phase to get customer
feedback.
➢ Review and plan for the next Phase / Evaluation and risk analysis - Risk
Analysis includes identifying, estimating and monitoring the technical feasibility and
management risks, such as schedule slippage and cost overrun. After testing the
build, at the end of first iteration, the customer evaluates the software and provides
feedback.
Requirement Elicitation
Requirements elicitation is the process of gathering and defining the
requirements for a software system. The goal of requirements elicitation is to
ensure that the software development process is based on a clear and
comprehensive understanding of the customer needs and requirements.
Requirements elicitation involves the identification, collection, analysis, and
refinement of the requirements for a software system.
Prepare for Elicitation: The purpose here is to understand the elicitation
activity scope, select the right techniques, and plan for appropriate resources.
Conduct Elicitation: The purpose here is to explore and identify information
related to change.
Confirm Elicitation Results: In this step, the information gathered in the
elicitation session is checked for accuracy.
Techniques-
Brainstorming
This technique is used to generate new ideas and find a solution for a specific
issue. The members included for brainstorming can be domain experts, subject
matter experts. Multiple ideas and information give you a repository of
knowledge and you can choose from different ideas.
Benefits:
• Creative thinking is the result of the brainstorming session.
• Plenty of ideas in a short time.
• Promotes equal participation.
Document Analysis/Review
This technique is used to gather business information by reviewing/examining
the available materials that describe the business environment. This analysis is
helpful to validate the implementation of current solutions and is also helpful
in understanding the business need.
Benefits:
• Existing documents can be used to compare current and future
processes.
• Existing documents can be used as a base for future analysis.
Interface Analysis
Interface analysis is used to review the system, people, and processes. This
analysis is used to identify how the information is exchanged between the
components. An Interface can be described as a connection between two
components. This is described in the below image:
Benefits:
Provide missed requirements.
•
Determine regulations or interface standards.
•
Uncover areas where it could be a risk for the project.
•
Other techniques are – focus group, observation, prototyping, workshops.
Software Metrics
A software metric is a measure of software characteristics which are measurable or
countable. Software metrics are valuable for many reasons, including measuring software
performance, planning work items, measuring productivity, and many other uses.
Software metrics are like the four functions of management: Planning, Organization,
Control, or Improvement.
1. Product Metrics: These are the measures of various characteristics of the software
product. The two important software characteristics are:
Types of Metrics
Internal metrics: Internal metrics are the metrics used for measuring properties that are
viewed to be of greater importance to a software developer. For example, Lines of Code
(LOC) measure.
External metrics: External metrics are the metrics used for measuring properties that are
viewed to be of greater importance to the user, e.g., portability, reliability, functionality,
usability, etc.
Hybrid metrics: Hybrid metrics are the metrics that combine product, process, and resource
metrics. For example, cost per FP where FP stands for Function Point Metric.
Project metrics: Project metrics are the metrics used by the project manager to check the
project's progress. Data from the past projects are used to collect various metrics, like time
and cost; these estimates are used as a base of new software. As quality improves, the number
of errors and time, as well as cost required, is also reduced.
In comparing and evaluating the capabilities and productivity of people involved in software
development.
In the preparation of software quality specifications.
Types of Cohesion:
• Functional Cohesion: Every essential element for a single
computation is contained in the component. A functional cohesion
performs the task and functions. It is an ideal situation.
• Sequential Cohesion: An element outputs some data that
becomes the input for other element, i.e., data flow between the
parts. It occurs naturally in functional programming languages.
• Communicational Cohesion: Two elements operate on the same
input data or contribute towards the same output data. Example-
update record in the database and send it to the printer.
• Procedural Cohesion: Elements of procedural cohesion ensure
the order of execution. Ex- calculate student GPA, print student
record, calculate cumulative GPA, print cumulative GPA.
• Temporal Cohesion: The elements are related by their timing
involved. A module connected with temporal cohesion all the tasks
must be executed in the same time span
• Logical Cohesion: The elements are logically related and not
functionally. Ex- A component reads inputs from tape, disk, and
network.
• Coincidental Cohesion: The elements are not related(unrelated).
The elements have no conceptual relationship other than location in
source code.
Types of Coupling:
• Data Coupling: If the dependency between the modules is based
on the fact that they communicate by passing only data, then the
modules are said to be data coupled. Example-customer billing
system.
• Stamp Coupling In stamp coupling, the complete data structure is
passed from one module to another module.
• Control Coupling: If the modules communicate by passing control
information, then they are said to be control coupled.
• External Coupling: In external coupling, the modules depend on
other modules, external to the software being developed or to a
particular type of hardware. Ex- protocol, external file, device
format, etc.
• Common Coupling: The modules have shared data such as global
data structures. The changes in global data mean tracing back to all
modules which access that data to evaluate the effect of the
change
• Content Coupling: In a content coupling, one module can modify
the data of another module, or control flow is passed from one
module to the other module.
Regression Testing –
Detect the modification and optimization in the source code; then identify the
components or modules that were changed, as well as their impacts on the
existing features.
Ensure whether your application meets the preset eligibility before the
regression test execution.
Finally, identify all test components and schedule the appropriate time to
execute.
Tools for regression testing
What is Risk –
"Tomorrow problems are today's risk, "risk" is a problem that could cause some loss or
threaten the progress of the project, but which has not happened yet.
These potential issues might harm cost, schedule or technical success of the project and
the quality of our software device, or project team morale.
Risk Management is the system of identifying, addressing and eliminating these problems
before they can damage the project.
Risk management
1. Project risks
2. Technical risks
3. Business risks
1. Project risks: Since the software is intangible, it is very tough to monitor and control
a software project. It is very tough to control something which cannot be identified. For
any manufacturing program, such as the manufacturing of cars, the plan executive can
recognize the product taking shape.
3. Business risks: This type of risks contains risks of building an excellent product that
no one need, losing budgetary or personnel commitments, etc
• Risk Identification
• Risk analysis
• Risk Planning
• Risk Monitoring
When we develop software, the product (software) undergoes many changes in their
maintenance phase; we need to handle these changes effectively.
The elements that comprise all information produced as a part of the software process are
collectively called a software configuration
o Identify change
o Monitor and control change
o Ensure the proper implementation of change made to the item.
o Auditing and reporting on the change made.
Importance
SCM Process
Quality of Design: Quality of Design refers to the characteristics that designers specify
for an item. The grade of materials, tolerances, and performance specifications that all
contribute to the quality of design.
Software quality assurance is a planned and systematic plan of all actions necessary to
provide adequate confidence that an item or product conforms to establish technical
requirements.
A set of activities designed to calculate the process by which the products are developed
or manufactured.
SQA Encompasses
o A quality management approach
o Effective Software engineering technology (methods and tools)
o Formal technical reviews that are tested throughout the software process
o A multitier testing strategy
o Control of software documentation and the changes made to it.
o A procedure to ensure compliances with software development standards
o Measuring and reporting mechanisms.
Waterfall Model
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.
Waterfall approach was first SDLC Model to be used widely in Software Engineering to
ensure success of the project. In "The Waterfall" approach, the whole process of software
development is divided into separate phases.
CMM
CMM was developed by the Software Engineering Institute (SEI) at Carnegie
Mellon University in 1987.
• It is not a software process model. It is a framework that is used to
analyze the approach and techniques followed by any organization
to develop software products.
• It also provides guidelines to further enhance the maturity of the
process used to develop those software products.
• It is based on profound feedback and development practices
adopted by the most successful organizations worldwide.
• This model describes a strategy for software process improvement
that should be followed by moving through 5 different levels.
• Each level of maturity shows a process capability level