Search This Blog

Wednesday, 20 August 2025

Questions and Answers on SE (UNIT I)

0 comments

FAQ on Software Engineering (Unit 1)


Multiple Choice Questions:

1. Software is defined as ___________
a) Set of programs, documentation & configuration of data
b) Set of programs
c) Documentation and configuration of data
d) None of the mentioned
 


2. Software is a product that can be ___________
a) manufactured
b) programmed
c) engineered or developed
d) created


3. What is Software Engineering?

a) Designing a software
b) Testing a software
c) Application of engineering principles to the design and development of software
d) None of the above


4. __________ is not suitable for accommodating any change?
a) RAD Model
b) Waterfall Model
c) Build & Fix Model
d) Prototyping Model


5. The extent to which software performs its intended functions without failure, is termed as ____________.
a) Robustness
b) Correctness
c) Reliability
d) Accuracy


6. A _____ is an outline of a process that keeps develop successful information systems

a) System Development Life Cycle
b) CASE tool
c) Phased Conversion
d) 
Success Factors


7. In Spiral Model of software development, the primary determinant in selecting activities in each iteration is ______________.
a) Iteration Size
b) Cost
c) Adopted Process such as Rational Unified Process or Extreme Programming
d) Risk



Descriptive Questions
Question 1:

Define Software and the role of Software Engineering in Software Development.
  • Software is a collection of programs, data structure, and documents.
  • Software is an important integrated part of modern computers and automated systems.   
  • Software components are widely different from hardware as follows:
    • They do not age with continuous use but grow outdated with changing technology. 
    • They are custom made, and hence termed 'developed' and not 'manufactured'. 
Software engineering involves different people with diversified roles in the development process. They include software users, domain experts, analysts, technology experts, designers, programmers, software testers, and support staff. 

Software engineering helps all those who play some or other role in the development  process to perform it well and in a systematic manner.  Software engineers, like other professionals, should follow a set codes of ethics in their work and deliverables.

Software development suffers from a huge number of myths about the development process.  High cost of development, slips of schedules, management controls over technical aspects, and customer satisfaction are some of the major challenges faced by a software development organization. 

Question 2:

What are the various characteristics of Software?

Some of the characteristics of software are:
  • Reliability: It is a characteristics of software that refers to its ability to perform what it was designed to do accurately and consistently over time.
  • Usability (User-friendly): It refers to the extent to which the software can be used with ease. The amount of effort or time required to learn how to use the software.
  • Efficiency: It refers to the ability of the software to use system resources in the most effective and efficient manner.
  • Flexibility: It refers to how simple it is to improve and modify the software.
  • Maintainability: It refers to how easily a software system can be modified to add feature, improve speed, or repair faults.
  • Portability: It refers to how well the software can work on different platforms or situations without making major modifications.
  • Integrity: It refers to how well the software maintains the accuracy and consistency of data throughout its cycle.

Question 3:

Discuss the major areas of applications of software.

Software has become an integral part of modern life, with applications in virtually every industry and aspect of daily living. The major areas can be categorized as follows:

Business and Productivity:

This is one of the largest application areas. Software in this category is used to streamline operations, manage resources, and improve efficiency. This includes:

  • Enterprise Resource Planning (ERP): Systems that integrate various business processes, such as finance, human resources, and supply chain management.
  • Customer Relationship Management (CRM): Software used to manage interactions with current and potential customers.
  • Office Automation: Applications like word processors (Microsoft Word), spreadsheets (Excel), and presentation tools (PowerPoint) that are essential for daily office tasks.

Scientific and Engineering:

Software is crucial for research, analysis, and design in scientific and engineering fields.

  • CAD/CAM: Computer-Aided Design and Computer-Aided Manufacturing software is used to design and manufacture physical products.
  • Simulations Software is used to model and simulate complex systems, from weather patterns to nuclear reactions.
  • Data Analysis: Tools like MATLAB and R are used to analyze large datasets and perform statistical computations.

Embedded Systems and IoT:

This category includes software built into non-computer devices.

  • Automotive: Software controls everything from engine management to seat belt monitoring in modern cars.
  • Smart Devices: Embedded software is used in smart homes appliances and wearable devices.
  • Robotics: Software is used to program and control robots for manufacturing, exploration, and other tasks.


Question 4:

Distinguish between generic and customized software products.  Which one has large share of market and why?

  • Generic software products are developed for a wide range of customers with similar needs, while customized software products are created specifically for a single customer to meet their unique requirements.
  • Generic software products have a much larger market share than customized software.
  • The primary reason is the economies of scale
    • Generic software can be sold to millions of users, spreading the initial development cost across a massive customer base. 
    • This allows for a lower price point, making it accessible to a wider audience, from individuals to small businesses and large corporations. 
    • The broad appeal and lower cost lead to a higher volume of sales and, consequently, a larger overall market presence. 
  • In contrast, customized software serves a niche market and is typically very expensive, limiting its adoption to organizations that cannot find a suitable generic solution.


Question 5:

What are myths in software development? Identify the software myths related to management and practitioners.

  • Software myths are common, but often false beliefs about the software development process. 
  • They arise from a lack of knowledge, an outdated understanding of the industry, or unrealistic expectations. 
  • These misconceptions can lead to poor decision-making, project failures, and a great deal of frustration for everyone involved.

Management Myths

  • These myths are often held by managers, customers, and other stakeholders who are responsible for the business and strategic side of a project. 
  • They stem from a desire for control and predictability in a process that is often complex and unpredictable.
We can assess the quality of the software only after it's running:

  • This is false. Quality can and should be evaluated at every stage of the software development life cycle, from requirements analysis to design and coding. 
  • Formal technical reviews, for example, can catch errors and flaws early, when they're much easier and cheaper to fix.
Outsourcing is a surefire way to reduce costs:
  • While outsourcing can be cost-effective, it introduces new challenges like communication barriers, time zone differences, and potential quality control issues. 
  • Without strong management and clear contracts, these issues can lead to unexpected costs and project delays, making the outsourced project more expensive than an in-house one.

Practitioner Myths

  • These myths are commonly held by software developers and engineers themselves. 
  • They often relate to the day-to-day work of coding and a misunderstanding of the broader software development process.

The job is done once the code is delivered and it runs:
  • A practitioner's work is far from over when the code is released. 
  • The majority of a software's life cycle is spent in the maintenance phase, which includes fixing bugs, adapting to new environments, and adding new features.
Software development is just about coding:
  • This myth oversimplifies the developer's role. 
  • In reality, practitioners spend a significant amount of time on non-coding tasks, such as gathering requirements, designing architecture, writing documentation, and testing. 
  • Effective software development is a multi-faceted process that requires a range of skills beyond just programming.
The only deliverable in a software project is the final product: 
  • This is a dangerous myth. Important deliverable like design documents, test plans, and user manuals are essential for a project's long-term success. 
  • Without proper documentation, the software becomes very difficult to maintain and understand for future developers.


Question 6:

Define the concept of Software Engineering and its significance in doing Software Development.

  • Software engineering is the systematic, disciplined, and quantifiable approach to the design, development, testing, and maintenance of software. 
  • It applies engineering principles to the software creation process to ensure that the final product is reliable, efficient, and meets user requirements.
  • Software development is the actual creation of software, which involves tasks like coding, debugging, and testing. 
While software development is a key part of software engineering, it is not the whole picture.
  • Software engineering provides the framework and methodology to guide and manage the entire software development life cycle, from initial concept to final delivery and beyond.
  • Software engineering is crucial for software development, especially for large, complex projects, because it introduces structure and discipline. 
  • Without it, software development can be an unstructured, inefficient, and often chaotic process


Question 7:

Define Software Engineering. Is it an art, craft or science? Justify your answer.

  • Software Engineering is a systematic, disciplined, and quantifiable approach to the development, operation, and maintenance of software. 
  • It applies engineering principles to the creation of software, aiming for the production of high-quality, reliable, and cost-effective software products.
  • Software engineering is a science because it relies on fundamental principles and theories. 
    • It uses scientific methods to analyze problems, model systems, and predict outcomes. 
    • Concepts like algorithms, data structures, and computational complexity are based on mathematical and logical foundations. 
    • It involves systematic analysis, experimentation, and the application of proven techniques to ensure predictable and reliable results. 

     

    Question 8:

    State the difference between program and software.  What is the need for documentation in Software Engineering?

    • A program is a set of instructions written in a programming language that performs a specific task. 
    • Software is a much broader term that includes the program itself, along with all associated documentation, data, and configuration files needed for it to operate correctly.
    • Documentation is essential in software engineering for several reasons, as it serves as a form of communication and a record of the project.
    • Some of the benefits of documentation in software engineering are as follows:
      • Maintenance and Evolution: It helps developers understand the system's design, code structure, and functionality, making it easier to fix bugs, add new features, or update the software over time.
      • Knowledge Transfer: It allows new team members to quickly get up to speed on a project without extensive one-on-one training. This is crucial for long-term projects and when team members leave.
      • User Support: Documents, such as user manuals and help files, are vital for end-users to understand how to use the software effectively. Without it, the software may be unusable for its intended audience.
      • Quality Assurance: Documentation of requirements and design helps in the testing phase by providing a clear reference point for what the software is supposed to do. This ensures that the final product meets the specified requirements.
      • Project Management: It provides a historical record of decisions, changes, and project milestones, which is valuable for auditing, project management, and future planning.


    Question 9:

    Outline the four layers of the layered approach in Software Engineering.

    The four layers of the layered approach in software engineering, often visualized as a pyramid, are:

    Quality Focus: 
    • This is the base of the pyramid consisting four layers of software engineering.
    • This is the foundational layer. 
    • It represents the commitment to quality that underpins all software engineering activities. 
    • This includes quality assurance, testing, and a focus on producing a product that is reliable and meets user expectations.  
    Process: 
    • This layer is built upon the quality focus. 
    • It defines the framework or roadmap for how software is developed. 
    • A software process includes the steps, tasks, and activities required to create and deliver a software product, such as requirements analysis, design, coding, and deployment.

    Methods: 
    •  This layer sits on top of the process. 
    • Methods provide the "how-to" for the process. 
    • They are the specific techniques and approaches used to accomplish software engineering tasks. 
    • Examples include object-oriented design, structured analysis, and various testing methodologies.  
    Tools: 
    • This is the top, outermost layer. 
    • Tools are the automated or semi-automated systems and software that support the methods and the overall process. 
    • They help to automate tasks, manage complexity, and improve efficiency. 
    • Examples include code editors, compilers, version control systems, and project management software.


    Question 10:

    List and explain the activities defined in the software process framework.

    The software process framework defines the fundamental activities common to all software processes. These activities are:

    1. Communication: This is the first step and involves understanding the project requirements and goals. It establishes a collaborative relationship between the client and the developer.

    2. Planning: This activity establishes a plan for the entire project. It includes estimating resources, timelines, and costs, as well as defining project risks and management strategies.

    3. Modeling: This involves creating models or representations of the software. It includes two major steps: requirements analysis (understanding what the software needs to do) and design (how the software will be built).

    4. Construction: This is the core technical activity. It involves coding the software and then testing it to ensure it meets the requirements.

    5. Deployment: This involves delivering the software to the customer, getting their feedback, and making any necessary adjustments or maintenance.


    Question 11:

    Explain SDLC and its Phases.

    • SDLC stands for Software Development Life Cycle
    • SDLC defines the phases of software development involved in developing software
    • 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. 

    Following are the phases of SDLC:

    • Planning and Requirement Analysis: This is where we figure out the project’s goals, understand what users need, and set clear expectations for what the software should do.
    • Designing Architecture: At this stage, we build a blueprint for the software, deciding on the overall structure and the technical details to make sure it meets the requirements.
    • Developing Product: This is where the coding happens, turning the design into a working product by writing the actual software.
    • Product Testing and Integration: Now, we test the software for bugs, check that everything works together smoothly, and make sure all the parts are integrated properly.
    • Deployment and Maintenance of Products: Finally, the software is deployed for use, and we continue to monitor and maintain it to fix any issues and keep it running smoothly over time.


    Question 12:

    What are the various models available for SDLC?

    Here are the models which is available for the SDLC:

    Waterfall Model: 

    • This is a straightforward, step-by-step process where each phase must be finished before moving on to the next. 
    • It's ideal for projects with clear and fixed requirements from the start.

    V-Model: 

    • Also called the Verification and Validation model, this approach focuses on testing each part of the development process as you go.
    • For every phase of development, there's a corresponding testing phase.

    Incremental Model: 

    • Instead of developing everything at once, this model breaks the software into smaller, manageable pieces or "increments." 
    • These pieces are developed and delivered one at a time, allowing users to get a working version early on.

    RAD Model: 

    • This model focuses on getting the software up and running quickly through prototypes and constant user feedback. 
    • It works well for projects with clear user requirements and tight deadlines.

    Iterative Model: 

    • In this approach, development happens in cycles. 
    • After each cycle, a version of the software is tested, feedback is gathered, and improvements are made in the next cycle.

    Spiral Model: 

    • This model combines design and prototyping while focusing heavily on risk assessment. 
    • It involves repeating phases of planning, design, development, and testing with each loop, addressing any risks along the way.

    Prototype model: 

    • Here, a working version of the product (prototype) is created early on. 
    • This allows users to interact with it and give feedback, which helps shape the final product.

    Agile Model: 

    • Agile is all about flexibility. Development happens in short bursts, or sprints, with constant feedback from the customer. 
    • This model allows for changes at any stage, making it adaptable and responsive to evolving needs.


    Question 13:

    Analyze the performance of Waterfall Model and its limitations.

    • The Waterfall Model is a traditional, linear, and sequential software development process. 
    • Like a real waterfall, it flows downward through distinct phases: requirements analysis, system design, implementation (coding), testing, deployment, and maintenance. 
    • Software Engineers must complete each phase before they can begin the next, with no overlap between them. 
    • This approach is highly structured, easy to understand, and relies on extensive upfront planning.

    The Waterfall Model's performance is strongest in specific scenarios, primarily due to its rigid structure.

    • Predictability and Control: With all requirements documented and a detailed plan created at the beginning, the project's timeline and budget are highly predictable. This makes it easier for project managers to track progress and for stakeholders to know what to expect and when.
    • Clear Documentation and Structure: Each phase has specific deliverable and well-defined milestones. This results in thorough documentation that is easy for new team members to understand and use, which can be particularly useful for long-term maintenance.

    While its rigidity is a strength in some cases, it's also the Waterfall Model's biggest weakness in most modern software development environments.

    • Lack of Flexibility: This is the most significant limitation. If requirements change or a new need arises after a phase is completed, it's extremely difficult, costly, and time-consuming to go back and make changes. It essentially means starting over or causing major disruptions.
    • Late Bug Detection: Testing is a late phase, occurring only after all the code has been written. This means that any design flaws or errors from earlier stages are not discovered until a large amount of work has already been completed, making them difficult and expensive to fix.


    Question 14:

    Comment on the Incremental Model of software development. Express its advantages and disadvantages.

    • The Incremental Model is a software development life cycle model where the software is developed in small, manageable increments. 
    • Each increment delivers a portion of the complete functionality, and the final product is built by combining all the increments.

    Advantages:

    • Rapid delivery of a working system: The customer gets to use a working version of the software early in the process.

    • Less risk: The risk of project failure is lower because each increment is a smaller, more manageable project.

    • Customer feedback is incorporated: Changes requested by the customer can be implemented in later increments.

    Disadvantages:

    • Requires careful planning: The system's overall architecture must be well-defined from the start to ensure all increments can be integrated seamlessly.

    • Risk of losing architectural coherence: If not managed properly, the system can become fragmented and difficult to maintain.


    Question 15:

    What are the advantages of iterative development? Compare iterative development with incremental delivery approach.

    • Iterative development is an approach to software development where a system is built and refined through repeated cycles, or iterations. 
    • Instead of a single, linear process, you start with a simple, incomplete version of the software and then iteratively add features and improve upon it until the final, complete product is ready. 
    • This model is highly flexible and well-suited for projects with unclear or changing requirements.
    Advantages of Iterative Development
    • Early Risk Identification: By developing a working prototype early on, teams can identify and address potential risks and issues (like design flaws or technical challenges) much sooner than in a linear model.
    • Flexibility and Adaptability: This approach allows for changes in requirements to be incorporated easily in subsequent iterations. This is critical in dynamic environments where customer feedback or market demands evolve.
    • Customer Involvement: Users and stakeholders can provide feedback on a working prototype after each iteration. This continuous feedback loop ensures the final product meets their needs and increases customer satisfaction.
    • Faster Time-to-Market: Although the full product isn't released at once, a basic, working version can be delivered quickly, allowing the business to get a product to market and start getting value sooner.
    • Improved Quality: With each cycle, the team learns from previous iterations, allowing them to refine the design, fix bugs, and improve the overall quality of the software.
    Iterative vs. Incremental Development

    While the terms "iterative" and "incremental" are often used together, they represent distinct concepts. The key difference lies in the focus of each cycle:


    Question 16:

    Explain the Spiral Model and compare it with the Incremental Model.

    • The Spiral Model combines the iterative nature of prototyping with the systematic, controlled aspects of the Waterfall model. 
    • It is a risk-driven approach where a project spirals outwards from a central point, with each loop representing a phase of the development process. 
    • Each loop consists of four main activities: planning, risk analysis, engineering, and evaluation.

    Spiral Model:

    • Focus: Primarily focused on risk management,
    • Structure: A series of iterative loops, with risk analysis at the heart of each loop.
    • Best For: Large, high-risk projects.

    Incremental Model:

    • Focus: Primarily focused on delivering working functionality in small, manageable increments. 
    • Structure: A series of mini-Waterfalls, each producing a new increment of the software.
    • Best For: Projects with well-defined requirements that can be delivered in parts.


    Question 17:

    Compare Agile Development with the traditional Waterfall approach.

    FeatureAgile DevelopmentWaterfall Model
    ApproachIncremental and iterative.Linear and sequential.
    FlexibilityHighly flexible and adaptable to changes.Rigid; difficult and costly to change requirements once a phase is complete.
    Working ProductDelivers a working product early and frequently.A working product is only available at the end of the project.
    Customer InvolvementHigh and continuous involvement.Limited involvement, typically at the beginning and end.
    DocumentationMinimal, focusing on working software.Extensive and detailed documentation.
    RiskRisks are handled iteratively throughout the project.Risks are often identified late in the process.


    Leave a Reply