Software Engineering Notes
Software Engineering Notes
Engineering
Software is a program or set of programs containing instructions that provide the desired functionality.
Engineering is the process of designing and building something that serves a particular purpose and finds a
cost-effective solution to problems.
Software Engineering is the process of designing, developing, testing, and maintaining software. It is a
systematic and disciplined approach to software development that aims to create high-quality, reliable, and
maintainable software.
2. Reliability: It assures that the product will deliver the same results when used in similar working environment.
3. Reusability: This attribute makes sure that the module can be used in multiple applications.
4. Maintainability: It is the ability of the software to be modified, repaired, or enhanced easily with changing
requirements.
1. Efficiency: The software should not make wasteful use of computing devices such as memory, processor cycles, etc.
2. Reusability: A software product has good reusability if the different modules of the product can easily
be reused to develop new products.
3. Testability: Here software facilitates both the establishment of test criteria and the evaluation of the software
concerning those criteria.
4. Reliability: It is an attribute of software quality. The extent to which a program can be expected to perform
its desired function, over an arbitrary time period.
5. Portability: In this case, the software can be transferred from one computer system or
Components of Software
1. Program: A computer program is a list of instructions that tell a computer what to do.
2. Documentation: Source information about the product contained in design documents, detailed code comments,
etc.
Software Crisis
The term “software crisis” refers to a set of problems that were faced by the software industry in the 1960s and 1970s, such
as:
1. Size and Cost: Day to day growing complexity and expectation out of software. Software are more expensive and
more complex.
3. Delayed Delivery: Software takes longer than the estimated time to develop, which in turn leads to cost shooting
up.
4. High costs and long development times: software projects were taking much longer and costing much more than
expected.
5. Low quality: software was often delivered late, with bugs and other defects that made it difficult to use.
6. Lack of standardization: there were no established best practices or standards for software
development, making it difficult to compare and improve different approaches.
7. Lack of tools and methodologies: there were few tools and methodologies available to help with
software development, making it a difficult and time-consuming process.
These problems led to a growing realization that the traditional approaches to software development were not
effective and needed to be improved. This led to the development of new software development methodologies,
such as the Waterfall and Agile methodologies, as well as the creation of new tools and technologies to support
software development.
Software engg process- The software engineering process consists of activities for managing the creation of
software, including requirement collection, analysis, design, coding, testing, and maintenance. Software
engineering methods are just different ways of approaching software development and delivery.
It can involve the application of new and untested It usually applies only known and tested
Application elements in software projects. principles to meet product requirements.
In the Software Engineering Process, most In Conventional Engineering Process, most
Development
development effort goes into building new designs development efforts are required to change old
Effort
and features. designs.
Design Design requirements may change throughout theDesign Requirements are typically well-defined
Requirement development process. upfront.
Testing is an integral part of the developmentTesting occurs mainly after product completion.
Testing process.
Prototyping is common and helps to refinePrototyping is less common due to cost and time.
Prototyping requirements.
Software development often involves complex logicConventional engineering may have more complex
Complexity and algorithms. physical properties to deal with.
Software development often follows established Conventional engineering may have well-
Framework standards and frameworks. established regulations and standards.
Software development is typically less expensive to Conventional engineering may be more expensive
start, but costs may increase with maintenance andto start due to materials and construction but may
Cost Dynamics updates. have lower maintenance costs.
The goal of the SDLC life cycle model is to deliver high-quality, maintainable software that meets the user’s
requirements. SDLC in software engineering models outlines the plan for each stage so that each stage of the
software development model can perform its task efficiently to deliver the software at a low cost within a given
time frame that meets users’ requirements.
SDLC is a process followed for software building within a software organization. SDLC consists of a
precise plan that describes how to develop, maintain, replace, and enhance specific software. The life cycle
defines a method for improving the quality of software and the all- around development process.
SDLC specifies the task(s) to be performed at various stages by a software engineer or developer. It ensures that
the end product is able to meet the customer’s expectations and fits within the overall budget. Hence, it’s vital
for a software developer to have prior knowledge of this software development process. SDLC is a collection of
these six stages, and the stages of SDLC are as follows:
1. Waterfall Model
Waterfall model is a famous and good version of SDLC(System Development Life Cycle) for software
engineering. The waterfall model is a linear and sequential model, which means that a development phase cannot
begin until the previous phase is completed. We cannot overlap phases in waterfall model, once one phase of
development is completed then we move to the next phase but cannot go back to the previous phase. In the
waterfall model, the output of one phase serves as the input for the other phase.
1. Requirement phase:- Requirement phase is the first phase of the waterfall model. In this phase the
requirements of the system are collected and documented. This phase is very crucial because the next
phases are based on this phase.
2. Design phase:- Design phase is based on the fact how the software will be built. The main objective of
the design phase is to prepare the blueprint of the software system so that no problems are faced in the
coming phases and solutions to all the requirements in the requirement phase are found.
3. Implementation phase:- In this phase, hardware, software and application programs are installed and
the database design is implemented. Before the database design can be implemented, the software has
to go through a testing, coding, and debugging process. This is the longest lasting phase in waterfall.
4. Verification phase:- In this phase the software is verified and it is evaluated that we have created the
right product. In this phase, various types of testing are done and every area of the software is checked.
It is believed that if we do not verify the software properly and there is any defect in it then no one will
use it, hence verification is very important. One advantage of verification is that it reduces the risk of
software failure.
5. Maintenance phase:- This is the last phase of waterfall. When the system is ready and users start
using it, then the problems that arise have to be solved time-to-time. Taking care of the finished
software and maintaining it as per time is called maintenance.
• In this model, complete and accurate requirements are expected at the beginning of the development process.
• Working software is not available for very long during the development life cycle.
• We cannot go back to the previous phase due to which it is very difficult to change the requirements.
• Risk is not assessed in this, hence there is high risk and uncertainty in this model.
Prototype model
Prototype model is an activity in which prototypes of software applications are created. First a prototype is
created and then the final product is manufactured based on that prototype.
• The prototype model was developed to overcome the shortcomings of the waterfall model.
• The specialty of this model is that this model can be used with other models as well as alone.
One problem in this model is that if the end users are not satisfied with the prototype model, then a new prototype
model is created again, due to which this model consumes a lot of money and time.
• Requirement gathering: The first step of prototype model is to collect the requirements, although the
customer does not know much about the requirements but the major requirements are defined in detail.
• Build the initial prototype: In this phase the initial prototype is built. In this some basic requirements
are displayed and user interface is made available.
• Review the prototype: When the construction of the prototype is completed, it is presented to the end
users or customer and feedback is taken from them about this prototype. This feedback is used to
further improve the system and possible changes are made to the prototype.
• Revise and improve the prototype: When feedback is taken from end users and customers, the
prototype is improved on the basis of feedback. If the customer is not satisfied with the prototype, a
new prototype is created and this process continues until the customer gets the prototype as per his
desire.
• Prototype Model is suggested to create applications whose prototype is very easy and which always
includes human machine interaction within it.
• When we know only the general objective of creating software, but we do not know anything in detail
about input, processing and output. Then in such a situation we make it a Prototype Model.
• When a software developer is not very sure about the capability of an algorithm or its adaptability to an
operating system, then in this situation, using a prototype model can be a better option.
• When the first version of the prototype model is ready, the customer himself often wants small fixes
and changes in it rather than rebuilding the system. Whereas if the system is redesigned then more
quality will be maintained in it.
• Many compromises can be seen in the first version of the Prototype Model.
• Sometimes a software developer may make compromises in his implementation, just to get the
prototype model up and running quickly, and after some time he may become comfortable with making
such compromises and may forget that it is completely inappropriate to do so.
Spiral Model
Spiral model is a software development process model. This model has characteristics of both iterative and
waterfall models. This model is used in projects which are large and complex. This model was named spiral
because if we look at its figure, it looks like a spiral, in which a long curved line starts from the center point and
makes many loops around it.
A software project goes through these loops again and again in iterations. After each iteration a more and more
complete version of the software is developed. The most special thing about this model is that risks are identified
in each phase and they are resolved through prototyping. This feature is also called Risk Handling.
Since it also includes the approaches of other SDLC models, it is also called Meta Model. It was first developed by Barry
Boehm in 1986.
In Spiral Model the entire process of software development is described in four phases which are repeated until the project
is completed.
• Determining objectives and alternate solutions: In the first phase, whatever requirements the customer
has related to the software are collected. On the basis of which objectives are identified and analysed
and various alternative solutions are proposed.
• Identifying and resolving risks: In this phase, all the proposed solutions are assessed and the best
solution is selected. Now that solution is analyzed and the risks related to it are identified. Now the
identified risks are resolved through some best strategy.
• Develop and test: Now the development of software is started. In this phase various features are
implemented, that is, their coding is done. Then those features are verified through testing.
• Review and plan for the next phase: In this phase the developed version of the software is given to the
customer and he evaluates it. Gives his feedback and tells new requirements. Finally planning for the
next phase (next spiral) is started.
• If we have to add additional functionality or make any changes to the software, then through this model
we can do so in the later stages also.
• The customer can see the look of his software only in the early stages of the development process.
• Since continuous feedback is taken from the customer during the development process, the chances
of customer satisfaction increases.
• This is the most complex model of SDLC, due to which it is quite difficult to manage.
• Experienced experts are required to evaluate and review the project from time to time.
• Using this model, the success of the project depends greatly on the risk analysis phase.
The Evolutionary development model divides the development cycle into smaller, incremental waterfall models
in which users can get access to the product at the end of each cycle.
1. Feedback is provided by the users on the product for the planning stage of the next cycle and the
development team responds, often by changing the product, plan, or process.
5. The evolutionary model suggests breaking down work into smaller chunks, prioritizing them, and then
delivering those chunks to the customer one by one.
6. The number of chunks is huge and is the number of deliveries made to the customer.
7. The main advantage is that the customer’s confidence increases as he constantly gets quantifiable
goods or services from the beginning of the project to verify and validate his requirements.
8. The model allows for changing requirements as well as all work is broken down into maintainable work chunks.
1. It is used in large projects where you can easily find modules for incremental implementation.
Evolutionary model is commonly used when the customer wants to start using the core features instead
of waiting for the full software.
2. Evolutionary model is also used in object oriented software development because the system can be
easily portioned into units in terms of objects.
1. Customer needs are clear and been explained in deep to the developer team.
2. There might be small changes required in separate parts but not a major change.
3. As it requires time, so there must be some time left for the market constraints.
4. Risk is high and continuous targets to achieve and report to customer repeatedly.
1. Adaptability to Changing Requirements: Evolutionary models work effectively in projects when the
requirements are ambiguous or change often. They support adjustments and flexibility along the course
of development.
2. Early and Gradual Distribution: Functional components or prototypes can be delivered early thanks to
incremental development. Faster user satisfaction and feedback may result from this.
3. User Commentary and Involvement: Evolutionary models place a strong emphasis on ongoing user
input and participation. This guarantees that the software offered closely matches the needs and
expectations of the user.
4. Improved Handling of Difficult Projects: Big, complex tasks can be effectively managed with the
help of evolutionary models. The development process is made simpler by segmenting the project into
smaller, easier-to-manage portions.
2. Dependence on an Expert Group: A knowledgeable and experienced group that can quickly adjust
to changes is needed for evolutionary models. Teams lacking experience may find it difficult to handle
these model’s dynamic nature.
3. Increasing Management Complexity: Complexity can be introduced by organizing and managing
several increments or iterations, particularly in large projects. In order to guarantee integration and
synchronization, good project management is needed.
4. Greater Initial Expenditure: As evolutionary models necessitate continual testing, user feedback and
prototyping, they may come with a greater starting cost. This may be a problem for projects that have
limited funding.
Iterative Model
In Iterative model we start developing the software with some requirements and when it is developed, it is
reviewed. If there are requirements for changes in it, then we develop a new version of the software based on
those requirements. This process repeats itself many times until we get our final product.
• So, in Iterative model a software is developed by following several iterations. Iteration means that we are
repeating the development process again and again. For example, we develop the first version of the
software following the SDLC process with some software requirements.
• After the first version is developed, if there is a need to change the software , then a new version is
developed with the second iteration. Now again we will see if the new version is enough, if not then we
will make changes in it with the third iteration. The iteration will be repeated until the complete
software is ready.
• The basic concept of Iterative model is that the software should be developed through repeated cycles or
what we also call iteration and only a small part of it should be developed at a time. This model was
developed to overcome the drawbacks of the classical waterfall model.
1. Requirement gathering & analysis: In this phase, all the software requirements of the customer are
collected and it is analyzed whether those requirements can be meet or not. Besides, it is also checked
whether this project will not go beyond our budget.
2. Design: In this phase the design of software is prepared. For this, various diagrams like Data Flow
diagram, class diagram, activity diagram, state transition diagram, etc. are used.
3. Implementation: Now the design of software is implemented in coding through various programming
languages. We also call this coding phase.
4. Testing: After the coding of the software is done, it is now tested so that the bugs and errors present in
it can be identified. To do this, various testing techniques like performance testing, security testing,
requirement testing, stress testing, etc. are done.
5. Deployment: Finally the software is given to the customer. After this the customer starts using that
software in his work environment.
6. Review: After the software is deployed in its work environment, it is reviewed. If any error/bug is found
or any new requirements come in front of developer, then again these phases are repeated with new
iteration and a new version is developed.
7. Maintenance: In this phase we look at customer feedback, solve problems, fix errors, update software, etc.
• Testing and debugging the software becomes easier during each iteration.
• During the software development process, additional time is devoted to development and limited time to
documentation.
• Since we have to repeat iterations many times in the software development process due to which we require more
resources.
• Since the requirements are constantly changing, we have to make frequent changes in the software.
• Due to constantly changing requirements, the budget of the project also increases and it takes more time to
complete it.
• It is very difficult to tell by what date the complete software will be ready.
Agile Model
Agile model is a combination of iterative and incremental models, that is, it is made up of iterative and incremental models.
• In earlier times, iterative waterfall model was used to create software. But in today’s time developers
have to face many problems. The biggest problem is that in the middle of software development, the
customer asks to make changes in the software. It takes a lot of time and money to make these changes.
So to overcome all these shortcomings, the agile model was proposed in the 1990s.
The agile model was created mainly to make changes in the middle of software development so that the software
project can be completed quickly.
• In the agile model, the software product is divided into small incremental parts. In this, the smallest part
is developed first and then the larger one.
• Each iteration is kept small so that it can be easily managed. And it can be completed in two-three
weeks. Only one iteration is planned, developed and deployed at a time.
• There is a customer representative in the development team to maintain contact with the customer during
software development and to understand the requirement. When an iteration is completed, stakeholders
and customer representatives review it and re-evaluate the requirements.
• Demo of working software is given to understand the customer’s requirements. That is, it does not depend only on
documentation.
• Incremental versions of the software have to be delivered to the customer representative after a few weeks.
• In this model it is advised that the size of the development team should be small (5 to 9 people) so that
the team members can communicate face to face.
• Agile model focuses on the fact that whenever any changes have to be made in the software, it should be
completed quickly.
• In agile development, two programmers work together. One programmer does the coding and the other
reviews that code. Both the programmers keep changing their tasks, that is, sometimes one does coding
and sometimes someone reviews.
Agile has the following models
1. Scrum
2. Crystal methods
3. DSDM
• In this, two programmers work together due to which the code is error free and there are very few mistakes in it.
• In this the customer representative has an idea of each iteration so that he can easily change the requirement.
• There are very few rules in this and documentation is also negligible.
• It mostly depends on the customer representative, if the customer representative gives any wrong
information then the software can become wrong.
• Only experienced programmers can take any decision in this. New programmers cannot take any decision.
• In the beginning of software development, it is not known how much effort and time will be required to create the
software.
UNIT - 2
Requirements Engineering
A systematic and strict approach to the definition, creation, and verification of requirements for a software system is
known as requirements engineering. To guarantee the effective creation of a software product, the requirements
engineering process entails several tasks that help in understanding, recording, and managing the demands of
stakeholders.
Requirements Engineering Process
Requirements Engineering Process
1. Feasibility Study
2. Requirements elicitation
3. Requirements specification
4. Requirements for verification and validation
5. Requirements management
1. Feasibility Study
The feasibility study mainly concentrates on below five mentioned areas below. Among these Economic Feasibility Study
is the most important part of the feasibility analysis and the Legal Feasibility Study is less considered feasibility analysis.
i. Technical Feasibility: In Technical Feasibility current resources both hardware software along required
technology are analyzed/assessed to develop the project.
ii. Operational Feasibility: In Operational Feasibility degree of providing service to requirements is analyzed along
with how easy the product will be to operate and maintain after deployment.
iii. Economic Feasibility: In the Economic Feasibility study cost and benefit of the project are analyzed. This means
under this feasibility study a detailed analysis is carried out will be cost of the project for development which
includes all required costs for final development hardware and software resources required, design and
development costs operational costs, and so on. After that, it is analysed whether the project will be beneficial in
terms of finance for the organization or not.
iv. Legal Feasibility: In legal feasibility, the project is ensured to comply with all relevant laws, regulations, and
standards. It identifies any legal constraints that could impact the project and reviews existing contracts and
agreements to assess their effect on the project’s execution. Additionally, legal feasibility considers issues related
to intellectual property, such as patents and copyrights, to safeguard the project’s innovation and originality.
v. Schedule Feasibility: In schedule feasibility, the project timeline is evaluated to determine if it is realistic and
achievable, deadlines are established to track progress effectively. Resource availability is assessed to ensure that
the necessary resources are accessible to meet the project schedule. Furthermore, any time constraints that might
affect project delivery are considered to ensure timely completion. This focus on schedule feasibility is crucial for
the successful planning and execution of a project.
2. Requirements Elicitation
Requirements elicitation is the process of gathering information about the needs and expectations of stakeholders for a
software system. This is the first step in the requirements engineering process and it is critical to the success of the software
development project. The goal of this step is to understand the problem that the software system is intended to solve and the
needs and expectations of the stakeholders who will use the system.
3. Requirements Specification
Requirements specification is the process of documenting the requirements identified in the analysis step in a clear,
consistent, and unambiguous manner. The goal of this step is to create a clear and comprehensive document that describes
the requirements for the software system. This document should be understandable by both the development team and the
stakeholders.
4. Requirements Verification and Validation
Requirements verification and validation (V&V) is the process of checking that the requirements for a software system are
complete, consistent, and accurate and that they meet the needs and expectations of the stakeholders. The goal of V&V is to
ensure that the software system being developed meets the requirements and that it is developed on time, within budget, and
to the required quality.
5. Requirements Management
Requirements management is the process of managing the requirements throughout the software development life cycle,
including tracking and controlling changes, and ensuring that the requirements are still valid and relevant. The goal of
requirements management is to ensure that the software system being developed meets the needs and expectations of the
stakeholders and that it is developed on time, within budget, and to the required quality.
Advantages of Requirements Engineering Process
• Helps ensure that the software being developed meets the needs and expectations of the stakeholders
• Can help identify potential issues or problems early in the development process, allowing for adjustments to be
made before significant
• Helps ensure that the software is developed in a cost-effective and efficient manner
• Can improve communication and collaboration between the development team and stakeholders
• Helps to ensure that the software system meets the needs of all stakeholders.
• Provides an unambiguous description of the requirements, which helps to reduce misunderstandings and errors.
• Helps to identify potential conflicts and contradictions in the requirements, which can be resolved before the
software development process begins.
• Helps to ensure that the software system is delivered on time, within budget, and to the required quality standards.
• Provides a solid foundation for the development process, which helps to reduce the risk of failure.
Disadvantages of Requirements Engineering Process
• Can be time-consuming and costly, particularly if the requirements-gathering process is not well-managed
• Can be difficult to ensure that all stakeholders’ needs and expectations are taken into account
• It Can be challenging to ensure that the requirements are clear, consistent, and complete
• Changes in requirements can lead to delays and increased costs in the development process.
• As a best practice, Requirements engineering should be flexible, adaptable, and should be aligned with the overall
project goals.
• It can be difficult to elicit requirements from stakeholders who have different needs and priorities.
• Requirements may change over time, which can result in delays and additional costs.
• It may be challenging to ensure that all stakeholders understand and agree on the requirements.
Feasibility Study
In software engineering, a feasibility study entails planning and evaluating every facet of a project before moving forward.
The procedure entails gathering information and assessing various project components in light of predetermined financial
and schedule limitations standards. After evaluating all project-related factors, participants will come to a consensus on
whether or not it is possible to finish this project within the allocated time frame and budget constraints. Participants will
plan how to finish the project after deciding whether it is feasible. This will involve creating documentation for each
process step using modeling techniques for software system design, dynamic flow mapping for computer application flow
design, and other techniques.
Feasibility studies can be carried out to determine the proposed project's future scope to validate this idea. Since it is
universal, it applies to all industries, and in particular, it provides a more promising future for the software engineering and
development sectors.
A feasibility study determines whether a software project will be viable. Whether a project is feasible depends largely on
how it will function in the market, what will work, what competitors have produced, and how long this product will last.
• Graphical Representation: Data Flow Diagram (DFD) use different symbols and notation to represent data flow
within system. That simplify the complex model.
• Problem Analysis: Data Flow Diagram (DFDs) are very useful in understanding a system and can be effectively
used during analysis. Data Flow Diagram (DFDs) are quite general and are not limited to problem analysis for
software requirements specification.
• Abstraction: Data Flow Diagram (DFD) provides a abstraction to complex model i.e. DFD hides unnecessary
implementation details and show only the flow of data and processes within information system.
• Hierarchy: Data Flow Diagram (DFD) provides a hierarchy of a system. High- level diagram i.e. 0-level diagram
provides an overview of entire system while lower-level diagram like 1-level DFD and beyond provides a detailed
data flow of individual process.
• Data Flow: The primary objective of Data Flow Diagram (DFD) is to visualize the data flow between external
entity, processes and data store. Data Flow is represented by an arrow Symbol.
• Ease of Understanding: Data Flow Diagram (DFD) can be easily understand by both technical and non-technical
stakeholders.
• Modularity: Modularity can be achieved using Data Flow Diagram (DFD) as it breaks the complex system into
smaller module or processes. This provides easily analysis and design of a system.
Types of Data Flow Diagram (DFD)
There are two types of Data Flow Diagram (DFD)
1. Logical Data Flow Diagram
2. Physical Data Flow Diagram
Logical Data Flow Diagram (DFD)
Logical data flow diagram mainly focuses on the system process. It illustrates how data flows in the system. Logical Data
Flow Diagram (DFD) mainly focuses on high level processes and data flow without diving deep into technical
implementation details. Logical DFD is used in various organizations for the smooth running of system. Like in a Banking
software system, it is used to describe how data is moved from one entity to another.
Physical Data Flow Diagram
Physical data flow diagram shows how the data flow is actually implemented in the system. In the Physical Data Flow
Diagram (DFD), we include additional details such as data storage, data transmission, and specific technology or system
components. Physical DFD is more specific and closer to implementation.
Components of Data Flow Diagrams (DFD)
The Data Flow Diagram has 4 components:
• Process: Input to output transformation in a system takes place because of process function. The symbols of a
process are rectangular with rounded corners, oval, rectangle or a circle. The process is named a short sentence, in
one word or a phrase to express its essence
• Data Flow: Data flow describes the information transferring between different parts of the systems. The arrow
symbol is the symbol of data flow. A relatable name should be given to the flow to determine the information
which is being moved. Data flow also represents material along with information that is being moved. Material
shifts are modeled in systems that are not merely informative. A given flow should only transfer a single type of
information. The direction of flow is represented by the arrow which can also be bi-directional.
• Warehouse (Data Store) : The data is stored in the warehouse for later use. Two horizontal lines represent the
symbol of the store. The warehouse is simply not restricted to being a data file rather it can be anything like a
folder with documents, an optical disc, a filing cabinet. The data warehouse can be viewed independent of its
implementation. When the data flow from the warehouse it is considered as data reading and when data flows to
the warehouse it is called data entry or data updating.
• Terminator (External Entity): The Terminator is an external entity that stands outside of the system and
communicates with the system. It can be, for example, organizations like banks, groups of people like customers or
different departments of the same organization, which is not a part of the model system and is an external entity.
Modelled systems also communicate with terminator.
Flow Chart
A Flowchart is a diagrammatic representation of an algorithm. Sometimes programmers use it as a program planning tool to
solve a problem. It makes use of symbols that are connected among them to indicate the flow of information and
processing. It is a convenient technique to represent a program’s control flow.
Flowchart is a graphical representation of an algorithm. Programmers often use it as a program-planning tool to solve a
problem. It makes use of symbols which are connected among them to indicate the flow of information and processing.
The process of drawing a flowchart for an algorithm is known as “flowcharting”.
Basic Symbols used in Flowchart Designs
1. Terminal: The oval symbol indicates Start, Stop and Halt in a program’s logic flow. A pause/halt is generally
used in a program logic under some error conditions. Terminal is the first and last symbols in the flowchart.
2. Input/Output: A parallelogram denotes any function of input/output type. Program instructions that take input
from input devices and display output on output devices are indicated with parallelogram in a flowchart.
3. Processing: A box represents arithmetic instructions. All arithmetic processes such as adding, subtracting,
multiplication and division are indicated by action or process symbol.
4. Decision Diamond symbol represents a decision point. Decision based operations such as yes/no question or
true/false are indicated by diamond in flowchart.
5. Connectors: Whenever flowchart becomes complex or it spreads over more than one page, it is useful to use
connectors to avoid any confusions. It is represented by a circle.
6. Flow lines: Flow lines indicate the exact sequence in which instructions are executed. Arrows represent the
direction of flow of control and relationship among different symbols of flowchart.
Advantages of Flowchart:
• Easy to understand.
Disadvantages of Flowchart:
• It is difficult to draw flowcharts for large and complex programs.
The main objective is to represent the flow of control in The main objective is to represent the processes and
the program. data flow between them.
It has only a single type of arrow is used to show the It defines the flow and process of data input, data
control flow in the flow chart. output, and storing data.
It is the view of the system at a lower level. It is the view of the system at a high level.
It deals with the physical aspect of the action. It deals with the logical aspect of the action.
It shows how to make the system function. It defines the functionality of the system.
It is not very suitable for a complex system. It is used for complex systems.
Entity-Relationship Diagrams
ER-modeling is a data modeling method used in software engineering to produce a conceptual data model of an information
system. Diagrams created using this ER-modeling method are called Entity-Relationship Diagrams or ER diagrams or
ERDs.
Purpose of ERD
o The database analyst gains a better understanding of the data to be contained in the database through the step of
constructing the ERD.
o The ERD serves as a documentation tool.
o Finally, the ERD is used to connect the logical structure of the database to users. In particular, the ERD effectively
communicates the logic of the database to users
Symbols Used in ER Model
Components of ER Diagram
ER Model consists of Entities, Attributes, and Relationships among Entities:
7. Traceability: A good SRS document includes detailed requirements and specifications, which enables traceability
throughout the software development process.
8. Testability: A good SRS document can serve as a basis for test cases and verification, which can ensure that the
software meets the requirements and specifications.
9. Improved Communication: A good SRS document can serve as a communication tool between different
stakeholders, such as project managers, developers, testers, and customers.
10. Reduced Rework: A good SRS document can help to identify and resolve issues early in the development process,
which can reduce the need for rework and improve the overall quality of the software.
Disadvantages of having a poorly written SRS include:
1. Confusion and misunderstandings between stakeholders and developers, as the requirements are not clearly
defined or are vague increased rework and change requests, as the SRS does not accurately capture the
requirements of the software system
2. Reduced quality of the final software system, as a poorly written SRS can result in requirements being missed or
not fully met
3. Reduced stakeholder satisfaction, as a poorly written SRS does not accurately capture the needs of the business
and its users
4. Reduced traceability and verifiability, as a poorly written SRS can’t be traced to other documents and artifacts and
its requirements can’t be tested and validated.
5. It is important to note that, regardless of the quality of the SRS, gathering and validating requirements is an
iterative process, that should be continuously reviewed and updated throughout the software development process.
6. Time-consuming: Creating a good SRS document can be a time-consuming process, especially for complex
software projects, which can delay the development process.
7. Changes and Updates: Changes or updates to the SRS document can cause delays in the software development
process and can be difficult to manage.
8. Lack of Flexibility: A detailed SRS document can restrict the flexibility of the development process, which can be
challenging for projects that require agile development methodologies.
9. Limited Stakeholder Involvement: The process of creating an SRS document can limit the involvement of
stakeholders in the software development process, which can lead to a lack of collaboration and input from
different perspectives.
10. Ambiguity: A poorly written SRS document can lead to ambiguity and misunderstandings, which can cause issues
throughout the software development process.
Verification Validation
Verification refers to the set of activities that Validation refers to the set of activities that ensure
ensure software correctly implements the that the software that has been built is traceable to
Definition specific function customer requirements.
It includes checking documents, designs, codes, It includes testing and validating the actual
Focus and programs. product.
Execution It does not include the execution of the code. It includes the execution of the code.
Methods used in verification are Methods used in validation are Black Box
reviews, walkthroughs, inspections and desk- Testing, White Box Testing and non-functional
Methods Used checking. testing.
It can find the bugs in the early stage of the It can only find the bugs that could not be found by
Bug development. the verification process.
Error Focus Verification is for prevention of errors. Validation is for detection of errors.
• Quality Standards and Guidelines: The SQA Plan lays out the requirements and guidelines to make sure the
programme satisfies predetermined standards for quality.
• Risk management: It is the process of recognizing, evaluating and controlling risks in order to reduce the
possibility of errors and other problems with quality.
• Standardization and Consistency: The strategy guarantees consistent methods, processes, and procedures,
fostering a unified and well-structured approach to quality assurance.
• Customer Satisfaction: The SQA Plan helps to ensure that the finished product satisfies customer needs, which in
turn increases overall customer satisfaction.
• Resource optimization: It is the process of defining roles, responsibilities, and procedures in order to maximize
resource utilization and minimize needless rework.
• Early Issue Detection: SQA Plans help identify problems early on, which lowers the expense and work involved
in fixing them.
Capability Evaluation: Capability evaluation provides a way to assess the software process capability of an organization.
The results of capability evaluation indicate the likely contractor performance if the contractor is awarded a work.
Therefore, the results of the software process capability assessment can be used to select a contractor.
Software Process Assessment: Software process assessment is used by an organization to improve its process capability.
Thus, this type of evaluation is for purely internal use.
SEI CMM categorized software development industries into the following five maturity levels. The various levels of SEI
CMM have been designed so that it is easy for an organization to build its quality system starting from scratch slowly.