Software Engineering Notes (Unit - 1)
Software Engineering Notes (Unit - 1)
UNIT-I
Software Engineering:
The term software engineering is the product of two words, software and
engineering.
The Software is a collection of integrated programs. Software subsists of
carefully-organized instructions and code written by developers on any of
various particular computer languages.
1. Operational
2. Transitional
3. Maintenance
Operational
1. Budget
2. Usability
3. Efficiency
4. Correctness
5. Functionality
6. Security
7. Safety
Transitional
This aspect is important when the software is moved from one platform
to another:
1. Portability
2. Interoperability
3. Reusability
4. Adaptability
Maintenance
This aspect briefs about how well a software has the capabilities to
maintain itself in the ever-changing environment:
1. Modularity
2. Maintainability
3. Flexibility
4. Scalability
Process Framework
2. Risk management
5. Measurement
· Measurement consists of the effort required to measure the software.
· The software cannot be measured directly. It is measured by direct and
indirect measures.
· Direct measures like cost, lines of code, size of software etc.
· Indirect measures such as quality of software which is measured by
some other factor. Hence, it is an indirect measure of software.
7. Re-usability management
Shortcomings of SEI/CMM:
· It encourages the achievement of a higher maturity level in some cases
by displacing the true mission, which is improving the process and
overall software quality.
· It only helps if it is put into place early in the software development
process.
· It has no formal theoretical basis and in fact is based on the experience
of very knowledgeable people.
· It does not have good empirical support and this same empirical support
could also be constructed to support other models.
Each of these KPA’s defines the basic requirements that should be met by
a software process in order to satisfy the KPA and achieve that level of
maturity. Conceptually, key process areas form the basis for management
control of the software project and establish a context in which technical
methods are applied, work products like models, documents, data, reports,
etc. are produced, milestones are established, quality is ensured and
change is properly managed.
Level-1: Initial –
· No KPA’s defined.
· Processes followed are Adhoc and immature and are not well defined.
· Unstable environment for software development.
· No basis for predicting product quality, time for completion, etc.
Level-2: Repeatable –
Level-3: Defined –
Level-4: Managed –
· At this stage, quantitative quality goals are set for the organization for
software products as well as software processes.
· The measurements made help the organization to predict the product
and process quality within some limits defined quantitatively.
· Software Quality Management- It includes the establishment of plans
and strategies to develop quantitative analysis and understanding of
the product’s quality.
· Quantitative Management- It focuses on controlling the project
performance in a quantitative manner.
Level-5: Optimizing –
Process Assessment
A software process assessment is a disciplined examination of the
software processes used by an organization, based on a process model.
The assessment includes the identification and characterization of current
practices, identifying areas of strengths and weaknesses, and the ability
of current practices to control or avoid significant causes of poor
(software) quality, cost, and schedule.
Process Model
Prescriptive process models
Prescriptive process models prescribe a set of framework and other
activities, quality assurance points, and software process-related elements.
They define a workflow among these elements that shows their inter-
relationship.
Prescriptive software models are those which prescribe the components
which make up a software model, including the activities, the inputs and
outputs of the activities, how quality assurance is performed, how change
is managed, and so on. A prescriptive model also describes how each of
these elements are related to one another. The process models described
here are,
Waterfall Model.
Evolutionary process models are opted when the requirements may tend
to change and also when the complete sophisticated product delivery
cannot be done before a given deadline, but the delivery of a limited
version of it is possible.
In the incremental model, complete requirements are specified
beforehand and these requirements are refined over time for each
increment. The evolutionary model permits requirements, plans and
estimates to evolve over time.
In cases when the requirements are unclear and are likely to change or
when the developer is doubtful about working of an algorithm, a solution
is to build a prototype and find out what is actually needed. Hence, in this
model, one or more prototypes are made with unrefined currently known
requirements before the actual product is made.
Evolutionary Process Models
The prototyping model.
The spiral model.
Concurrent development model
Disadvantages of prototyping
The first circuit around the spiral might result in the development of a
product specification. The subsequent passes around the spiral might be
used to develop a prototype and then progressively more mature versions
of the software.
Planning is where the objectives, alternatives and other constraints are
determined. The alternatives are considered, risks in each alternative are
analyzed and prototypes are refined in the risk analysis sector. At the
development quadrant level risks are known and it proceeds with
developing and testing the product. In the assessment sector, customer
evaluation of product developed is reviewed and the next phase is
planned. This loop continues until acceptable software is built and
deployed.
Hence, the spiral model follows an incremental process methodology and
unlike other process models, it deals with the uncertainty by applying a
series of risk analysis strategies throughout the process.
Advantages of spiral model
Reduces risk.
Recommended for complex projects.
Changes can be incorporated at a later stage.
Strong documentation helps in better management.
Merits:
Demerits:
Merits:
Removes many of the problems that are difficult to remove using
other s/w engg paradigms.
Ambiguity , incompleteness & inconsistency can be discovered &
corrected easily by using formal methods of mathematical analysis.
Demerits:
Merits:
Demerits:
The SEI CMM which is reference model for raising the maturity levels of
software and predicts the most expected outcome from the next project
undertaken by the organizations does not tell software developers about
how to analyze, design, code, test and document the software products,
but expects that the developers use effectual practices. The Personal
Software Process realized that the process of individual use is completely
different from that required by the team.
Personal Software Process (PSP) is the skeleton or the structure that assist
the engineers in finding a way to measure and improve the way of
working to a great extend. It helps them in developing their respective
skills at a personal level and the way of doing planning, estimations
against the plans.
Objectives of PSP:
The aim of PSP is to give software engineers with the regulated methods
for the betterment of personal software development processes.
Time measurement:
PSP Planning :
The engineers should plan the project before developing because without
planning a high effort may be wasted on unimportant activities which
may lead to a poor and unsatisfactory quality of the result.
PSP 0 –
The first level of Personal Software Process, PSP 0 includes Personal
measurement , basic size measures, coding standards.
PSP 1 –
This level includes the planning of time and scheduling .
PSP 2 –
This level introduces the personal quality management ,design and
code reviews.
PSP 3 –
The last level of the Personal Software Process is for the Personal
process evolution.
Product Process
Product is the final production of While the process is a set of sequence steps
the project. that have to be followed to create a project.
A Product focuses on final result Whereas the process is focused on
completing each step being developed
In the case of products, the firm In contrast, the process consistently follows
guidelines are followed. guidelines.
A product tends to be short-term Whereas the process tends to be
The main goal of the product is to While the purpose of the process is to make
complete the work successfully. the quality of the project better
Agility:
Agility is dynamic, content specific, aggressively change embracing,
and growth oriented
It encourages team structures and attitudes that make communication
more simplistic
It emphasizes rapid delivery of operational software and de-
emphasizes the importance of intermediate work products
It recognizes that planning in an uncertain world has its limits and that
a project plan must be flexible
Agility can be applied to any software process
Agile Process:
Any agile software process is characterized in a manner that addresses a
number of key assumptions
Agility Principles:
Our highest priority is to satisfy the customer through early and
continuous delivery of valuable software.
Welcome changing requirements, even late in development
Deliver working software frequently, from a couple of weeks to a
couple of months, with a preference to the shorter timescale.
Business people and developers must work together daily throughout
the project.
Build projects around motivated individuals. Give them the
environment and support they need, and trust them to get the job done
The most efficient and effective method of conveying information to
and within a development team is face-to-face conversation
Working software is the primary measure of progress
Agile processes promote sustainable development. The sponsors,
developers, and users should be able to maintain a constant pace
indefinitely.
Continuous attention to technical excellence and good design
enhances agility
Simplicity—the art of maximizing the amount of work not done—is
essential
The best architectures, requirements, and designs emerge from self–
organizing teams
At regular intervals, the team reflects on how to become more
effective, then tunes and adjusts its behavior accordingly
Agile Model
Requirements gathering
Design the requirements
Construction/ iteration
Testing/ Quality assurance
Deployment
Feedback
Scrum
Crystal
Dynamic Software Development Method(DSDM)
Feature Driven Development(FDD)
Lean Software Development
eXtreme Programming(XP)
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.
eXtreme Programming(XP)
This type of methodology is used when customers are constantly
changing demands or requirements, or when they are not sure about the
system's performance.
Crystal:
There are three concepts of this method-
Time Boxing
MoSCoW Rules
Prototyping
Pre-project
Feasibility Study
Business Study
Functional Model Iteration
Design and build Iteration
Implementation
Post-project
Frequent Delivery
Face-to-Face Communication with clients.
Efficient design and fulfils the business requirement.
Anytime changes are acceptable.
It reduces total development time.