FAQ on Software Engineering
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 2
State the difference between program an 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 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: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.
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.
This category includes software built into non-computer devices.
- Automotive: Software controls everything from engine management to infotainment systems in modern cars.
- Smart Devices: The software in smart homes, appliances, and wearable technology.
- 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
Explain the importance of collecting requirements. How many types of System Requirements are there in Software Engineering.
- Collecting requirements is the foundational step in software engineering.
- It ensures the final product meets the needs of its users and stakeholders.
- Without a clear understanding of what needs to be built, a project is likely to fail, resulting in a product that is either unusable, over budget, or delivered late.
- There are typically two main types of requirements in software engineering: functional and non-functional.
Functional Requirements:
- These requirements describe what the software must do.
- They define the specific functions, behaviors, and features of the system.
- They are often written as user stories or statements that describe a specific task the user can perform.
- Without functional requirements, developers don't know what to incorporate in the software being built
- Some of the examples of functional requirements are:
- The system shall allow users to log in with a username and password.
- The system shall generate a sales report.
- The system shall process a credit card payment.
Non-Functional Requirements (or Quality Attributes)
- These requirements describe how the system performs its functions.
- They define the quality, constraints, and characteristics of the system, rather than its specific behaviors.
- They are crucial for ensuring the software is high-quality and reliable.
- A system that is slow, insecure, or hard to use, even if it has all the right functions, will be considered a failure. They often define the project's success metrics beyond just functionality.
- Here are some examples of non-functional products:
- Performance: The system shall load a webpage in less than 2 seconds.
- Security: The system shall encrypt all user data.
- Usability: The system shall have a user-friendly interface that can be learned in under 10 minutes.
- Scalability: The system shall support up to 10,000 concurrent users.
Question 6
Discuss the significance and use of Requirements Engineering. What are the problems Analysts face during the formation of requirements?
- Requirements Engineering is a systematic process of discovering, documenting, analyzing, and managing software requirements.
- Its significance lies in ensuring that the software to be developed meets the actual needs of its users and stakeholders.
Analysts, or requirements engineers, often face several significant challenges during the requirements-gathering process:
Stakeholder Communication Issues:- Unclear or Conflicting Needs: Different stakeholders may have conflicting requirements, and it's the analyst's job to resolve these disputes.
- Tacit Knowledge: Users might not be able to articulate their needs because they are so familiar with their work. They often struggle to describe what they do and need until they see something concrete.
- Vague Language: Requirements are often written using vague terms like "fast," "easy to use," or "secure." These are subjective and can be interpreted differently by team members.
- Missing Requirements: Sometimes, critical requirements are simply forgotten or assumed, only to be discovered late in the development cycle when they are much more expensive to fix.
- Resistance to Change: Stakeholders may resist new systems, making it difficult to get their full cooperation and honest input.
- Political Agendas: Different departments or individuals may have hidden agendas that influence the requirements, sometimes to the detriment of the project's overall success.
Question 7
What do you understand with the term "Requirements Elicitation"? Discuss any two techniques of requirements elicitation.
- The process of investigating and learning about a system's requirements from users, clients, and other stakeholders is known as requirements elicitation.
- Requirement Elicitation can be successful only through an effective customer-developer partnership; It is needed to know what the users require.
- Requirements elicitation involves the identification, collection, analysis, and refinement of the requirements for a software system.
- The objective of conducting an interview is to understand the customer's expectations of the software.
- It is impossible to interview every stakeholder hence representatives from groups are selected based on their expertise and credibility.
- Interviews may be open-ended or structured:
- In open-ended interviews, there is no pre-set agenda. Context-free questions may be asked to understand the problem.
- In a structured interview, an agenda of fairly open questions is prepared. Sometimes a proper questionnaire is designed for the interview.
- Brainstorming Sessions is a group technique
- It is intended to generate lots of new ideas hence providing a platform to share views
- A highly trained facilitator is required to handle group bias and conflicts.
- Every idea is documented so that everyone can see it.
- Finally, a document is prepared which consists of the list of requirements and their priority if possible.
Question 8
Describe the various steps of Requirements Engineering. Is it essential to follow these steps?
- Requirements Engineering is the systematic process of gathering, documenting, and managing the needs and constraints of stakeholders throughout a software project's lifecycle.
- Following these steps is essential as it forms the foundation of a successful project, ensuring that the final product aligns with user expectations and business goals.
- Skipping or poorly executing these steps can lead to project failure due to issues like scope creep, budget overruns, and missed deadlines.
The Requirements Engineering process is often iterative, meaning the steps may be repeated and revisited as the project evolves. The core steps are:
Requirements Elicitation: 👂
- This is the process of gathering information from stakeholders.
- It involves understanding their needs, wants, and constraints related to the new software system.
- Techniques like interviews, surveys, workshops, and observation are used to uncover both explicit and implicit requirements.
Requirements Analysis: 🧠
- Once requirements are gathered, this step involves examining them to identify conflicts, ambiguities, and inconsistencies.
- The goal is to refine the raw information into a clear, concise, and complete set of requirements.
- This is where the Analysts prioritize and group requirements, as not all of them will have equal importance.
Requirements Specification: ✍️
- This step is about documenting the analyzed requirements in a formal and structured way.
- The primary output is typically a Software Requirements Specification (SRS) document.
- This document serves as a blueprint for the development team and includes details on both functional requirements (what the system should do) and non-functional requirements (how the system should perform).
Requirements Validation: ✅
- Before development begins, the documented requirements must be validated.
- This means checking that they are complete, consistent, and accurate and that they truly meet the stakeholders' needs.
- Validation can involve reviews, prototyping, and generating test cases to ensure the requirements are feasible and testable.
Requirements Management: 🗓️
- This is an ongoing activity throughout the project lifecycle.
- It involves tracking requirements, managing changes, and maintaining traceability between requirements, design, and testing.
- Requirements often change during a project, and this step ensures that any modifications are handled in a systematic and controlled manner to prevent "scope creep" and project deviations.