Software Engineering Imp's
Software Engineering Imp's
Software Engineering Imp's
Ans: The waterfall model is useful in situations where the project requirements are well-defined
and the project goals are clear.
• It is often used for large-scale projects with long timelines, where there is little room for error
and the project stakeholders need to have a high level of confidence in the outcome.
• The waterfall model is used in situations where there is a need for a highly structured and
systematic approach to software development.
• It can be effective in ensuring that large, complex projects are completed on time and within
budget, with a high level of quality and customer satisfaction
1. Requirements Gathering and Analysis: The first phase involves gathering requirements from
stakeholders and analysing them to understand the scope and objectives of the project.
2. Design Phase: Once the requirements are understood, the design phase begins. This involves
creating a detailed design document that outlines the software architecture, user interface, and
system components.
3. Implementation and Unit Testing: The implementation phase involves coding the software based
on the design specifications. This phase also includes unit testing to ensure that each component of
the software is working as expected.
4. Integration and System Testing: In the testing phase, the software is tested as a whole to ensure
that it meets the requirements and is free from defects.
5. Deployment: Once the software has been tested and approved, it is deployed to the production
environment.
6. Maintenance: The final phase of the Waterfall Model is maintenance, which involves fixing any
issues that arise after the software has been deployed and ensuring that it continues to meet the
requirements over time. This model considers that one phase can be started after the completion of
the previous phase. That is the output of one phase will be the input to the next phase. Thus, the
development process can be considered as a sequential flow in the waterfall.
Advantages:
• Easy to understand
• Individual processing
• Properly defined
• Clear milestone
• Properly documented
Disadvantages:
• No feedback paths
• No overlapping of phases
Ans: RAD is a linear sequential software development process model that emphasizes a concise
development cycle using an element-based construction approach.
• If the requirements are well understood and described, and the project scope is a constraint, the
RAD process enables a development team to create a fully functional system within a concise time
period.
• RAD (Rapid Application Development) is a concept that products can be developed faster and of
higher quality through.
1.Business Modelling: The information flow among business functions is defined by answering
questions like what data drives the business process, what data is generated, who generates it,
where does the information go, who process it and so on.
2. Data Modelling: The data collected from business model is refined into a set of data objects
(entities) that are needed to support the business. The attributes (character of each entity) are
identified, and the relation between these data objects (entities) is defined.
3. Process Modelling: The information object defined in the data model phase are transformed to
achieve the data flow necessary to implement a business function. Processing descriptions are
created for adding, modifying, deleting, or retrieving a data object.
4. Application Generation: Automated tools are used to facilitate construction of the software; even
they use the 4th GL techniques.
5. Testing & Turnover: Many of the programming components have already been tested since RAD
emphasis reuse. This reduces the overall testing time. But the new part must be tested, and all
interfaces must be fully exercised.
3: Explain SRS in detail
Ans:
2: The SRS is developed based the agreement between customer and contractors. It may include the
use cases of how user is going to interact with software system.
4: To achieve this, we need to continuous communication with customers to gather all requirements.
Some points that can be used and should be considered to form a structure of good Software
Requirements Specification (SRS):
Introduction (Purpose of this Document, scope of the document, overview) Purpose of this
Document – At first, main aim of why this document is necessary and what’s purpose of document is
explained and described. Scope of this document – In this, overall working and main objective of
document and what value it will provide to customer is described and explained. It also includes a
description of development cost and time required.
Overview – In this, description of product is explained. It’s simply summary or overall review of
product. Functional
requirements: This may include calculations, data processing, etc. are placed in a ranked order.
Functional requirements specify the expected behaviour of the system-which outputs should be
produced from the given inputs. They describe the relationship between the input and output of the
system. For each functional requirement, detailed description all the data inputs and their source,
the units of measure, and the range of valid inputs must be specified.
SRS also includes non-functional attributes (security, scalability, data integrity and capacity),
Preliminary schedule and budget, design constrain
Ans: Coupling is defined as the strength of the relationships among modules, whereas cohesion is
defined by how the elements making up a module are related. Coupling focuses on inter-module
aspects, while cohesion emphasizes intra-module characteristics.
Coupling measures the strength of association between one module and another. Strong coupling
complicates a system, since a module is harder to understand, change, or to correct if it is extremely
interrelated with other modules. Complexity can be reduced by designing systems with weak
coupling between modules. There are several forms of coupling:
1: Low coupling
2: Controlled coupling
3: Common coupling
4: High coupling
Cohesion is a natural extension of the information hiding concept. A cohesive module performs a
single task within a software procedure, requiring little interaction with procedures being performed
in other parts of a program. In nutshell cohesive module should do just one thing. Cohesion
measures the degree of connectivity between the functions and elements of a single module.
functional
logical
procedural
communicational
sequential
informal
Testing Architecture:
Testing architecture refers to the design and structure of the testing process within a
software development project. It encompasses various components, methodologies,
tools, and techniques used to carry out testing activities effectively. Here are key
aspects of testing architecture:
1. Types of Testing:
• Functional Testing: Validating functional requirements and behaviors.
• Non-Functional Testing: Testing non-functional aspects like
performance, security, and usability.
• Manual Testing: Human-driven testing without automation.
• Automated Testing: Using tools and scripts to automate testing
processes.
• Regression Testing: Ensuring new changes do not affect existing
functionality.
• User Acceptance Testing (UAT): Testing by end-users to validate
suitability for use.
Ans: Software engineering is a discipline that focuses on the systematic design, development,
maintenance, and testing of software applications and systems. It encompasses a set of principles,
methods, tools, and best practices aimed at creating high-quality, reliable, and efficient software
solutions. Here are key aspects of software engineering:
2: Software Design: Designing software involves creating architectural blueprints, data structures,
algorithms, and interfaces that form the basis of the software system. Design principles such as
modularity, abstraction, encapsulation, and reusability are applied to create scalable and
maintainable software solutions.
3: Implementation: The implementation phase involves translating the design into executable code
using programming languages and development frameworks. Software engineers write code,
integrate components, and perform unit testing to ensure individual modules work correctly.
Testing and Quality Assurance: Software engineering includes testing methodologies and quality
assurance processes to verify and validate software functionality. This includes unit testing,
integration testing, system testing, performance testing, security testing, and user acceptance testing
(UAT).
4: Maintenance: Software engineering involves ongoing maintenance and support to address bugs,
implement updates, and enhance functionality based on user feedback and changing requirements.
Maintenance activities ensure that software remains reliable, secure, and up-to-date throughout its
lifecycle.
7: Ethical and Legal Considerations: Software engineers adhere to ethical and legal standards when
developing software. This includes respecting user privacy, ensuring data security, complying with
intellectual property rights, and following industry regulations and standards.
The flow of data of a system or a process is represented by DFD. It also gives insight into the inputs
and outputs of each entity and the process itself. DFD does not have control flow and no loops or
decision rules.
Specific operations depending on the type of data can be explained by a flowchart. It is a graphical
tool, useful for communicating with users, managers and other personnel. it is useful for analysing
existing as well as proposed system.
Symbols Used in DFD Square Box: A square box defines source or destination of the system. It is also
called entity. It is represented by rectangle. Arrow or Line: An arrow identifies the data flow i.e. it
gives information to the data that is in motion. Circle or bubble chart: It represents as a process that
gives us information. It is also called processing box. Open Rectangle: An open rectangle is a data
store. In this data is store either temporary or permanently.
Symbols Used in DFD Square Box: A square box defines source or destination of the system. It is also
called entity. It is represented by rectangle.
Arrow or Line: An arrow identifies the data flow i.e. it gives information to the data that is in motion.
Circle or bubble chart: It represents as a process that gives us information. It is also called processing
box.
Open Rectangle: An open rectangle is a data store. In this data is store either temporary or
permanently.
8: Explain CASE tool
Ans: Computer-Aided Software Engineering (CASE), in the field of Software Engineering is the
scientific application of a set of tools and methods to software which is meant to result in
highquality, defect-free, and maintainable software work products.
CASE tools refer to methods for the development of information systems among automated tools
that can be used in the software development process. The "Computer-aided software engineering"
(CASE) is used for the automated development of systems software, i.e., computer code. The CASE
functions comprise analysis, design, and coding.
CASE tools automate methods for designing, documenting, and producing structured computer code
in the desired programming language. Two key ideas of Computer Aided Software Engineering are:
The are boring of computer assistance in software development and or software maintenance
processes, and
Refactoring tools
Ans: Coding standards refer to a set of guidelines, conventions, and best practices that developers
follow when writing code. These standards ensure consistency, readability, maintainability, and
reliability of code across a software project. Here are key aspects of coding standards:
1: Naming Conventions: Standards for naming variables, functions, classes, and other elements to
make code more understandable.
2: Formatting Rules: Guidelines for code layout, indentation, spacing, and alignment to enhance
readability. Consistent formatting makes it easier for developers to understand and maintain code.
For instance, using consistent indentation (e.g., 4 spaces) and placing curly braces on new lines in
languages like Java and C++.
3: Comments and Documentation: Encouraging meaningful comments and documentation to explain
code logic, algorithms, and complex operations. Comments should clarify code intent, not duplicate
it. Documentation standards may include using tools like Javadoc or oxygen to generate API
documentation from code comments.
4: Code Structure: Defining guidelines for organizing code into modules, classes, functions, and
methods. Structuring code logically improves code comprehension and modularity.
5: Error Handling: Establishing practices for error handling, including exception handling, error
messages, logging, and graceful degradation. Consistent error handling improves code robustness
and reliability.
Documentation in software development refers to the process of creating and maintaining written
materials that describe software requirements, design, code, functionality, usage, and maintenance
procedures. Documentation serves various purposes and audiences:
Types of Documentation:
1: Requirements Documentation: Describes user needs, system requirements, use cases, and
functional specifications.
2: Design Documentation: Includes system architecture, database design, interface design, and
software design patterns.
3: Code Documentation: Comments, inline documentation, and code structure explanations to aid
developers in understanding and maintaining code.
4: User Documentation: User manuals, help guides, tutorials, and FAQs for end-users to understand
software functionality and usage.
Ans: The Capability Maturity Model Integration (CMMI) is a framework that helps
organizations improve their processes and achieve higher levels of maturity in software
development and management. It provides a structured approach for organizations to assess
and enhance their capabilities in delivering quality products and services.
The Capability Maturity Model, is a baseline of practices that should be implemented in order to
develop or maintain a product.
The product can be completely software, or just partially software. 145 The SW-CMM focuses on the
software practices whereas with the CMMI (integration), you may find both software and systems
practices. The CMMI and SW-CMM were published by the SEI.
The models are commonly used throughout the world and considered by many to be the standard
within this area. The Capability Maturity Model (or CMM) has been in use from 1991. This then
became what is known as the CMMI, the stands for integration
12: what are the characteristics of a software
Ans: Software possesses several key characteristics that distinguish it from hardware and
contribute to its functionality, usability, and versatility. Here are the main characteristics of
software:
1: Intangibility: Software is intangible, meaning it does not have a physical form or substance
that can be touched or felt. It exists as a set of instructions, code, and data stored
electronically in digital format.
2: Abstraction: Software operates on abstract concepts and models, such as algorithms, data
structures, and programming logic. It abstracts complex processes into manageable and
understandable components, hiding implementation details from users.
3: Flexibility: Software can be easily modified, updated, and customized to adapt to changing
requirements, user preferences, and technological advancements. This flexibility allows for
iterative development and continuous improvement.
4: Scalability: Software can scale to handle varying workloads, user volumes, and data sizes.
Scalability is achieved through design considerations like modular architecture, distributed
computing, and cloud-based infrastructure.
5: Portability: Software can run on different hardware platforms, operating systems, and
environments without major modifications. Portability is facilitated by standardization, cross-
platform development tools, and compatibility layers.
7: Usability: Software is designed for user interaction, offering interfaces, controls, and
features that facilitate user engagement, navigation, and task completion. Usability
considerations include user experience (UX) design, accessibility, and user feedback
mechanisms.
Ans:
1: In Database Management System, a file that defines the basic organization of a database. A data
dictionary contains a list of all files in the database, the number of records in each file, and the
names and each fields type.
2: The majority database management systems keep the data dictionary hidden from users to
prevent them from by mistake deleting its contents.
3: Data dictionaries do not hold any real data from the database, only accounting information for
managing it. Without a data dictionary, however, a database management system cannot have right
to use data from the database.
4: The analysis model encompasses representations of data objects, function, and control. in each
representation data objects and control items play a role Therefore it is necessary to provide an
organized approach for representing the characteristics of each data object and control item.
5: This is accomplished with the data dictionary. Date of Birth Date of Birth Person has one Date of
Birth Date of Birth owned by one Person 52 The data dictionary has been proposed as a formal
grammar for describing the content of objects defined during structural analysis.
6: This important model notation has been defined in the following manner: The data dictionary is an
organized listing of all data elements that are pertinent to the system, with precise, rigorous
definitions so that both user and system analyst will have a common understanding of inputs,
outputs, components of stores and intermediate calculations.
Ans: The spiral model is a software development process joining elements of both design and
prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. Also
known as the spiral lifecycle model, it is SDM a systems development method used in information
technology (IT). This model of development combines the features of the prototyping model and the
waterfall model. The spiral model is intended for large, expensive and complicated projects
Customer communication - tasks required to set up effective communication between developer
and customer.
Planning - tasks required to define resources, timelines, and additional project related information.
Risk analysis - responsibilities required to assess both technical and managing risks.
Construction and Release - responsibilities required to construct, test install and provide user
support (e.g., documentation and training).
Advantages
Disadvantages
Ans: Agile methodology, often referred to as Agile software development or Agile programming, is an
iterative and flexible approach to software development that emphasizes collaboration, adaptability,
customer feedback, and continuous improvement. It aims to deliver high-quality software solutions
efficiently by responding to changing requirements and customer needs. Here are the key aspects of
Agile methodology:
1: Iterative and Incremental Development: Agile projects are divided into small iterations or
increments, typically lasting 1-4 weeks, called sprints. Each sprint focuses on delivering a set of
prioritized features, functionalities, or user stories.
4: Adaptability: Agile teams embrace change and are responsive to evolving requirements, market
dynamics, and user feedback. They prioritize flexibility, adaptability, and quick response to changes
over rigid planning and documentation.
5: Emphasis on Working Software: Agile values working software as the primary measure of progress.
Teams focus on delivering functional increments of the product at the end of each sprint, ensuring
tangible results and value to stakeholders.
6: Cross-Functional Teams: Agile teams are empowered to make decisions, solve problems, and
deliver solutions independently. They collaborate closely, share knowledge, and collectively own the
responsibility for project success.
7: Continuous Integration and Testing: Agile promotes continuous integration (CI) and continuous
testing (CT) practices, where code changes are integrated frequently, and automated tests are run
regularly to ensure software quality, stability, and reliability.
Ans:
1: Software Quality Assurance (SQA) is defined as a planned and systematic approach to the
evaluation of the quality of and adherence to software product standards, processes, and
procedures.
2: SQA includes the process of assuring that standards and procedures are established and are
followed throughout the software acquisition life cycle.
3: Compliance with agreed-upon standards and procedures is evaluated through process monitoring,
product evaluation, and audits. Software development and control processes should include quality
assurance approval points, where an SQA evaluation of the product may be done in relation to the
applicable standards.
4: Quality Assurance (QA) is the application of planned, systematic quality activities to ensure that
the project will utilize all processes needed to meet requirements. A quality assurance department,
or similar organization, often oversees quality assurance activities.
5: QA support, may be provided to the project team, the management of the performing
organization, the customer or sponsor, and other stakeholders, which are not actively involved in the
work of the project.
6: QA also provides an umbrella for another important quality activity, continuous process
improvement. Continuous process improvement provides an iterative means for improving the
quality of all processes.
7: Continuous process improvement reduces waste and non-value-added activities, which allows
processes to operate at increased levels of efficiency and effectiveness. Process improvement is
distinguished by
Ans:
1: Software Configuration Management, also known as Change Control Management The dynamic
nature of the majority business activities causes change in software or system.
2: Changes require well-formulated and well-documented procedures to prevent the manipulation of
programs for unauthorized purposes.
3: The main objective of configuration management (or change control) is to get the right change
installed at the right time.
4: Change control concerns should be identified so that proper control mechanisms can be
established to deal with the concerns.
5: Software configuration management is (SCM) is an umbrella activity that is applied throughout the
software process. SCM activities are developed to identify change, control change, ensure that
change is being properly implemented and report changes to others who are interested.
Tools used for Software Configuration Management There are many automated SCM tools are
available to help /control SCM. Main Frame Tools
Ans: In structured programming, we sub-divide the whole program into small modules so that the
program becomes easy to understand.
The purpose of structured programming is to linearize control flow through a computer program so
that the execution sequence follows the sequence in which the code is written.
The dynamic structure of the program than resemble the static structure of the program. This
enhances the readability, testability, and modifiability of the program. This linear flow of control can
be managed by restricting the set of allowed applications construct to a single entry, single exit
formats.
✓ Iteration Statements: "Iteration"; a statement or block is executed until the program reaches a
certain state, or operations have been applied to every element of a collection. This is usually
expressed with keywords such as while, repeat, for or do until Often it is recommended that each
loop should only have one entry point (and in the original structural programming, also only one exit
point, and a few languages enforce this).
19: what is requirement analysis
Ans:
2: The SRS is developed based the agreement between customer and contractors. It may include the
use cases of how user is going to interact with software system.
4: To develop the software system, we should have clear understanding of Software system. To
achieve this, we need to continuous communication with customers to gather all requirements.
Some points that can be used and should be considered to form a structure of good Software
Requirements Specification (SRS):
Introduction (Purpose of this Document, scope of the document, overview) Purpose of this
Document – At first, main aim of why this document is necessary and what’s purpose of document is
explained and described.
Scope of this document – In this, overall working and main objective of document and what value it
will provide to customer is described and explained. It also includes a description of development
cost and time required.
Overview – In this, description of product is explained. It’s simply summary or overall review of
product.
Ans: Software design is the process of defining the architecture, structure, components, interfaces,
and behaviour of a software system to meet specified requirements effectively and efficiently. It
involves translating requirements into a design solution that can be implemented and tested.
Software design encompasses multiple levels, each focusing on different aspects of the system. Here
are the main levels of software design:
1: Architectural Design: Architectural design is the highest level of software design, focusing on
defining the overall structure, components, and relationships of a software system.
2: High-Level Design High-level design elaborates on the architectural design by detailing the
subsystems, modules, and components identified in the architecture.
3: Detailed Design: Detailed design is the lowest level of software design, focusing on specifying the
internal logic, algorithms, data structures, and implementation details of individual modules or
components.
Ans: In software management, change refers to any modification, update, or revision made to a
software system, including its requirements, design, code, testing, or deployment. The role of change
in software management is crucial, as it is an inevitable and ongoing process that helps ensure the
software system remains relevant, efficient, and effective
1: Adapting to changing requirements: Software systems are often developed to meet specific
business needs, which can change over time. Change management helps ensure that the software
system adapts to these changing requirements, ensuring it remains aligned with business objectives.
2: Improving quality and reliability: Changes can be made to improve the quality and reliability of the
software system, such as fixing bugs, optimizing performance, or enhancing security.
3: Enhancing functionality: Changes can add new features, functionality, or capabilities to the
software system, making it more useful and valuable to users.
4: Responding to user feedback: Changes can be made in response to user feedback, ensuring that
the software system meets user needs and expectations.
5: Staying competitive: In a rapidly changing technology landscape, changes can help software
systems stay competitive by incorporating new technologies, trends, or innovations.
6: Managing technical debt: Changes can help address technical debt, which refers to the cost of
implementing quick fixes or workarounds that need to be revisited later.
7: Maintaining compliance: Changes can ensure that the software system complies with changing
regulatory requirements, industry standards, or organizational policies.
8: Reducing costs: Changes can help reduce costs by optimizing system performance, improving
resource utilization, or streamlining processes.
9: Improving maintainability: Changes can make the software system easier to maintain, update, and
modify over time.
10: Enhancing user experience: Changes can improve the user experience, making the software
system more intuitive, user-friendly, and engaging
22: what is web-based software and explain web services
Ans: Web-based software refers to applications, systems, or services that are accessed and used over
the internet through web browsers or web-enabled devices. These software solutions are hosted on
web servers and delivered to users via the World Wide Web.
1: Web Applications: Examples include web-based email services (e.g., Gmail, Outlook), social media
platforms (e.g., Facebook, Twitter), online banking portals, e-commerce websites (e.g., Amazon,
eBay), project management tools (e.g., Trello, Asana), and customer relationship management (CRM)
systems (e.g., Salesforce, HubSpot).
2: Web Services: Web services are software components or APIs that provide functionality or data
access over the internet, allowing applications to communicate and interact with each other
seamlessly. Examples include RESTful APIs, SOAP (Simple Object Access Protocol) services, XML-RPC
(XML Remote Procedure Call) services, and JSON (JavaScript Object Notation) APIs.
Web services are software components or application programming interfaces (APIs) that enable
communication and data exchange between different software systems and platforms over the
internet. They provide a standardized way for applications to interact and share data, regardless of
their underlying technologies, programming languages, or operating environments.
1: SOAP Web Services: SOAP (Simple Object Access Protocol) is a protocol for exchanging structured
and typed information in XML format over the internet. SOAP web services use a standardized
message format, WSDL for service description, and typically communicate over HTTP or other
protocols.
2: RESTful Web Services: REST (Representational State Transfer) is an architectural style for designing
networked applications based on simple and stateless interactions between clients and servers.
RESTful web services use standard HTTP methods (GET, POST, PUT, DELETE) and represent resources
using URLs (Uniform Resource Locators) and JSON or XML formats.
3: XML-RPC and JSON-RPC Services: XML-RPC (XML Remote Procedure Call) and JSON-RPC are
protocols for calling procedures or methods remotely over the internet using XML or JSON formats,
respectively.