SEPM_notes_Unit_5
SEPM_notes_Unit_5
Unit 5
Software Project Management
Introduction
Building computer software is a complex undertaking task, which particularly involves many people working over a
relatively long time. That’s why software projects needs to be managed. The software project management is the first layer of software
engineering process. It starts before the technical work starts, continues as the software evolves from conceptual stage to implementation
stage. It is a crucial activity because the success and failure of the software is directly depends on it.
Software project management is needed because professional software engineering is always subject to budget constraints,
schedule constraints and quality oriented focus.
Definition
Project management involves the planning, monitoring and control of the people, process and events that occurs as software evolves
from a preliminary concept to an operational implementation. Software project management is an umbrella activity within software
engineering. It begins before any technical activity is initiated and continues throughout the definition, development and support of computer
software. The project management activity encompasses measurements and metrics estimation, risk analysis, schedules, tracking and control.
Effective software project management focuses on the four P’s: people, product, process, and project. The order is not arbitrary. The
manager who forgets that software engineering work is an intensely human endeavor will never have success in project management. A
manager who fails to encourage comprehensive customer communication early in the evolution of a project risks building an elegant solution
for the wrong problem. The manager who pays little attention to the process runs the risk of inserting competent technical methods and tools
into a vacuum. The manager who embarks without a solid project plan jeopardizes the success of the product.
1. The People
a) The “people factor” is so important that the Software Engineering Institute has developed a people management capability maturity
model (PM-CMM).
b) To enhance the readiness of software organizations to undertake increasingly complex applications by helping to attract, grow,
motivate, deploy, and retain the talent needed to improve their software development capability.
c) The PM-CMM is a companion to the software capability maturity model that guides organizations in the creation of a mature
software process.
d) The PMCMM defines the following areas for software people.
a. Recruiting
b. Selection
c. Performance Management
d. Training
e. Career Development
f. Team Culture Development
2. The Product
Before a project can be planned,
a) Product objectives and scope should be established.
b) Alternative solutions should be considered.
c) Technical and management constraints should be identified.
d) The software developer and customer must meet to define product objectives and scope.
----------------------------------------
----------------------------------------
Software Engineering 2
e) Objectives identify the overall goals for the product (from the customer’s point of view) without considering how these goals will be
achieved.
f) Scope identifies the primary data, functions and behaviors that characterize the product, and more important, attempts to bound
these characteristics in a quantitative manner.
3. The Process
a) A software process provides the framework from which a comprehensive plan for software development can be established.
b) A small number of framework activities are applicable to all software projects, regardless of their size or complexity.
c) A number of different tasks set—tasks, milestones, work products and quality assurance points—enable the framework activities to
be adapted to the characteristics of the software project and the requirements of the project team.
d) Umbrella activities—such as software quality assurance, software configuration management, and measurement—overlay the
process model.
4. The Project
a) We conduct planned and controlled software projects for one primary reason—it is the only known way to manage complexity.
b) The overall development cycle is called as Project.
c) In order to avoid project failure, a software project manager and the software engineers who build the product must avoid a set of
common warning signs, understand the critical success factors that lead to good project management, and develop a commonsense
approach for planning, monitoring and controlling the project.
Software Project Planning – Following are the various project planning activities
1) Defining the problem –
a) Develop a definitive statement of the problem to be solved, including a description of the present situation, problem constraints and a
statement of the goals to be achieved. The problem statement should be formulated in the customer’s terminology.
b) Justify a computerized solution strategy for the problem.
c) Identify the various functions provided by the hardware subsystem, software subsystem and people subsystem. The constraints thereof
also should be identified.
d) Determining system level goals and requirements for the development process and the work products.
e) Establish high-level acceptance criteria for the system.
Problem Definition
There is a need to prepare a concise statement of the problem to be solved and the constraints that exist for its solution in customer’s
terminology. Problem definition requires understanding of the problem domain and the problem environment. Techniques for gaining this
knowledge include –
a) Customer interviews,
b) Observation of the problem tasks, and
c) Actual performance of the tasks developed by the planner. Here the planner should not be biased in any way and should
certainly be technically experienced.
After preparing the solutions the successive task includes the determination of the -
a) Appropriateness of the computerized solution,
b) Cost-effectiveness,
c) It should avoid displacing existing workers as it may not be acceptable in the society. etc.
Requirement:
2) They include –
a) Functional aspects,
b) Performance aspects,
c) Hardware aspects,
d) Software aspects,
e) User interface, etc.
3) They also specify development standards and quality assurance standards for both project process and product.
4) Special efforts should be made in the process of developing meaningful requirement statements and methods that will be used to
verify those statements.
----------------------------------------
----------------------------------------
Software Engineering 4
2) Process Management Processes: - This process is responsible for monitoring every process that are occurring during the software
development procedures. It ensures that high standards are followed during every process. It includes understanding the current
process, analyzing its properties, determining possible improvements and then implementing the improvements in the processes.
----------------------------------------
----------------------------------------
Software Engineering 5
the project adversely. But on projects utilizing 5 or lesser programmers the factor of individual ability is significant and can affect the project
positively or negatively. Hence individual programmer ability governs programmer productivity that affects the cost of the project.
Product Complexity
A software product can be classified on the basis of their complexity in to basic three types –
a) Application programs,
b) Utility programs,
c) Systems program.
Through extensive studies it had observed that Utility programs are 3 times as difficult to write as Application programs and that System
programs are three times as difficult to write as Utility programs. So the levels of complexity can be stated as 1 - 3 - 9 for
Application – Utility – Systems programs. The following equations were derived from the extensive research –
Product Size
A large software product is obviously more expensive to develop than a small one. The equations derived for Programmer months (PM) and
Development time (TDEV) show that the rate of increase in effort required grows with the number of source instructions at an exponential
rate slightly greater than 1.
Available Time
Total project effort is sensitive to the calendar time available for the project completion. Software projects require more effort if the
development time is compressed or expanded from the optimal time. After extensive research it had been observed that there is limit beyond
which a software project cannot reduce its schedule even by buying more personnel and equipment. The limit occurs roughly at 75% of the
nominal schedule.
Level of Technology
----------------------------------------
----------------------------------------
Software Engineering 6
The level of technology provided by latest software products helps reducing overall cost. The type-checking and self-documentation aspects
of high-level languages improve the reliability and modifiability of the programs created using these high-level languages. The familiarity of
the programmer with the latest technology is also a contributing factor in effort reduction and cost reduction.
Groups of experts sometimes prepare a consensus estimate (collective estimate); this tends to minimize individual oversights and lack of
familiarity with particular projects and neutralizes personal biases and the desire to win the contract through an overly optimistic estimate as
seen in individual judgment style.
The major disadvantage of group estimation is the effect that interpersonal group dynamics may have on individuals in the group. Group
members may not be candid enough due to political considerations. The presence of authority figures in the group or the dominance of an
overly assertive group member.
In the following section we will discuss only the Basic and Intermediate COCMO models.
Software Project A b c D
Organic 2.4 1.05 2.5 0.38
Semidetached 3.0 1.12 2.5 0.35
Embedded 3.6 1.20 2.5 0.32
Software Project a b
Organic 3.2 1.05
Semidetached 3.0 1.12
Embedded 2.8 1.20
----------------------------------------
----------------------------------------
Software Engineering 8
The WBS method is a bottom-up estimation tool.
It’s a hierarchical chart that accounts for the individual parts of system.
There are two main classifications - a) Product hierarchy, b) Process hierarchy.
Product hierarchy: - It identifies the product components and indicates the manner in which the components are interconnected.
Process hierarchy: - It identifies the work activities and the relationship between them.
The primary advantage of the WBS technique are it helps in identifying and accounting the various process & product factors and in
identifying the exact costs included in the estimates
Consider a project to develop a full screen editor. The major components identified are screen edit, command language
interpreter, file input and output, cursor movement, screen movement. The sizes for these are estimated to be 4K, 2K, 1K, 2K and
3K delivered source lines.Use COCOMO Model to determine:
a) Overall cost and schedule estimates.
b) Cost and schedules for different phases.
Sol:
a) Overall cost and schedule estimates using COCOMO Model:
----------------------------------------
----------------------------------------
Software Engineering 9
For estimation we will go for Basic COCOMO model. The table for constants for Basic COCOMO Model is as follows:
Software Project A b c d
Organic 2.4 1.05 2.5 0.38
Semidetached 3.0 1.12 2.5 0.35
Embedded 3.6 1.20 2.5 0.32
Compute the estimation and duration of a project which is of type organic mode and estimated LOC is 10KLOC using
COCOMO.Sol: For estimation we will go for Basic COCOMO model. The table for constants for Basic COCOMO Model is
as follows:
Software Project A b c d
Organic 2.4 1.05 2.5 0.38
Semidetached 3.0 1.12 2.5 0.35
Embedded 3.6 1.20 2.5 0.32
Assume that the size of an organic type software product has been estimated to be 32,000 LOC and assume that the average
salary of software engineer is Rs. 15,000 per month. Determine the effort required to develop the software product and the nominal
development time.Sol: For estimation we will go for Basic COCOMO model. The table for constants for Basic COCOMO Model is
as follows:
Software Project A b c d
Organic 2.4 1.05 2.5 0.38
Semidetached 3.0 1.12 2.5 0.35
Embedded 3.6 1.20 2.5 0.32
----------------------------------------
----------------------------------------
Software Engineering 11
Suppose that we are faced with developing a system such that we expect to have about 1,00,000 LOC. Compute the
effort anddevelopment time for the organic and semidetached development mode.
Sol: For estimation we will go for Basic COCOMO model. The table for constants for Basic COCOMO Model is as follows:
Software Project A b c d
Organic 2.4 1.05 2.5 0.38
Semidetached 3.0 1.12 2.5 0.35
Embedded 3.6 1.20 2.5 0.32
The value of size of a program in KLOC and different cost drivers are given as size 300 KLOC, complexity 0.95, analyst
capability1.85, application of software engineering method 0.8, performance requirement 0.75. Calculate the effort for three
types of projects i.e., organic, semidetached and embedded using COCOMO model.
Sol: For estimation we will go for intermediate COCOMO model. The table for constants for intermediate COCOMO Model is as follows:
Software Project A b c d
Organic 3.2 1.05 2.5 0.38
Semidetached 3.0 1.12 2.5 0.35
Embedded 2.8 1.20 2.5 0.32
Scheduling
Software project scheduling is an activity that distributes estimated effort across the planned project duration by allocating the effort to
specific software engineering tasks. It is important to note, however, that the schedule evolves over time. During early stages of project
planning, a macroscopic schedule is developed. This type of schedule identifies all major software engineering activities and the product
functions to which they are applied. As the project gets under way, each entry on the macroscopic schedule is refined into a detailed
schedule. Here, specific software tasks (required to accomplish an activity) are identified and scheduled.
Scheduling for software engineering projects can be viewed from two rather different perspectives. In the first, an end-date for release of a
computer-based system has already (and irrevocably) been established. The software organization is constrained to distribute effort within
the prescribed time frame. The second view of software scheduling assumes that rough chronological bounds have been discussed but that
the end-date is set by the software engineering organization. Effort is distributed to make best use of resources and an end-date is defined
after careful analysis of the software. Unfortunately, the first situation is encountered far more frequently than the second.
Scheduling of a software project does not differ greatly from scheduling of any multitask engineering effort. Therefore, generalized project
scheduling tools and techniques can be applied with little modification to software projects.
Program evaluation and review technique (PERT) and critical path method (CPM) are two project scheduling methods that can be applied
to software development. Both techniques are driven by information already developed in earlier project planning activities:
• Estimates of effort
• A decomposition of the product function
• The selection of the appropriate process model and task set
• Decomposition of tasks
Interdependencies among tasks may be defined using a task network. Tasks, sometimes called the project work breakdown structure (WBS),
are defined for the product as a whole or for individual functions.
Both PERT and CPM provide quantitative tools that allow the software planner to
(1) Determine the critical path—the chain of tasks that determines the duration of the project;
(2) Establish “most likely” time estimates for individual tasks by applying statistical models; and
(3) Calculate “boundary times” that define a time "window" for a particular task.
----------------------------------------
----------------------------------------
Software Engineering 13
Boundary time calculations can be very useful in software project scheduling. Slippage in the design of one function, for example, can retard
further development of other functions. Riggs describes important boundary times that may be discerned from a PERT or CPM network:
(1) The earliest time that a task can begin when all preceding tasks are completed in the shortest possible time,
(2) The latest time for task initiation before the minimum project completion time is delayed,
(3) The earliest finish—the sum of the earliest start and the task duration,
(4) The latest finish— the latest start time added to task duration, and
(5) The total float—the amount of surplus time or leeway allowed in scheduling tasks so that the network critical path is maintained on
schedule. Boundary time calculations lead to a determination of critical path and provide the manager with a quantitative method for
evaluating progress as tasks are completed.
Both PERT and CPM have been implemented in a wide variety of automated tools that are available for the personal computer. Such tools
are easy to use and make the scheduling methods described previously available to every software project manager.
Project Evaluation and Review Technique (PERT) is a procedure through which activities of a project are represented in its
appropriate sequence and timing. It is a scheduling technique used to schedule, organize and integrate tasks within a project. PERT is
basically a mechanism for management planning and control which provides blueprint for a particular project. All of the primary elements
or events of a project have been finally identified by the PERT.
In this technique, a PERT Chart is made which represent a schedule for all the specified tasks in the project. The reporting levels of the
tasks or events in the PERT Charts is somewhat same as defined in the work breakdown structure (WBS).
Characteristics of PERT:
The main characteristics of PERT are as following :
1) It serves as a base for obtaining the important facts for implementing the decision-making.
2) It forms the basis for all the planning activities.
3) PERT helps management in deciding the best possible resource utilization method.
4) PERT take advantage by using time network analysis technique.
5) PERT presents the structure for reporting information.
6) It helps the management in identifying the essential elements for the completion of the project within time .
Advantages of PERT:
It has the following advantages :
1) Estimation of completion time of project is given by the PERT.
2) It supports the identification of the activities with slack time.
3) The start and dates of the activities of a specific project is determined.
4) It helps project manager in identifying the critical path activities.
5) PERT makes well organized diagram for the representation of large amount of data .
----------------------------------------
----------------------------------------
Software Engineering 14
Disadvantages of PERT:
It has the following disadvantages :
6) The complexity of PERT is more which leads to the problem in implementation.
7) The estimation of activity time are subjective in PERT which is a major disadvantage.
8) Maintenance of PERT is also expensive and complex.
9) The actual distribution of may be different from the PERT beta distribution which causes wrong assumptions.
10) It under estimates the expected project completion time as there is chances that other paths can become the critical path if their related
activities are deferred.
Gantt Chart
Generalized Activity Normalization Time Table (GANTT) chart is type of chart in which series of horizontal lines are present that show
the amount of work done or production completed in given period of time in relation to amount planned for those projects. It is horizontal
bar chart developed by Henry L. Gantt (American engineer and social scientist) in 1917 as production control tool. It is simply used for
graphical representation of schedule that helps to plan in an efficient way, coordinate, and track some particular tasks in project.
The purpose of Gantt chart is to emphasize scope of individual tasks. Hence set of tasks is given as input to Gantt chart. Gantt chart is also
known as timeline chart. It can be developed for entire project or it can be developed for individual functions. In most of projects, after
generation of timeline chart, project tables are prepared. In project tables, all tasks are listed in proper manner along with start date and end
date and information related to it.
Gantt chart represents following things :
• All the tasks are listed at leftmost column.
• The horizontal bars indicate or represent required time by corresponding particular task.
• When occurring of multiple horizontal bars takes place at same time on calendar, then that means concurrency can be applied for
performing particular tasks.
• The diamonds indicate milestones.
Advantages :
• Simplify Project –
Gantt charts are generally used for simplifying complex projects.
• Establish Schedule –
It simply establishes initial project schedule in which it mentions who is going to do what, when, and how much time it will take to
----------------------------------------
----------------------------------------
Software Engineering 15
complete it.
• Provide Efficiency –
It brings efficiency in planning and allows team to better coordinate project activities.
• Emphasize on scope –
It helps in emphasizing i.e., gives importance to scope of individual tasks.
• Ease at understanding –
It makes it easy for stakeholders to understand timeline and brings clarity of dates.
• Visualize project –
It helps in clearly visualizing project management, project tasks involved.
There are several professions, where use of gantt chart is very beneficial. Some of them are given below:
• Advertising Manager –
Advertising Managers generally controls and supervises end result of advertising companies, scheduling advertisements in different
media, etc.
• Operations Manager –
Operations Managers generally control and handle resources that are essential for company operations .
• Project Manager –
Project Managers generally motivates project teams, collaborate with team members, schedule task and complete that on time, and report
to stakeholders, etc.
Example :
Nowadays, there are many companies and teams that use Gantt chart to plan, schedule, and execute their projects. Some of them are
consulting agencies, manufacturing companies, Marketing teams, Construction companies, etc. Below is an example of Gantt chart:
----------------------------------------
----------------------------------------
Software Engineering 16
Putnam noticed that software staffing profiles followed the well known Rayleigh distribution. Putnam used his observation about
productivity levels to derive the software equation:
K is the total effort expended (in PM) in product development, and L is the product estimate in KLOC .
td correlate to the time of system and integration testing. Therefore, td can be relatively considered as the time required for
developing the product.
Ck Is the state of technology constant and reflects requirements that impede the development of the program.
----------------------------------------
----------------------------------------
Software Engineering 17
Ck= 8 for good software development environment
Ck = 11 for an excellent environment (in addition to following software engineering principles, automated tools and techniques are
used).
The exact value of Ck for a specific task can be computed from the historical data of the organization developing it.
Putnam proposed that optimal staff develop on a project should follow the Rayleigh curve. Only a small number of engineers are
required at the beginning of a plan to carry out planning and specification tasks. As the project progresses and more detailed work
are necessary, the number of engineers reaches a peak. After implementation and unit testing, the number of project staff falls.
Where, K is the total effort expended (in PM) in the product development
Ck Is the state of technology constant and reflects constraints that impede the progress of the program
From the above expression, it can be easily observed that when the schedule of a project is compressed, the required development
effort as well as project development cost increases in proportion to the fourth power of the degree of compression. It means that a
relatively small compression in delivery schedule can result in a substantial penalty of human effort as well as development cost.
For example, if the estimated development time is 1 year, then to develop the product in 6 months, the total effort required to
develop the product (and hence the project cost) increases 16 times.
Software Quality
----------------------------------------
----------------------------------------
Software Engineering 18
Software quality product is defined in term of its fitness of purpose. That is, a quality product does precisely what the users want it to
do. For software products, the fitness of use is generally explained in terms of satisfaction of the requirements laid down in the SRS
document. Although "fitness of purpose" is a satisfactory interpretation of quality for many devices such as a car, a table fan, a
grinding machine, etc.for software products, "fitness of purpose" is not a wholly satisfactory definition of quality.
Example: Consider a functionally correct software product. That is, it performs all tasks as specified in the SRS document. But, has an
almost unusable user interface. Even though it may be functionally right, we cannot consider it to be a quality product.
The modern view of a quality associated with a software product several quality methods such as the following:
Portability: A software device is said to be portable, if it can be freely made to work in various operating system environments, in
multiple machines, with other software products, etc.
Usability: A software product has better usability if various categories of users can easily invoke the functions of the product.
Reusability: A software product has excellent reusability if different modules of the product can quickly be reused to develop new
products.
Correctness: A software product is correct if various requirements as specified in the SRS document have been correctly
implemented.
Maintainability: A software product is maintainable if bugs can be easily corrected as and when they show up, new tasks can be
easily added to the product, and the functionalities of the product can be easily modified, etc.
Managerial Structure and Individual Responsibilities: A quality system is the responsibility of the organization as a whole.
However, every organization has a sever quality department to perform various quality system activities. The quality system of an
arrangement should have the support of the top management. Without help for the quality system at a high level in a company,
some members of staff will take the quality system seriously.
Quality System Activities: The quality system activities encompass the following:
Auditing of projects
Production of documents for the top management summarizing the effectiveness of the quality system in the organization.
----------------------------------------
----------------------------------------
Software Engineering 19
Quality control target not only on detecting the defective devices and removes them but also on determining the causes behind the
defects. Thus, quality control aims at correcting the reasons for bugs and not just rejecting the products. The next breakthrough in
quality methods was the development of quality assurance methods.
The primary premise of modern quality assurance is that if an organization's processes are proper and are followed rigorously, then
the products are obligated to be of good quality. The new quality functions include guidance for recognizing, defining, analyzing, and
improving the production process.
Total quality management (TQM) advocates that the procedure followed by an organization must be continuously improved through
process measurements. TQM goes stages further than quality assurance and aims at frequently process improvement. TQM goes
beyond documenting steps to optimizing them through a redesign. A term linked to TQM is Business Process Reengineering (BPR).
BPR aims at reengineering the method business is carried out in an organization. From the above conversation, it can be stated that
over the years, the quality paradigm has changed from product assurance to process assurance, as shown in fig.
ISO 9000:
It is a set of International Standards on quality management and quality assurance developed to help companies effectively document the
quality system elements needed to an efficient quality system.
SEICMM:
SEI (Software Engineering Institute), Capability Maturity Model (CMM) specifies an increasing series of levels of a software development
organization.
Difference between ISO9000 and SEI-CMM:
ISO 9000 is a set of international standards on quality SEI (Software Engineering Institute), Capability
management and quality assurance developed to help Maturity Model (CMM) specifies an increasing
----------------------------------------
----------------------------------------
Software Engineering 20
ISO 9000 SEICMM
companies effectively document the quality system elements series of levels of a software development
needed to an efficient quality system. organization.
It is created for hard goods manufacturing industries. It is created for software industry.
ISO9000 is recognized and accepted in most of the countries. SEICMM is used in USA, less widely elsewhere.
It specifies concepts, principles and safeguards that should be in CMM provides detailed and specific definition of
place. what is required for given levels.
It has 5 levels:
(a). Initial
(b). Repeatable
It has no level.
(c). Defined
(d). Managed
(e). Optimized
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.
----------------------------------------
----------------------------------------
Software Engineering 21
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.
The PSP helps software engineers to:
• Improve their approximating and planning skills.
• Make promises that can be fulfilled.
• Manage the standards of their projects.
• Reduce the number of faults and imperfections in their work.
Time measurement:
Personal Software Process recommend that the developers should structure the way to spend the time.The developer must measure and
count the time they spend on different activities during the development.
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.
Levels of Personal Software Process :
Personal Software Process (PSP) has four levels-
• 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.
Six Sigma
Six Sigma is the process of improving the quality of the output by identifying and eliminating the cause of defects and reduce
variability in manufacturing and business processes. The maturity of a manufacturing process can be defined by a sigma rating
indicating its percentage of defect-free products it creates. A six sigma method is one in which 99.99966% of all the opportunities to
produce some features of a component are statistically expected to be free of defects (3.4 defective features per million
opportunities).
----------------------------------------
----------------------------------------
Software Engineering 22
By using the same raw material, machinery and workforce a Japanese form took over Quasar television production, and within a few
months, they produce Quasar TV's sets which have fewer errors. This was obtained by improving management techniques.
Six Sigma was adopted by Bob Galvin, the CEO of Motorola in 1986 and registered as a Motorola Trademark on December 28, 1993,
then it became a quality leader. deoForward Skip 10s
----------------------------------------
----------------------------------------
Software Engineering 23
1. Statistical Quality Control: Six Sigma is derived from the Greek Letter σ (Sigma) from the Greek alphabet, which is used to
denote Standard Deviation in statistics. Standard Deviation is used to measure variance, which is an essential tool for
measuring non-conformance as far as the quality of output is concerned.
2. Methodical Approach: The Six Sigma is not a merely quality improvement strategy in theory, as it features a well defined
systematic approach of application in DMAIC and DMADV which can be used to improve the quality of production. DMAIC is
an acronym for Design-Measure- Analyze-Improve-Control. The alternative method DMADV stands for Design-Measure-
Analyze-Design-Verify.
3. Fact and Data-Based Approach: The statistical and methodical aspect of Six Sigma shows the scientific basis of the
technique. This accentuates essential elements of the Six Sigma that is a fact and data-based.
4. Project and Objective-Based Focus: The Six Sigma process is implemented for an organization's project tailored to its
specification and requirements. The process is flexed to suits the requirements and conditions in which the projects are
operating to get the best results.
5. Customer Focus: The customer focus is fundamental to the Six Sigma approach. The quality improvement and control
standards are based on specific customer requirements.
6. Teamwork Approach to Quality Management: The Six Sigma process requires organizations to get organized when it
comes to controlling and improving quality. Six Sigma involving a lot of training depending on the role of an individual in the
Quality Management team.
1. DMAIC
2. DMADV
----------------------------------------
----------------------------------------
Software Engineering 24
DMAIC
It specifies a data-driven quality strategy for improving processes. This methodology is used to enhance an existing business process.
1. Define: It covers the process mapping and flow-charting, project charter development, problem-solving tools, and so-called
7-M tools.
2. Measure: It includes the principles of measurement, continuous and discrete data, and scales of measurement, an overview
of the principle of variations and repeatability and reproducibility (RR) studies for continuous and discrete data.
3. Analyze: It covers establishing a process baseline, how to determine process improvement goals, knowledge discovery,
including descriptive and exploratory data analysis and data mining tools, the basic principle of Statistical Process Control
(SPC), specialized control charts, process capability analysis, correlation and regression analysis, analysis of categorical data,
and non-parametric statistical methods.
4. Improve: It covers project management, risk assessment, process simulation, and design of experiments (DOE), robust design
concepts, and process optimization.
5. Control: It covers process control planning, using SPC for operational control and PRE-Control.
DMADV
It specifies a data-driven quality strategy for designing products and processes. This method is used to create new product designs or
process designs in such a way that it results in a more predictable, mature, and detect free performance.
----------------------------------------
----------------------------------------
Software Engineering 25
The DMADV project methodology has five phases:
----------------------------------------
----------------------------------------
Software Engineering 26
Types of CASE Tools:
1) Diagramming Tools:
It helps in diagrammatic and graphical representations of the data and system processes. It represents system elements,
control flow and data flow among different software components and system structures in a pictorial form. For example, Flow
Chart Maker tool for making state-of-the-art flowcharts.
2) Computer Display and Report Generators: These help in understanding the data requirements and the relationships
involved.
3) Analysis Tools: It focuses on inconsistent, incorrect specifications involved in the diagram and data flow. It helps in collecting
requirements, automatically check for any irregularity, imprecision in the diagrams, data redundancies, or erroneous
omissions.
For example:
(i) Accept 360, Accompa, CaseComplete for requirement analysis.
(ii) Visible Analyst for total analysis.
4) Central Repository: It provides a single point of storage for data diagrams, reports, and documents related to project
management.
5) Documentation Generators: It helps in generating user and technical documentation as per standards. It creates documents
for technical users and end users.
For example, Doxygen, DrExplain, Adobe RoboHelp for documentation.
6) Code Generators: It aids in the auto-generation of code, including definitions, with the help of designs, documents, and diagrams.
Advantages of the CASE approach:
• As the special emphasis is placed on the redesign as well as testing, the servicing cost of a product over its expected lifetime
is considerably reduced.
• The overall quality of the product is improved as an organized approach is undertaken during the process of development.
• Chances to meet real-world requirements are more likely and easier with a computer-aided software engineering approach.
• CASE indirectly provides an organization with a competitive advantage by helping ensure the development of high-quality
products.
• It provides better documentation.
• It improves accuracy.
• It provides intangible benefits.
• It reduces lifetime maintenance.
• It is an opportunity to non-programmers.
• It impacts the style of working of the company.
• It reduces the drudgery in software engineer’s work.
• It increases the speed of processing.
• It is easy to program software.
Disadvantages of the CASE approach:
• Cost: Using a case tool is very costly. Most firms engaged in software development on a small scale do not invest in CASE
tools because they think that the benefit of CASE is justifiable only in the development of large systems.
• Learning Curve: In most cases, programmers’ productivity may fall in the initial phase of implementation, because users
need time to learn the technology. Many consultants offer training and on-site services that can be important to accelerate
the learning curve and to the development and use of the CASE tools.
• Tool Mix: It is important to build an appropriate selection tool mix to urge cost advantage CASE integration and data
integration across all platforms is extremely important.
Software Maintenance
Software maintenance is a part of the Software Development Life Cycle. Its primary goal is to modify and
update software application after delivery to correct errors and to improve performance. Software is a model of
the real world. When the real world changes, the software require alteration wherever possible.
Software Maintenance is an inclusive activity that includes error corrections, enhancement of capabilities,
deletion of obsolete capabilities, and optimization.
----------------------------------------
----------------------------------------
Software Engineering 27
Need for Maintenance
Software Maintenance is needed for:-
o Correct errors
o Change in user requirement with time
o Changing hardware/software requirements
o To improve system efficiency
o To optimize the code to run faster
o To modify the components
o To reduce any unwanted side effects.
Thus the maintenance is required to ensure that the system continues to satisfy user requirements.
1. Corrective Maintenance
Corrective maintenance aims to correct any remaining errors regardless of where they may cause specifications,
design, coding, testing, and documentation, etc.
----------------------------------------
----------------------------------------
Software Engineering 28
2. Adaptive Maintenance
It contains modifying the software to match changes in the ever-changing environment.
3. Preventive Maintenance
It is the process by which we prevent our system from being obsolete. It involves the concept of reengineering
& reverse engineering in which an old system with old technology is re-engineered using new technology. This
maintenance prevents the system from dying out.
4. Perfective Maintenance
It defines improving processing efficiency or performance or restricting the software to enhance changeability.
This may contain enhancement of existing system functionality, improvement in computational efficiency, etc.
• Source code
• Design and interfaces
• User manuals
• Software Documentation
• Software requirement specifications and many more.
• Less effort: Software reuse requires less effort because many components use in the
system are ready made components.
• Time-saving: Re-using the ready made components is time saving for the software
team.
• Reduce cost: Less effort, and time saving leads to the overall cost reduction.
• Increase software productivity: when you are provided with ready made components,
then you can focus on the new components that are not available just like ready made
components.
• Utilize fewer resources: Software reuse save many sources just like effort, time, money
etc.
• Leads to a better quality software: Software reuse save our time and we can consume
our more time on maintaining software quality and assurance.
----------------------------------------
----------------------------------------
Software Engineering 29
Reuse software engineering is based on guidelines and principles for reusing the existing
software.
What are stages of reuse-oriented software engineering?
Requirement specification:
First of all, specify the requirements. This will help to decide that we have some existing
software components for the development of software or not.
Component analysis
Helps to decide that which component can be reused where.
Requirement updations / modifications.
If the requirements are changed by the customer, then still existing components are helpful for
reuse or not.
Reuse System design
If the requirements are changed by the customer, then still existing system designs are helpful
for reuse or not.
Development
Existing components are matching with new software or not.
Integration
Can we integrate the new systems with existing components?
System validation
To validate the system that it can be accepted by the customer or not.
----------------------------------------
----------------------------------------
Software Engineering 30
Inheritance helps in the software re-usability by using the existing components of the software
to create new component.
In object oriented programming protected data members are accessible in the child and so we
can say that yes inheritance promote software re-usability.
Reuse of software helps reduce the need for testing?
This statement is true just for those components that are ready made and are ready to be reuse.
New components must be test.
What is a Component?
A component is a modular, portable, replaceable, and reusable set of well-defined functionality that encapsulates its implementation
and exporting it as a higher-level interface.
A component is a software object, intended to interact with other components, encapsulating certain functionality or a set of
functionalities. It has an obviously defined interface and conforms to a recommended behavior common to all components within an
architecture.
A software component can be defined as a unit of composition with a contractually specified interface and explicit context
dependencies only. That is, a software component can be deployed independently and is subject to composition by third parties.
Views of a Component
A component can have three different views − object-oriented view, conventional view, and process-related view.
Object-oriented view
A component is viewed as a set of one or more cooperating classes. Each problem domain class (analysis) and infrastructure class
(design) are explained to identify all attributes and operations that apply to its implementation. It also involves defining the interfaces
that enable classes to communicate and cooperate.
Conventional view
It is viewed as a functional element or a module of a program that integrates the processing logic, the internal data structures that are
required to implement the processing logic and an interface that enables the component to be invoked and data to be passed to it.
Process-related view
In this view, instead of creating each component from scratch, the system is building from existing components maintained in a
library. As the software architecture is formulated, components are selected from the library and used to populate the architecture.
• A user interface (UI) component includes grids, buttons referred as controls, and utility components expose a specific subset
of functions used in other components.
• Other common types of components are those that are resource intensive, not frequently accessed, and must be activated
using the just-in-time (JIT) approach.
• Many components are invisible which are distributed in enterprise business applications and internet web applications such
as Enterprise JavaBean (EJB), .NET components, and CORBA components.
----------------------------------------
----------------------------------------
Software Engineering 31
Characteristics of Components
• Reusability − Components are usually designed to be reused in different situations in different applications. However, some
components may be designed for a specific task.
• Replaceable − Components may be freely substituted with other similar components.
• Not context specific − Components are designed to operate in different environments and contexts.
• Extensible − A component can be extended from existing components to provide new behavior.
• Encapsulated − A A component depicts the interfaces, which allow the caller to use its functionality, and do not expose
details of the internal processes or any internal variables or state.
• Independent − Components are designed to have minimal dependencies on other components.
----------------------------------------
----------------------------------------
Software Engineering 32
• The final decision can be made by using established design principles and guidelines. Experienced designers consider all (or
most) of the alternative design solutions before settling on the final design model.
Advantages
• Ease of deployment − As new compatible versions become available, it is easier to replace existing versions with no impact
on the other components or the system as a whole.
• Reduced cost − The use of third-party components allows you to spread the cost of development and maintenance.
• Ease of development − Components implement well-known interfaces to provide defined functionality, allowing
development without impacting other parts of the system.
• Reusable − The use of reusable components means that they can be used to spread the development and maintenance
cost across several applications or systems.
• Modification of technical complexity − A component modifies the complexity through the use of a component container
and its services.
• Reliability − The overall system reliability increases since the reliability of each individual component enhances the reliability
of the whole system via reuse.
• System maintenance and evolution − Easy to change and update the implementation without affecting the rest of the
system.
• Independent − Independency and flexible connectivity of components. Independent development of components by different
group in parallel. Productivity for the software development and future software development.
Component-Based Software Engineering (CBSE) is a process that focuses on the design and development of
computer-based systems with the use of reusable software components.
It not only identifies candidate components but also qualifies each component’s interface, adapts components to
remove architectural mismatches, assembles components into a selected architectural style, and updates components
as requirements for the system change.
The process model for component-based software engineering occurs concurrently with component-based
development.
Component-based development:
Component-based development (CBD) is a CBSE activity that occurs in parallel with domain engineering. Using
analysis and architectural design methods, the software team refines an architectural style that is appropriate for the
analysis model created for the application to be built.
CBSE Framework Activities:
Framework activities of Component-Based Software Engineering are as follows:
1) Component Qualification: This activity ensures that the system architecture defines the requirements of the
components for becoming a reusable components. Reusable components are generally identified through the traits
in their interfaces. It means “the services that are given and the means by which customers or consumers access
these services ” are defined as a part of the component interface.
2) Component Adaptation: This activity ensures that the architecture defines the design conditions for all components
and identifies their modes of connection. In some cases, existing reusable components may not be allowed to get
used due to the architecture’s design rules and conditions. These components should adapt and meet the
requirements of the architecture or be refused and replaced by other, more suitable components.
3) Component Composition: This activity ensures that the Architectural style of the system integrates the software
components and forms a working system. By identifying the connection and coordination mechanisms of the system,
the architecture describes the composition of the end product.
4) Component Update: This activity ensures the updation of reusable components. Sometimes, updates are
complicated due to the inclusion of third-party (the organization that developed the reusable component may be
outside the immediate control of the software engineering organization accessing the component currently).
----------------------------------------
----------------------------------------