Software Engineering Overview for CSE Students
Software Engineering Overview for CSE Students
HANDOUT
on
A.Y.2024-25
Page | 1
SOFTWARE ENGINEERING (R23)
Software engineering emerged in the late 20th century as the demand for more complex and
reliable software grew, particularly in the 1960s and 1970s.
Page | 2
Scope of Software Engineering:
Software engineering – This subject covers a wide range of topics essential for the effective
design, development, testing, and maintenance of software. It incorporates both technical
skills (programming, design, testing) and project management skills (planning, risk
management, team collaboration), with the goal of producing high-quality software systems
that meet user needs and are sustainable over time.
2. Pre-Requisites
Fundamental concepts of Basic Computer Science Knowledge.
Programming Foundations.
Mathematics and Logic.
Problem-Solving and Critical Thinking.
3. Course Objectives:
To explore the evolution of software development, including various life cycle
models.
To analyze the complexities of software project management.
To examine coding and testing practices and methodologies.
4. Course Outcomes:
CO1: explain software engineering evolution, compare methodologies, and apply life
cycle models effectively
CO2: develop software projects by navigating complexities using proper estimation
and risk analysis techniques.
CO3: design robust software systems with modular, cohesive, focusing on object-
oriented analysis and design.
CO4: demonstrate coding proficiency, conduct effective testing, ensure software
reliability, and implement quality management systems.
CO5: utilize CASE tools across software life cycle models for productivity and
quality enhancement.
.
5. PROGRAMME OUTCOMES (POs)
Page | 3
2. Problem analysis: Identify, formulate, review research literature, and analyze complex
engineering problems reaching substantiated conclusions using first principles of
mathematics, natural sciences, and engineering sciences.
3. Design/development of solutions: Design solutions for complex engineering problems and
design system components or processes that meet the specified needs with appropriate
consideration for the public health and safety, and the cultural, societal, and environmental
considerations.
4. Conduct investigations of complex problems: Use research-based knowledge and research
methods including design of experiments, analysis and interpretation of data, and synthesis
of the information to provide valid conclusions.
5. Modern tool usage: Create, select, and apply appropriate techniques, resources, and modern
engineering and IT tools including prediction and modeling to complex engineering
activities with an understanding of the limitations.
6. The engineer and society: Apply reasoning informed by the contextual knowledge to assess
societal, health, safety, legal and cultural issues and the consequent responsibilities relevant
to the professional engineering practice.
7. Environment and sustainability: Understand the impact of the professional engineering
solutions in societal and environmental contexts, and demonstrate the knowledge of, and
need for sustainable development.
8. Ethics: Apply ethical principles and commit to professional ethics and responsibilities and
norms of the engineering practice.
9. Individual and team work: Function effectively as an individual, and as a member or leader
in diverse teams, and in multidisciplinary settings.
10. Communication: Communicate effectively on complex engineering activities with the
engineering community and with society at large, such as, being able to comprehend and
write effective reports and design documentation, make effective presentations, and give and
receive clear instructions.
11. Project management and finance: Demonstrate knowledge and understanding of the
engineering and management principles and apply these to one’s own work, as a member
and leader in a team, to manage projects and in multidisciplinary environments.
12. Life-long learning: Recognize the need for and have the preparation and ability to engage
in independent and life-long learning in the broadest context of technological change.
Page | 4
7. Mapping of Course Outcomes with Program Outcomes:
PO1 PO2 PO3 PO4 PO5 PO6 PO7 PO8 PO9 PO9 PO10 PO11 PO12 PSO1 PSO2
CO1 3 2 2 2 2 1 1 1 2 1 2 2
CO2 3 3 2 2 2 1 2 2 2
CO3 3 3 2 2 2 1
CO4 3 2 3 1 2 1 2
CO5 3 3 2 2 2 1 1 2
No. of Periods
[Link]. Topic
Theory Tutorial
Unit - I
Introduction: Evolution-Evolution of an Art into an
1 Engineering Discipline, Evolution Pattern for Engineering 2
Disciplines, A Solution to the Software Crisis
Software Development Projects- Program Vs Products,
2 1
Software Development Projects
3 Exploratory Style of Software Development 1
4 Software Life cycle Models-Basic concepts 1 1
Waterfall model and its extensions-Classical Waterfall Model,
5 1
Iterative Waterfall Model.
6 prototyping model 1
Page | 5
No. of Periods
[Link]. Topic
Theory Tutorial
Agile development model-Extreme Programming Model,
7 2
Scrum Model.
8 Spiral model 1 1
10 2
Unit - II
Software Project Management-Software project management
1 1
complexities
2 Responsibilities of a software project manager 1
Metrics for project size estimation-Lines of Code (LOC),
3 2 1
Function Point (FP) Metric
Project estimation techniques-Basic COCOMO, Intermediate
4 3 2
COCOMO, Complete COCOMO
Risk management- .Risk Identification, Risk Assessment, Risk
5 2
Mitigation
Requirements Analysis And Specification- Requirements
6 1
Gathering and Analysis
Software Requirements Specification (SRS)- Users of SRS
Document, Characteristics of a Good SRS Document,
Attributes of Bad SRS Documents, Important Categories of
7 Customer Requirements, Functional Requirements, How to 3
Identify the Functional Requirements?, How to Document the
Functional Requirements?, Organisation of the SRS
Document.
13 3
Unit - III
1 Software Design: Overview of the design process 1
2 How to Characterise a Good Software Design 1
3 Layered arrangement of modules 1
4 Cohesion and Coupling 1
Approaches to software design - Function-oriented Design,
5 2
Object-oriented Design
Function- Oriented Software Design: Structure Charts -
6 Overview of SA/SD Methodology, Data Flow Diagrams 2 1
(DFDs)
Structure design methodology - Transformation of a DFD
7 1
Model into Structure Chart
Object Oriented Design: Basic object orientation Concepts,
7 1
Class Relationships.
Unified Modeling Language – UML Diagrams
8 Use case Model , Class diagram, Interaction diagram, Activity 2 1
Diagram, State chart Diagram, Component and Deployment
Page | 6
No. of Periods
[Link]. Topic
Theory Tutorial
diagrams.
12 2
Unit - IV
1 Coding and Testing: Coding-Coding standards and guidelines 1
2 Testing-Basic Concepts and Terminologies, Testing Activities 1
black box testing-Equivalence Class Partitioning, Boundary
3 1 1
Value Analysis
white box testing-white box testing, Branch Coverage,
4 Multiple Condition Coverage, .Path Coverage, McCabe’s 2 1
Cyclomatic Complexity Metric .
5 Integration testing 1
6 Smoke Testing 1
Software Reliability And Quality Management: Software
7 reliability-Hardware versus Software Reliability, Reliability 1
Metrics of Software Products
8 ISO 9000-What is ISO 9000 Certification? 1
9 SEI Capability maturity model – CMM levels 1
10 2
Unit - V
Computer-Aided Software Engineering (CASE): CASE
1 1
and its scope
2 CASE environment 1
3 CASE Support in Software Life Cycle 1
Software Maintenance: Characteristics of software
4 1
maintenance
5 Software reverse engineering 1
6 Software maintenance process models 1 1
7 Estimation of maintenance cost 1
7 1
Total No. of Periods: 52 10
Page | 7
R23 Software Engineering II [Link]
SOFTWARE ENGINEERING
Objective:
To explore the evolution of software development, including various life cycle models.
Syllabus:
Modules:
Module 1: Evolution-Evolution of an Art into an Engineering Discipline.
Module 2: Software Development Projects.
Module 3: Exploratory Style of Software Development.
Module 4: Software Life cycle Models-Basic concepts.
Learning Outcomes:
Learning Material
Introduction:
Software:
Software is a set of instructions or programs instructing a computer to do specific
tasks.
Software is a set of
Instructions that when executed provide desired function and performance,
Data Structures that enable the programs to adequately manipulate
information,
Documents that describe the operation and use of the programs.
Engineering:
Engineering is the application of mathematics, science, economics, social and practical
knowledge to invent, innovate, design, build, maintain and research.
Software Engineering:
The application of a systematic, disciplined, quantifiable approach to the development,
operation, and maintenance of software.
In the above diagram, the first block is the initial briefing by the customer i.e. brief
introduction of the problem by the customer.
After the briefing, control goes to initial coding i.e. as soon as the developer or programmer
knew about the problem he starts coding to develop a working program without considering
any kind of requirement analysis.
After this, the program will be tested i.e. bugs found and they are getting fixed by
programmers.
This cycle continues until satisfactory code is not obtained. After finding satisfactory code,
development gets completed.
In the above figure, the thick line plots represent the case in which the exploratory style is
used to develop a program.
As program size increases, required effort and time increase almost exponentially. For large
problems, it would take too long and cost too much to be practically meaningful to develop a
program using the exploratory style of development.
The exploratory development approach is said to break down after the size of the program to
be developed increases beyond a certain value.
The thin solid line is used to represent a case when development is carried out using software
engineering principles.
In this case, it becomes possible to solve a problem with effort and time that is almost linear in
program size dotted line is used to represent a case when development is carried out by an
automated machine.
In this case, an increase in effort and time with size would be even closer to a linear increase
with size.
Exploratory style causes perceived difficulty of a problem to grow exponentially due to human
cognitive limitations because whenever the case arises in which a number of independent
variables increase in the project then it is beyond the grasping power of an individual and due
to this requires more effort.
You may still wonder that when software engineering principles are used, why the curve not
becomes completely linear. The answer is that it is very difficult to apply decomposition and
abstraction principles to completely overcome problem complexity.
Using this model, there is the exponential growth of development time effort and cost with problem
size and large-sized software becomes almost impossible using this style of development.
This style of development results in unmaintainable code because programming without planning
always results in unstructured and poor-quality code.
Also, it is difficult to use this style when there is a proper developing team because in this style every
developer uses his own intuition to develop software.
A software life cycle model is a descriptive and diagrammatic representation of the software life cycle.
The software engineering approaches emphasize software development through a well-defined and
ordered set of activities. If these activities are graphically modeled as well as textually described then it
is called as Software Life cycle Model.
Software Life cycle Model is also called as Software Development Life Cycle Model or Software
Development Process Model.
The life cycle of software represents the series of identifiable stages through which it evolves during its
life time.
The waterfall model is a classical development process model proposed by Winston Walker
Royce in 1970.
The simplest process model is the waterfall model, which states that the phases are linear order.
Feasibility Study
Main aim of feasibility study is to determine whether it would be financially and technically feasible to
develop the software.
First roughly understand what the customer wants: different data which would be input to the system,
processing needed on these data, output data to be produced by the system, various constraints on the
behaviour of the system.
Development of an overall understanding of the problem.
Evolution of different solution strategies in terms of: resources required, cost of development, and
development time.
Requirements Specification
• After the requirements gathering and analysis the identified requirements are documented. This is a
Software Requirements Specification (SRS) document.
Design
• Design phase transforms requirements specification into a form suitable for implementation in some
programming language.
• During design phase, software architecture is derived from the SRS document.
• Two design approaches are used at present:
– Procedural Design approach
– Object oriented Design approach.
System Testing
• After all the modules have been successfully integrated and tested system testing is carried out.
• Goal of system testing is to ensure that the developed system functions according to its requirements as
specified in the SRS document.
Maintenance
• Maintenance of any software product requires much more effort than the effort to develop the product
itself.
• The ratio of development effort to maintenance effort is typically 40:60.
• Maintenance is required in three situations.
Corrective maintenance:
Correct errors which were not discovered during the product development phases.
Perfective maintenance:
Improve implementation of the system
enhance functionalities of the system.
Adaptive maintenance:
Port software to a new environment,
e.g. to a new computer or to a new operating system.
The feedback paths allow for correcting errors committed by a programmer during some phase, as and
when these are detected in a later phase.
For example, if during test phase design error is identified, then the feedback path allows the design to
be reworked and the change to be reflected in the design documents
There is no feedback path to the feasibility phase because once a team accepted to take up a project,
they does not give up the project easily due to legal and moral reasons.
Errors should be detected in the same phase in which they are introduced, so that early detection of
errors reduces the effort and time.
For example, if a design problem is detected in the design phase itself, the problem can be taken care of
much more easily than if it is identified at the end of the testing phase.
Figure 7: Distribution of effort for various phases in the iterative waterfall model.
Rework must be carried out not only to the design but also to code and test phases.
The principle of detecting errors as close to their point of commitment as possible is known as phase
containment of errors.
Iterative waterfall model is the most widely used model almost every other model is derived from the
waterfall model.
Iterative development
• Once the customer approves the prototype, the actual software is developed using the iterative waterfall
approach.
• In spite of the availability of a working prototype, the SRS document is usually needed to be developed
since the SRS document is invaluable for carrying out traceability analysis, verification, and test case
design during later phases.
• T h e code for the prototype is usually thrown away. However, the experience gathered from developing
the prototype helps a great deal in developing the actual system.
• Even though the construction of a throwaway prototype might involve incurring additional cost, for
systems with unclear customer requirements and for systems with unresolved technical issues, the
overall development cost usually turns out to be lower compared to an equivalent system developed
using the iterative waterfall model.
• This model is the most appropriate for projects that suffer from technical and requirements risks. A
constructed prototype helps overcome these risks.
• It is cost-cutting measure by reducing testing.
• The experience of developing the prototype will reduce the cost entire project.
• As requirements will be more stable now due to the feedback from the prototype, there will be fewer
changes in the requirements.
• Developing the prototype will enable them to create a better design, write better code, and do better
testing.
Disadvantages
It is a slow process.
Too much involvement of client is not always preferred by the developer.
Too many changes can disturb the rhythm of the development team.
Practically, this methodology may increase the complexity of the system as scope of the system
may expand beyond original plans.
If client is not satisfied with the developed prototype, new prototype should be made, this may
lead to be expensive
The agile software development model was proposed in the mid-1990s to overcome the shortcomings of
the waterfall model.
The agile model was primarily designed to help a project to adapt to change requests quickly.
The major aim of the agile models is to facilitate quick project completion.
Agility is achieved by fitting the process to the project, i.e. removing activities that may not be
necessary for a specific project. Also, anything that that wastes time and effort is avoided.
Agile model is being used as an umbrella term to refer to a group of development process. A few
popular agile SDLC models are the following:
The most popular methods are
Extreme programming (XP)
Scrum
Design:
Without proper design, a system implementation becomes too complex and the dependencies within the
system become too numerous and it becomes very difficult to comprehend the solution, and thereby
making maintenance prohibitively expensive.
• A good design should result in elimination of complex dependencies within a system.
• XP design Follows Keep it simple (KIS) Principle.
• XP encourage the use of CRC (Class responsibility collaborator) cards which identify and organize the
object oriented classes.
• The CRC cards are the only design work product produced as part of the XP process.
• If a difficult design problem is encountered as part of the design of a story, XP recommends the
immediate creation of an operational prototype of that portion of the design called a Spike solution.
Coding:
• It suggests pair programming as the way to achieve continuous review.
• It is good since it helps detect and correct problems most efficiently.
• In pair programming, coding is carried out by pairs of programmers. The programmers take turn in
writing programs and while one write the other reviews code that is being written.
• Refactoring is the process of improving the design of the code after it has written.
Testing:
Testing code helps to remove bugs and improves its reliability.
• XP suggests Test driven development (TDD) to continually write and execute test cases.
• In the TDD approach, test cases are written even before any code is written. XP places high importance
on testing and considers it be the primary means for developing a fault-free software.
Product Owner
• Possibly a Product Manager or Project Sponsor
• Decides features, release date, prioritization
Scrum Master
• Typically, a Project Manager or Team Leader
• Responsible for enacting Scrum values and practices
• Remove impediments / politics, keeps everyone productive
Project Team
• 5-10 members; Teams are self-organizing
• Cross-functional: QA, Programmers, UI Designers, etc.
• Membership should change only between sprints
• Scrum is an agile process that allows us to focus on delivering the highest business value in the shortest
time.
• There are some roles in the scrum process
Pigs and Chickens
• Pigs’ groups include
• Product owner
• Scrum master and
• Scrum team
• Chicken group involves
• Users
• Stakeholders
• managers
• Pig: Team member committed to success of project
• Chicken: Interested but not committed
Advantages
Scrum can help team’s complete project quickly and efficiently.
Scrum ensures effective use of time and money.
Large projects are divided into easily manageable sprints.
Developments are coded and tested during the sprint review.
Works well for fast-moving development projects.
The team gets clear visibility through scrum meetings.
The spiral model, initially proposed by Boehm, is an evolutionary software process model that
couples the iterative feature of prototyping with the controlled and systematic aspects of the linear
sequential model. It implements the potential for rapid development of new versions of the software.
Using the spiral model, the software is developed in a series of incremental releases. During the early
iterations, the additional release may be a paper model or prototype. During later iterations, more and
more complete versions of the engineered system are produced.
Objective setting: Each cycle in the spiral starts with the identification of purpose for that cycle, the
various alternatives that are possible for achieving the targets, and the constraints that exists.
Risk Assessment and reduction: The next phase in the cycle is to calculate these various alternatives
based on the goals and constraints. The focus of evaluation in this stage is located on the risk perception
for the project.
Development and validation: The next phase is to develop strategies that resolve uncertainties and
risks. This process may include activities such as benchmarking, simulation, and prototyping.
Planning: Finally, the next step is planned. The project is reviewed, and a choice made whether to
continue with a further period of the spiral. If it is determined to keep, plans are drawn up for the next
step of the project.
The risk-driven feature of the spiral model allows it to accommodate any mixture of a specification-
oriented, prototype-oriented, simulation-oriented, or another type of approach. An essential element of
the model is that each period of the spiral is completed by a review that includes all the products
developed during that cycle, including plans for the next cycle. The spiral model works for development
as well as enhancement projects.
Advantages:
1. What is Software? [ ]
a) Software is set of programs.
b) Software is documentation and configuration of data.
c) Both a and b
d) None of the mentioned
3. The process of developing a software product using software engineering principles and
methods is referred to as, ______________. [ ]
a) Software myths
b) Scientific Product
c) Software Evolution
d) None of the above
5. The extent to which the software can continue to operate correctly despite the introduction
of invalid inputs is called as [ ]
a) Reliability
b) Robustness
c) Fault Tolerance
d) Portability
e) All of the above
6. As per an IBM report, 31% of the project get cancelled before they are completed, 53%
overrun their cost estimates by an average of 189% and for every 100 projects, there are 94
restarts. What is the reason for these statistics? [ ]
a) Lack of adequate training in software engineering
b) Lack of software ethics and understanding
c) Management issues in the company
d) All of the mentioned
8. Which of the following cannot be applied with the software according to Software
Engineering Layers? [ ]
a) Process
b) Methods
c) Manufacturing
d) None of the above
10. From the following which quality deals with maintaining the quality of the software
product? [ ]
a) Quality assurance
b) Quality control
c) Quality efficiency
d) None of the above
11. Which one of the following is not a symptom of the present software crisis? [ ]
a) Software is expensive.
b) It takes too long to build a software product.
c) Software is delivered late.
d) Software products are required to perform very complex tasks.
12. Which one of the following characteristics of software products being developed is not a
symptom of software crisis? [ ]
a) Fail to meet user requirements
b) Expensive
c) Highly interactive
d) Difficult to alter, debug, and enhance
14. Which one of the following is not a symptom of the present software crisis? [ ]
a) Software is expensive.
b) It takes too long to build a software product.
c) Software is delivered late.
d) Software products are required to perform very complex tasks.
15. Which one of the following characteristics of software products being developed is not a
symptom of software crisis? [ ]
a) Fail to meet user requirements.
b) Expensive.
c) Highly interactive.
d) Difficult to alter, debug, and enhance.
17. Which one among the following is not a software service type of project? [ ]
a) Software maintenance
b) Software customization
c) Outsourced software development
d) Software product development
18. Which one among the following is not a software service type of project? [ ]
a) Software maintenance
b) Software customization
c) Outsourced software development
d) Software product development
Part-B
Short Answer Questions (2M)
1. What is meant by the term "software crisis," and how does it relate to the evolution of
software engineering?
2. Distinguish between a software program and a software product. Provide one example for
each.
3. Explain the main drawback of the exploratory style of software development.
4. List the key phases of the software development life cycle (SDLC).
5. What are the major differences between the classical waterfall model and the iterative
waterfall model?
6. How does the prototyping model address the challenge of unclear user requirements?
Part-C
Descriptive Questions (5M)
1 Why do you think systematic software development using the software [BL2]
engineering principle is any different than art or craft?
2 Distinguish between a program and professionally developed software. [BL2]
3 Distinguish among a program, a software product and a software service. [BL2]
Give one example of each. Discuss the difference of the characteristics of
development projects for each of these.
4 Do you agree with the following statement—The focus of exploratory [BL4]
programming is error correction while the software engineering principles
emphasise error prevention”? Give the reasonings behind your answer.
5 What difficulties would a software development company face, if it tries [BL2]
to use the exploratory (build and fix) program development style in its
development projects? Explain your answer.
6 What are the symptoms of the present software crisis? What factors [BL2]
have contributed to the making of the present software crisis? What are
the possible solutions to the present software crisis?
7 Explain why the effort, time, and cost required to develop a program [BL2]
using the build and fix style increase exponentially with the size of the
Program? How do software engineering principles help tackle this rapid
rise in development time and cost?
8 List the major differences between the exploratory and modern [BL4]
software development practices.
9 What do you understand by the term software life cycle? Why is it [BL2]
necessary to model software life cycle and to document it?
10 What do you understand by the term software development life cycle [BL5]
model (SDLC)?
What problems might a software development organization face if it is
not following any SDLC for development of a large-sized software?
11 What problems would a software development organization face if it does not have a [BL2]
documented process model, and therefore follows only an informal one?
12 What do you mean by a software development process? What is the [BL3]
difference between a methodology and a process? Explain your answer
using a suitable example.
13 Which are the major phases in the waterfall model of software [BL2]
development? Which phase consumes the maximum effort for developing
a typical software?
Part-D
Competitive Examination Questions
Q3. Which of these are the 5 generic software engineering framework activities?
[UGC NET June 2011]
a) Communication, planning, modelling, construction, deployment
b) Communication, risk management, measurement, production, reviewing
c) Analysis, designing, programming, debugging, maintenance
d) Analysis, planning, designing, programming, testing
Q4. Software does not wear out in the traditional sense of the term, but software does tend to
deteriorate as it evolves, because:
[UGC-NET CS 2017 Nov - II]
a) Software suffers from exposure to hostile environments.
b) Defects are more likely to arise after software has been used often.
c) Multiple change requests introduce errors in component interactions.
d) Software spare parts become harder to order.
UNIT-2
SOFTWARE PROJECT MANAGEMENT
Syllabus:
Software Project Management: Software project management complexities,
Responsibilities of a software project manager, Metrics for project size estimation: Lines of
Code (LOC), Function Point (FP) Metric.
Project estimation techniques: Basic COCOMO, Intermediate COCOMO, Complete
COCOMO.
Risk management: Risk Identification, Risk Assessment, Risk Mitigation.
Requirements Analysis and Specification: Requirements Gathering and Analysis.
Software Requirements Specification (SRS): Users of SRS Document, Characteristics of a
Good SRS Document, Attributes of Bad SRS Documents, Important Categories of Customer
Requirements, Functional Requirements, How to Identify the Functional Requirements?,
How to Document the Functional Requirements?, organization of the SRS Document.
2. Changeability:
Because the software part of any system is easier to change as compared to the
hardware part, the software part is the one that gets most frequently changed.
This is especially true in the later stages of a project.
As far as hardware development is concerned, any late changes to the
specification of the hardware system under development usually amounts to
redoing the entire project. This makes late changes to a hardware project
prohibitively expensive to carry out. This possibly is a reason why
requirement changes are frequent in software projects. These changes usually
arise from changes to the business practices, changes to the hardware or
underlying software (e.g. operating system, other applications), or just because
the client changes his mind.
Frequent changes to the requirements and the invisibility of software are
possibly the two major factors making software project management a
complex task.
3. Complexity:
Even moderate sized software has millions of parts (functions) that interact
with each other in many ways—data coupling, serial and concurrent runs, state
transitions, control dependency, file sharing, etc.
Due to the inherent complexity of the functioning of a software product in
terms of the basic parts making up the software, many types of risks are
associated with its development. This makes managing these projects much
more difficult as compared to many other kinds of projects.
4. Uniqueness:
Every software project is usually associated with many unique features or
situations. This makes every project much different from the others. This is
unlike projects in other domains, such as car manufacturing or steel
manufacturing where the projects are more predictable.
Due to the uniqueness of the software projects, a project manager in the course
of a project faces many issues that are quite unlike the others he had
encountered in the past. As a result, a software project manager has to confront
many unanticipated issues in almost every project that he manages.
5. Exactness of the solution:
Mechanical components such as nuts and bolts typically work satisfactorily as
long as they are within a tolerance of 1 per cent or so of their specified sizes.
However, the parameters of a function call in a program are required to be in
complete conformity with the function definition.
This requirement not only makes it difficult to get a software product up and
working, but also makes reusing parts of one software product in another
difficult. This requirement of exact conformity of the parameters of a function
introduces additional risks and contributes to the complexity of managing
software projects.
6. Team-oriented and intellect-intensive work:
Software development projects are akin to research projects in the sense that
they both involve team-oriented, intellect-intensive work.
Project planning:
Project planning is undertaken immediately after the feasibility study phase and
before the starting of the requirements analysis and specification phase.
Project planning involves estimating several characteristics of a project and then
planning the project activities based on these estimates made.
The initial project plans are revised from time to time as the project progresses and
more project data become available.
Project monitoring and control:
Project monitoring and control activities are undertaken once the development
activities start.
The focus of project monitoring and control activities is to ensure that the software
development proceeds as per plan.
While carrying out project monitoring and control activities, a project manager may
sometimes find it necessary to change the plan to cope up with specific situations at
hand.
5. LOC metric measures the lexical complexity of a program and does not address
the more important issues of logical and structural complexities:
Between two programs with equal LOC counts, a program incorporating
complex logic would require much more effort to develop than a program with
very simple logic.
To realise why this is so, imagine the effort that would be required to develop
a program having multiple nested loops and decision constructs and compare
that with another program having only sequential control flow.
6. It is very difficult to accurately estimate LOC of the final program from problem
specification:
At the project initiation time, it is a very difficult task to accurately estimate
the number of lines of code (LOC) that the program would have after
development.
The LOC count can accurately be computed only after the code has fully been
developed.
Since project planning is carried out even before any development activity
starts, the LOC metric is of little use to the project managers during project
planning.
From the project manager’s perspective, the biggest shortcoming of the LOC metric is that
the LOC count is very difficult to estimate during project planning stage, and can only be
accurately computed after the software development is complete.
2.3.2 Function Point (FP) Metric
Function point metric was proposed by Albrecht in 1983.
This metric overcomes many of the shortcomings of the LOC metric.
The conceptual idea behind the function point metric is the following.
The size of a software product is directly dependent on the number of different
high-level functions or features it supports. This assumption is reasonable,
since each feature would take additional effort to implement.
Though each feature takes some effort to develop, different features may take very
different amounts of efforts to develop.
For example, in banking software, a function to display a help message may be much
easier to develop compared to say the function that carries out the actual banking
transactions.
This has been considered by the function point metric by counting the number of
input and output data items and the number of files accessed by the function.
The implicit assumption made is that the more the number of data items that a
function reads from the user and outputs and the more the number of files accessed,
the higher is the complexity of the function.
Now let us analyse why this assumption must be intuitively correct. Each feature
when invoked typically reads some input data and then transforms those to the
required output data.
For example, the query book feature (see Figure below) of a Library Automation
Software takes the name of the book as input and displays its location in the library
and the total number of copies available.
Similarly, the issue book and the return book features produce their output based on
the corresponding input data. It can therefore be argued that the computation of the
number of input and output data items would give a more accurate indication of the
code size compared to simply counting the number of high-level functions supported
by the system.
No of user Input 13 * 3 4 6 52
No of user output 4 * 4 5 7 20
No of user 2 * 3 4 6 8
enquiries
No of files 5 * 7 10 15 50
No of external 2 * 5 7 10 14
interfaces
Solution:
No of user 35 * 3 4 6 140
enquiries
No of files 6 * 7 10 15 60
No of external 4 * 5 7 10 28
interfaces
customer details and another for storing the daily purchase records. Now, using equation 3.1,
we get:
UFP = 2 × 4 + 3 × 5 + 1 × 4 + 10 × 2 + 0 × 10 = 47
Step 2: Al l the parameters are of moderate complexity, except the output parameter of
customer registration, in which the only output is the CN value. Consequently, the complexity
of the output parameter of the customer registration function can be categorized as simple. By
consulting Table 3.1, we find that the value for simple output is given to be 4.
The UFP can be refined as follows:
UFP = 3 × 4 + 2 × 5 + 1 × 4 + 10 × 2 + 0 × 10 = 46.
Step 3: Since the complexity adjustment factors have average values, therefore the total
degrees of influence would be: DI = 14 × 4 = 56 TCF = 0.65 + 0.01 + 56 = 1.21 Therefore,
the adjusted FP=46*1.21=55.66.
Function point metric shortcomings:
A major shortcoming of the function point measure is that it does not take into
account the algorithmic complexity of a function.
That is, the function point metric implicitly assumes that the effort required to design
and develop any two different functionalities of the system is the same.
The effort required to develop any two functionalities may vary widely.
For example, in a library automation software, the create-member feature would be
much simpler compared to the loan-from-remote-library feature. FP only considers
the number of functions that the system supports, without distinguishing the difficulty
levels of developing the various functionalities.
To overcome this problem, an extension to the function point metric called feature
point metric has been proposed. Feature point metric incorporates algorithm
complexity as an extra parameter.
This parameter ensures that the computed size using the feature point metric reflects
the fact that higher the complexity of a function, the greater the effort required to
develop it—therefore, it should have larger size compared to a simpler function.
Critical comments on the function point and feature point metrics
Proponents of function point and feature point metrics claim that these two metrics
are language-independent and can be easily computed from the SRS document during
project planning stage itself.
On the other hand, opponents claim that these metrics are subjective and require a
sleight of hand.
An example of the subjective nature of the function point metric can be that the way
one groups input and output data items into logically related groups can be very
subjective.
For example, consider that certain functionality requires the employee name and
employee address to be input. It is possible that one can consider both these items as a
single unit of data, since after all, these describe a single employee. It is also possible
for someone else to consider an employee’s address as a single unit of input data and
name as another. Such ambiguities leave sufficient scope for debate and keep open the
possibility for different project managers to arrive at different function point measures
for essentially the same problem.
2.4 PROJECT ESTIMATION TECHNIQUES
Estimation of various project parameters is an important project planning activity.
The different parameters of a project that need to be estimated include—project size,
effort required to complete the project, project duration, and cost.
Accurate estimation of these parameters is important, since these not only help in
quoting an appropriate project cost to the customer, but also form the basis for
resource planning and scheduling.
These can broadly be classified into three main categories:
a) Empirical estimation techniques
b) Heuristic techniques
c) Analytical estimation techniques
The Constructive Cost Model (COCOMO) - A HEURISTIC ESTIMATION
TECHNIQUE
Constructive Cost model (COCOMO)
Organic Typically Small size project, experienced Little Not tight Familiar & In
developers in the familiar house
2-50 KLOC
environment. For example, pay
roll, inventory projects etc.
Embedded Typically over Large project, Real time Significant Tight Complex
systems, Complex interfaces, Hardware/
300 KLOC
Very little previous experience. customer
For example: ATMs, Air Traffic Interfaces
Control etc. required
a1 a2 b1 b2
Organic 2.4 1.05 2.5 0.38
Estimation of effort:
• Organic : Effort = 2.4(KLOC)1.05 PM
• Semi-detached : Effort = 3.0(KLOC)1.12 PM
The intermediate COCOMO model estimates the initial effort using the basic
COCOMO model
Then the EAF is calculated as the product of 15 cost drivers.
Total effort is determined by multiplying the initial effort with the total value of EAF.
The computation steps are summarized below
a1 a2 b1 b2
Organic 3.2 1.05 2.5 0.38
A risk is any anticipated unfavourable event or circumstance that can occur while a
project is underway.
It is necessary for the project manager to anticipate and identify different risks that a
project is susceptible to, so that contingency plans can be prepared beforehand to
contain each risk.
In this context, risk management aims at reducing the chances of a risk becoming real
as well as reducing the impact of risks that becomes real.
Risk management consists of three essential activities
Risk identification,
Risk assessment, and
Risk mitigation.
identified risks are prioritised, then the most likely and damaging risks can be handled first
and more comprehensive risk abatement procedures can be designed for those risks.
After all the identified risks of a project have been assessed, plans are made to contain
the most damaging and the most likely risks first.
Different types of risks require different containment procedures. In fact, most risks
require considerable ingenuity on the part of the project manager in tackling the risks.
1. Avoid the risk: Risks can be avoided in several ways. Risks often arise due to project
constraints and can be avoided by suitably modifying the constraints. The different categories
of constraints that usually give rise to risks are:
a. Process-related risk: These risks arise due to aggressive work schedule, budget, and
resource utilisation.
d. Transfer the risk: This strategy involves getting the risky components developed by
a third party, buying insurance cover, etc.
2. Risk reduction:
This involves planning ways to contain the damage due to a risk. For example, if there
is risk that some key personnel might leave, new recruitment may be planned. The
most important risk reduction techniques for technical risks are to build a prototype
that tries out the technology that you are trying to use.
For example, if you are using a compiler for recognising user commands, you would
have to construct a compiler for a small and very primitive command language first
There can be several strategies to cope up with a risk. To choose the most appropriate
strategy for handling a risk, the project manager must consider the cost of handling
the risk and the corresponding reduction of risk.
For this we may compute the risk leverage of the different risks. Risk leverage is the
difference in risk exposure divided by the cost of reducing the risk. More formally,
Even though we identified three broad ways to handle any risk, effective risk handling
cannot be achieved by mechanically following a set procedure, but requires a lot of
ingenuity on the part of the project manager.
5. What are the likely complexities that might arise while solving the
problem?
6. If there are external software or hardware with which the developed
software has to interface, then what should be the data interchange formats
with the external systems?
During requirements analysis, the analyst needs to identify and resolve three main types
of problems in the requirements:
• Anomaly
• Inconsistency
• Incompleteness
Anomaly: Anomaly is an ambiguity in a requirement. When a requirement is
anomalous, several interpretations of that requirement are possible.
Inconsistency: Two requirements are said to be inconsistent, if one of the
requirements contradicts the other.
Incompleteness: An incomplete set of requirements is one in which some
requirements have been overlooked. An experienced analyst can detect most of these
missing features and suggest them to the customer
2.7 SOFTWARE REQUIREMENTS SPECIFICATION (SRS)
• After the analyst has gathered all the required information regarding the software to
be developed, and has removed all incompleteness, inconsistencies, and anomalies
from the specification, developer systematically organise the requirements in the form
of an SRS document.
• Among all the documents produced during a software development life cycle, SRS
document is probably the most important document and is the toughest to write.
• SRS document as the documentation of a contract between the development team and
the customer
2.7.1 Users of SRS Document
1. Users, customers, and marketing personnel: These stakeholders need to refer to the
SRS document to ensure that the system as described in the document will meet their
needs. Remember that the customer may not be the user of the software, but may be
someone employed or designated by the user .
2. Software developers: The software developers refer to the SRS document to make
sure that they are developing exactly what is required by the customer.
3. Test engineers: The test engineers use the SRS document to understand the
functionalities, and based on this write the test cases to validate its working. They
need that the required functionality should be clearly described, and the input and
output data should have been identified precisely.
4. User documentation writers: The user documentation writers need to read the SRS
document to ensure that they understand the features of the product well enough to be
able to write the users’ manuals.
5. Project managers: The project managers refer to the SRS document to ensure that
they can estimate the cost of the project easily by referring to the SRS document and
that it contains all the information required to plan the project.
6. Maintenance engineers: The SRS document helps the maintenance engineers to
under- stand the functionalities supported by the system. A clear knowledge of the
functionalities can help them to understand the design and code.
2.7.2 Characteristics of a Good SRS Document
The skill of writing a good SRS document usually comes from the
experience gained from writing SRS documents for many projects.
IEEE Recommended Practice for Software Requirements
Specifications[IEEE830] describes the content and qualities of a good
software requirements specification (SRS).
1. Concise: The SRS document should be concise and at the same time unambiguous,
consistent, and complete.
2. Implementation-independent: The SRS should be free of design and
implementation decisions unless those decisions reflect actual requirements. It
should only specify what the system should do and refrain from stating how to do
these.
The SRS document should describe the system to be developed as a black box, and
should specify only the externally visible behaviour of the system. For this reason,
the SRS document is also called the black-box specification of the software being
developed.
3. Traceable: It should be possible to trace a specific requirement to the design elements that
implement it and vice versa. Traceability is also important to verify the results of a phase with
respect to the previous phase and to analyse the impact of changing a requirement on the
design elements and the code.
5. Identification of response to undesired events: The SRS document should discuss the
system responses to various undesired events and exceptional conditions that may arise.
6. Verifiable: All requirements of the system as documented in the SRS document should be
verifiable. This means that it should be possible to design test cases based on the description
of the functionality as to whether or not requirements have been met in an implementation.
Any feature of the required system that is not verifiable should be listed separately in the
goals of the implementation section of the SRS document.
SRS documents written by novices frequently suffer from a variety of problems. Some of the
problems are
a. Over-specification: It occurs when the analyst tries to address the “how to” aspects in
the SRS document. For example, in the library automation problem, one should not
specify whether the library membership records need to be stored indexed on the
member’s first name or on the library member’s identification (ID) number. Over-
specification restricts the freedom of the designers in arriving at a good design
solution.
b. Forward references: One should not refer to aspects that are discussed much later in
the SRS document. Forward referencing seriously reduces readability of the
specification.
c. Wishful thinking: This type of problems concern description of aspects which would
be difficult to implement.
d. Noise: The term noise refers to presence of material not directly relevant to the
software development process.
A good SRS document should properly categorize and organise the requirements into
different sections [IEEE830].
As per the IEEE 830 guidelines, the important categories of user requirements are the
following.
1. Functional requirements
2. Non-functional requirements
a. Design and implementation constraints
b. External interfaces required
c. Other non-functional requirements
3. Goals of implementation.
1. Functional requirements
• The functional requirements capture the functionalities required by the users from the
system.
• Consider a software as offering a set of functions {fi} to the user.
• These functions can be considered similar to a mathematical function f: I → O,
meaning that a function transforms an element (ii) in the input domain (I) to a value
(oi) in the output.
• Each function fi of the system can be considered as reading certain data ii, and then
transforming a set of input data (ii) to the corresponding set of output data (oi).
• The functional requirements of the system, should clearly describe each functionality
that the system would support along with the corresponding input and output data set.
2. Non-functional requirements
• To specify the user interfaces, each interface between the software and the users must
be described.
• The description may include sample screen images, any GUI standards or style
guides that are to be followed, screen layout constraints, standard buttons and
functions (e.g., help) that will appear on every screen, keyboard shortcuts, error
message display standards, and so on.
• One example of a user interface requirement of a software can be that it should be
usable by factory shop floor workers who may not even have a high school degree.
The details of the user interface design such as screen designs, menu structure,
navigation diagram, etc. should be documented in a separate user interface
specification document.
• This section contains a description of non- functional requirements that are neither
design constraints and nor are external interface requirements.
• An important example is a performance requirement such as the number of
transactions completed per unit time.
• Besides performance requirements, the other non-functional requirements to be
described in this section may include reliability issues, accuracy of results, and
security issues.
3. Goals of implementation
• The ‘goals of implementation’ part of the SRS document offers some general
suggestions regarding the software to be developed.
• The goals of implementation section might document issues such system
functionalities that may be required in the future, easier support for new devices to be
supported in the future, reusability issues, etc.
• These are the items which the developers might keep in their mind during
development so that the developed system may meet some aspects that are not
required immediately.
• It is useful to remember that anything that would be tested by the user and the
acceptance of the system would depend on the outcome of this task, is usually
considered as a requirement to be fulfilled by the system and not a goal and vice
versa.
• Aspects which can be expressed as transformation of some input data to some output
data (i.e., the functions of the system) should be documented as the functional
requirement.
• Any other requirements whose compliance by the developed system can be verified
by inspecting the system are documented as non- functional requirements.
• Aspects whose compliance by the developed system need not be verified but are
included as suggestions to the developers are documented as goals of the
implementation.
Functional Requirements
• Once all the high-level functional requirements have been identified and the
requirements problems have been eliminated, these are documented.
• A function can be documented by identifying the state at which the data is to be input
to the system, its input data domain, the output data domain, and the type of
processing to be carried on the input data to obtain the output data.
• Let us first try to document the withdraw-cash function of an automated teller
machine (ATM) system in the following. The withdraw-cash is a high-level
requirement. It has several sub-requirements corresponding to the different user
interactions. These user interaction sequences may vary from one invocation from
another depending on some conditions. These different interaction sequences capture
the different scenarios. To accurately describe a functional requirement, we must
document all the different scenarios that may occur.
Description: The withdraw cash function first determines the type of account that the user
has and the account number from which the user wishes to withdraw cash. It checks the
balance to determine whether the requested amount is available in the account. If enough
balance is available, it outputs the required cash; otherwise it generates an error message.
Input: “Withdraw amount” option selected Output: User prompted to enter the account type
Input : User selects option from any one of the followings— savings/checking/deposit.
Input: Amount to be withdrawn in integer values greater than 100 and less than 10,000 in
multiples of 100.
Processing: The amount is debited from the user’s account if sufficient balance is available,
otherwise an error message displayed.
• IEEE 830 standard SRS document has been intended to serve as a guideline for
organizing a requirements specification document into sections and allows the
flexibility of tailoring it, as may be required for specific projects.
• Depending on the type of project being handled, some sections can be omitted,
introduced, or interchanged by the analyst.
Introduction
Purpose: This section should describe where the software would be deployed and and how
the software would be used.
Project scope: This section should briefly describe the overall context within which the
software is being developed. For example, the parts of a problem that are being automated
and the parts that would need to be automated during future evolution of the software.
Product perspective: This section needs to briefly state as to whether the software is
intended to be a replacement for a certain existing systems, or it is a new software. If the
software being developed would be used as a component of a larger system, a simple
schematic diagram can be given to show the major components of the overall system,
subsystem interconnections, and external interfaces can be helpful.
Product features: This section should summarize the major ways in which the software
would be used. Details should be provided in Section 3 of the document. So, only a brief
summary should be presented here.
User classes: Various user classes that are expected to use this software are identified and
described here. The different classes of users are identified by the types of functionalities that
they are expected to invoke, or their levels of expertise in using computers.
Operating environment: This section should discuss in some detail the hardware platform
on which the software would run, the operating system, and other application software with
which the developed software would interact.
Design and implementation constraints: In this section, the different constraints on the
design and implementation are discussed. These might include—corporate or regulatory
policies; hardware limitations (timing requirements, memory requirements); interfaces to
other applications; specific technologies, tools, and databases to be used; specific
programming language to be used; specific communication protocols to be used; security
considerations; design conventions or programming standards.
User documentation: This section should list out the types of user documentation, such as
user manuals, on-line help, and trouble-shooting manuals that will be delivered to the
customer along with the software.
Assignment-Cum-Tutorial Questions
Part-A
Objective Questions (1M)
(1) Effort is measured using which one of the following units: [ ]
(i) persons
(ii) person-months
(iii) months
(iv) Rupees
(2) COCOMO estimation model can be used to estimate which one of the following: [ ]
(i) LOC
(ii) Effort
(iii) Function points
(iv) Defect density
(3) What is the correct order in which a software project manager estimates various project
parameters while using COCOMO? [ ]
(i) Cost, effort, duration, size
(ii) Cost, duration, effort, size
(iii) Size, effort, duration, cost
(iv) Size, cost, effort, duration
(4) Which one of the following is NOT a factor for “Lines of code” being considered as a
poor size metric? [ ]
(i) It is programming language dependent.
(ii) It penalises efficient and compact coding.
(iv) Duration is the most fundamental attribute of a software product, based on which
the project size and effort are measured.
(10) For a certain software development project, an effort estimation of 100 person- months
was arrived by using COCOMO model. This implies that the project needs to be
completed by: [ ]
(i) Employing 100 persons for 1 month
(ii) Employing 1 person for 100 months
(iii)Employing 10 persons for 10 months
(iv)The number of persons employed over different project phases would correspond
to Raleigh distribution
(11) Who among the following is a stakeholder in a software development project? [ ]
(i) A shareholder of the organisation developing the software
(ii) Anyone who is interested in the software
(iii) Anyone who is a source of requirements for the software
(iv) Anyone who might be affected by the software
(12) A software requirements specification (SRS) document should avoid discussing which
one of the following? [ ]
(i) Functional requirements
(ii) Non-functional requirements
(iii) Design specification
(iv) Constraints on the implementation
(13) Which of the following is not a goal of requirements analysis? [ ]
(i) Weed out ambiguities in the requirements
(ii) Weed out inconsistencies in the requirements
(iii) Weed out non-functional requirements
(iv) Weed out incompleteness in the requirements
(14) Consider the following requirement for word processor software: “The software should
provide facility to import an existing image available as a jpeg file into the document
being created.” Which one of the following types of requirement is this? [ ]
(i) Functional requirement
(ii) Non-functional requirement
(iii) Constraint on the implementation
(iv) Goal of implementation
(15) Assume that you are the project manager of a development project for a data processing
application in which the user requirements for the GUI part are not very clear. Which
life cycle model would you use to develop the GUI part? [ ]
(i) Classical waterfall model
(ii) Iterative waterfall model
(iii) Prototyping model
(iv) Spiral model
Part-B
Short Answer Questions (2M)
1 List five major responsibilities of a software project manager.
2 What is meant by the ‘size’ of a software project?
3 Why does a project manager need to estimate the size of the project?
How is the size estimated?
4 What are the different categories of software development projects
according to the COCOMO estimation model?
5 What do you mean by project size? What are the popular metrics to
measure project size?
6 What is a milestone in software development? Why is it considered
helpful to have milestones in software development?
7 List the important shortcomings of LOC for use as a software size
metric for carrying out project estimations.
8 What is the difference between requirements analysis and specification?
9 What is the difference between the functional and the non-functional
requirements of a system?
10 List five desirable characteristics of a good software requirements
specification (SRS) document.
11 Why is the SRS document also known as the black-box specification of
a system?
Part-C
Descriptive Questions (5M)
1 Suppose you are the project manager of a large development project.
The top management informs that you would have to do with a fixed
BL4
team size (i.e., constant number of developers) throughout the duration
your project. What will be the impact of this decision on your project?
2 Suppose you are developing a software product of organic type. You
have estimated the size of the product to be about 100,000 lines of BL3
code. Compute the nominal effort and the development time.
14 Suppose you are trying to gather the requirements for software that needs
to be developed to automate the book-keeping activities of a supermarket.
BL5
Evaluate the main tasks that you would undertake as the analyst to
satisfactorily gather the requirements.
15 Explain different categories of users of the SRS document?
BL2
In what ways is the SRS document useful to them?
16
Illustrate the organisation of the SRS Document BL2
17 Suppose a project was estimated to be 400 KLOC. Calculate the effort and
development time for each of the three model i.e., organic, semi-detached & BL3
embedded.
18 A project size of 200 KLOC is to be developed. Software development team
has average experience on similar type of projects. The project schedule is not
BL3
very tight. Calculate the Effort, development time, average staff size, and
productivity of the project.
19
Distinguish Function points and LOC BL2
Part-D
Competitive Examination Questions
1. Which of the following is not a Non-functional requirement? [NET Dec 2022] [ ]
a) Portability
b) Security
c) Scalability
d) User interaction.
2. Software project manager is responsible for the following task [NET Dec 2022] [ ]
a) Project planning
b) Project status tracking
c) Resources management
d) Risk management
e) Project delivery within time & budget
Choose the correct answer from the options given below.
i)All statements are correct.
ii) Only B & C are correct
iii) Only A & D are correct
iv) Only A & D are correct
3. If every requirement can be checked by a cost-effective process, then SRS is called
[NET June 2022] [ ]
i)Verifiable.
ii) Traceable
iii) Modifiable
iv) Complete
4. Size and complexity are a part of [NET June 2022] [ ]
a) People Metrics
b) Project Metrics
c) Process Metrics
d) Product Metrics.
5. A Software project was estimated at 864 Function Points. A six person team will be
assigned to a project consisting of a requirement gathering person, one designer, two
programmers and two testers. The salary of the designer is Rs.70,000 per month,
requirement gatherer is Rs.50,000 per month, programmer is Rs.60,000 per month and a
tester is Rs.60,000 per month. Average productivity for the team is 12 FP per person
month. Which of the following represents the projected cost of the project?
[NTA UGC NET Nov 2020] [ ]
i) 33,20,000
ii) 43,20,000.
iii) 33,10,000
iv) 22,10,000
Using a Software Life Cycle Model (SDLC) offers several advantages: it provides a structured framework for project development, ensures systematic and disciplined development processes, facilitates communication among team members, defines clear entry and exit criteria for each phase, and supports project management by helping track progress, resources, and time. It also reduces the risk of software failures by enforcing a sequence of well-defined phases, each with specific deliverables or outcomes . Without it, development could become disorganized, leading to unmaintainable code and increased costs .
The key differences between exploratory and modern software development practices include the approach to planning and flexibility in development. Exploratory practices are typically less structured, with developers relying heavily on intuition and improvisation, often resulting in unmaintainable code and increased risk of project failures. In contrast, modern practices incorporate rigorous planning, use structured methodologies like Agile or SDLC models, and emphasize collaboration, adaptability, quality assurance, and testing throughout the development cycle to manage complexity and ensure reliable outcomes .
An SRS document serves as a contract by explicitly detailing all the agreed-upon functionalities and specifications that the software must satisfy. It establishes a mutual understanding between the customer and the development organization, reducing misunderstandings and discrepancies about product outcome. Furthermore, it defines the scope, constraints, and deliverables, which can be used to manage expectations and resolve disputes. The SRS also facilitates accountability by providing measurable benchmarks for development progress and final acceptance of the software product .
The Function Point (FP) metric addresses shortcomings of the Lines of Code (LOC) metric by focusing on software functionality rather than code length. It evaluates the size of a software product based on the number of different high-level functions it performs, which correlates more directly with user needs and the complexity of functionality. While LOC is a purely quantitative measure that only reflects code quantity, FP provides a qualitative assessment that takes into account inputs, outputs, data files, and user interactions. This approach allows project managers to estimate project requirements more accurately from a functionality perspective rather than mere code metrics .
Maintainability is crucial in software development as it determines the ease with which software can be modified to fix bugs, improve performance, or adapt to new requirements. Unstructured code significantly impairs maintainability because it is often difficult to understand and lacks coherent organization, making it challenging for developers to isolate issues or implement changes efficiently. This can lead to increased costs and extended timelines for updates or bug fixes, and over time, degrade the software's usability and responsiveness to market or technological changes .
The assertion that the classical waterfall model is idealistic stems from its assumption that all project phases can be completed sequentially without iterations or changes, which rarely aligns with real-world project dynamics where requirements may evolve post-specification. Implementation issues and new insights often necessitate revisiting earlier stages. Despite these criticisms, the waterfall model remains practically applicable in projects with well-understood requirements, stable technology environments, or regulatory demands that necessitate stringent documentation and phase adherence, such as in government or industrial control systems .
If customer requirements change significantly after the requirements phase, a software development organization could face multiple challenges: increased project costs due to unexpected redesign and redevelopment activities, delayed timelines from reworking existing work, potential conflicts among team members over resource allocation, and challenges in maintaining consistency of the software's architectural integrity. These changes can also affect the SRS documentation's traceability and modifiability features, lead to version control issues, and possibly result in diminished customer satisfaction if the new requirements cannot be fully met within the project scope .
Overlapping phases in the iterative waterfall model occur due to need for feedback and adaptation as new insights and requirements emerge post-initial phases. This approach allows earlier detection of errors and facilitates ongoing validation of project goals and user needs. Effort distribution is affected as resources are allocated not only for moving forward in the cycle but also revisiting and revising earlier phases. This requires balancing resource allocation to manage concurrent activities, leading to potential complexity in planning and execution but generally results in a more flexible and responsive development process .
A well-structured Software Requirements Specification (SRS) document can prevent common development issues by providing a clear, detailed, and verifiable list of functional and non-functional requirements. This helps avoid ambiguities and misinterpretations between stakeholders and developers, ensures clarity on system capabilities and boundaries, facilitates traceability of requirements through design and testing phases, and serves as a reference for managing changes throughout the development lifecycle. Additionally, it aids in avoiding scope creep, protects against over-specification, and ensures that all system features can be tested and validated, reducing the likelihood of project failure due to unmet customer needs .
The build and fix model results in exponential increases in effort, time, and cost as program size increases because it lacks a structured development process. Without planning and systematic documentation, each stage of development becomes cumbersome, leading to increased difficulty in managing changes and debugging. As the size of the program increases, so does the complexity, making it difficult to apply decomposition and abstraction principles. Consequently, each additional element compounds issues, leading to more effort-intensive iterations to fix problems that arise .