Q.2. (i) What are the essential attributes of a good software? A professionally developed software must possess four essential attributes to be considered "good." Maintainability: The software must be written in a way that allows it to evolve to meet changing customer needs. Dependability and Security: It must be reliable, secure, and not cause physical or economic damage in the event of system failure. Efficiency: It should not waste system resources such as memory and processor cycles, ensuring fast response times. Acceptability: The software must be understandable, usable, and compatible with the systems used by its intended users.
Q.2. (ii) Discuss how the use-case can serve as an important source of information for design. Use-cases describe the system's behavior purely from an external user's perspective, mapping out exactly how a user interacts with the system to achieve a specific goal. For a designer, these are invaluable because they translate abstract requirements into concrete interaction scenarios. By analyzing a use-case, a designer can easily identify the necessary user interface elements, the underlying software classes required to handle the interaction, and the flow of data needed to ensure the system responds correctly to the user's actions.
Q.2. (iii) Differentiate between Structured Analysis and Object Oriented analysis. Structured Analysis is a traditional approach that views a system as a series of processes; it separates the system's data from the functions that manipulate that data, typically visualizing it using Data Flow Diagrams (DFDs). In contrast, Object-Oriented (OO) Analysis views the system as a collection of interacting real-world entities called "objects." It combines both data (attributes) and processes (methods) into these single objects, typically visualizing the system using UML diagrams like Class and Use-Case diagrams.
Q.2. (iv) What are the main reasons for any software failure? Software failures rarely happen just because of bad coding; they usually stem from process breakdowns. The primary reasons include poor requirement gathering (building the wrong thing), unrealistic project timelines and budgets (rushing the developers), lack of user involvement during development, and inadequate testing before deployment. Additionally, "scope creep"—where features are continuously added without adjusting the schedule or budget—often leads to total project collapse.
Q.2. (v) Which is more important—the product or the process? Both are intrinsically linked, but fundamentally, a high-quality process is necessary to produce a high-quality product reliably. End-users only care about the final product (does the app work smoothly?), making it the ultimate goal. However, from an engineering perspective, without a disciplined process (like Agile or Spiral), success is just luck. A good process guarantees that the product will be delivered on time, within budget, and relatively bug-free, making the process the vital engine for product success.
Q.2. (vi) Differentiate between Alpha testing and Beta Testing. Alpha Testing is simulated or actual operational testing performed by potential users/customers or an independent test team strictly at the developer's site in a highly controlled environment. Developers are present to record errors immediately. Beta Testing is live testing performed by actual end-users at their own locations in an uncontrolled environment. The developers are not present, and users report back the bugs they encounter during real-world usage.
Q.2. (vii) Write a short note on pair programming. Pair programming is a core practice of Agile development (specifically Extreme Programming) where two programmers share a single workstation to write code collaboratively. One programmer, the "Driver," actively types the code, while the other, the "Navigator," constantly reviews each line as it is written, looking for strategic flaws or logical errors. They swap roles frequently. This technique significantly reduces bugs, improves code design, and ensures that knowledge about the codebase is shared across the team.
Q.2. (viii) Why Quality Assurance is important for developing software now a days? In the modern world, software controls critical infrastructure, from financial banking apps to hospital life-support systems. Quality Assurance (QA) is no longer just about finding typos; it is essential for ensuring strict security against cyber threats, guaranteeing regulatory compliance, and maintaining brand reputation. Fixing a critical bug after a product has been deployed to millions of users is exponentially more expensive and damaging than preventing it during the QA phase.
Introduction to SDLC The Software Development Life Cycle (SDLC) is a structured framework that defines the standard phases involved in the development of a software application. It provides a logical, systematic plan to design, develop, test, and deploy high-quality software that meets or exceeds customer expectations while completing within the estimated time and cost constraints.
Core Phases of the SDLC Regardless of the specific model chosen (Waterfall, Agile, Spiral), a standard SDLC comprises the following distinct phases:
Why Incremental Development is Highly Effective for Business Systems Business environments are highly dynamic; market trends shift, and user needs evolve rapidly. The incremental approach is perfectly suited for this because it delivers the software in manageable, functional chunks (increments) rather than waiting years for a final product.
Why it is Less Appropriate for Real-Time Systems Engineering Real-time systems (such as air traffic control systems, nuclear reactor monitors, or automotive anti-lock brakes) function under strict, non-negotiable timing constraints and safety critical requirements.
What is Project Management? In software engineering, Project Management is the systematic application of knowledge, skills, tools, and techniques to plan, monitor, and control software projects. Its primary goal is to deliver a high-quality software product that satisfies the user's requirements while strictly adhering to schedule and budget constraints.
The 4Ps of Project Management Effective software project management focuses on four crucial elements, known as the 4Ps. They must be managed in this specific order of importance:
Defining System Modeling System modeling is the process of developing abstract, graphical representations of a software system before a single line of code is written. By using standardized notations like UML (Unified Modeling Language), developers can visualize, specify, construct, and document the architecture of the system from various perspectives, ensuring everyone understands the blueprint before building begins.
1. Structural Models (The Static View) Structural models represent the static framework or the fundamental architecture of the system. They show the specific components that make up the system and how they are related to one another, independent of time or execution.
2. Interaction/Behavioral Models (The Dynamic View) Interaction models represent the dynamic behavior of the system. They illustrate how the structural components actually interact with each other over time, how they respond to events, and how data flows through the system to accomplish specific tasks.
Open this section to load past papers