1. Define Software.
Describe the various Characteristics of software that are considerably different from those of
hardware.
Definition of Software:
Software is defined as:
1. Instructions: Programs that when executed provide desired function, features, and performance.
2. Data structures: Enable the programs to adequately manipulate information.
3. Documents: Descriptive information in both hard copy and virtual forms that describes the operation and use of the programs.
Characteristics of Software (Different from Hardware):
1. Software is developed or engineered; it is not manufactured in the Classical Sense:
o Although both activities rely on good design, the manufacturing phase for hardware can introduce quality problems that are
nonexistent or easily corrected for software.
o Software costs are concentrated in engineering, so projects cannot be managed like manufacturing projects.
2. Software doesn’t “Wear Out”:
o Hardware wears out due to environmental factors (dust, temperature, vibration), leading to an increasing failure rate over time
(see Fig 1.1).
o Software is not susceptible to these environmental maladies. However, it can deteriorate due to frequent changes, which can
introduce errors and increase the failure rate (see Fig 1.2). Every software failure indicates an error in design or the process of
translation into code.
3. Most Software is custom-built rather than being assembled from components:
o Although the software industry is moving towards reusable components (e.g., GUI elements), it is not as natural or widespread as
in hardware engineering, where component reuse is a standard part of the process.
2. Explain the 7 categories of Software application domains that gives continuous challenges to software engineer
considering changing nature of software with an example for each.
Category Description Example
A collection of programs written to service other
Compilers, Operating Systems,
1. System Software programs. Heavy interaction with hardware and
Device Drivers
multiple users.
Stand-alone programs that solve a specific business Point-of-sale transaction
2. Application Software
need. processing software
3. Engineering/Scientific Characterized by "number crunching" algorithms and Automotive stress analysis, System
Software complex numeric computations. simulation
Resides within a product or system to implement and Digital functions in an automobile
4. Embedded Software
control features. (fuel control, braking systems)
Designed to provide a specific capability for many Word processors, Spreadsheets,
5. Product-line Software
different customers. Database management systems
Category Description Example
6. Web Applications A client-server program that runs in a web browser. E-commerce websites, Social
(WebApps) Network-centric. media platforms
7. Artificial Intelligence Uses non-numerical algorithms to solve complex Expert systems, Robotics, Pattern
Software problems. recognition
3. Define software process and explain generic process framework for software engineering.
Definition of Software Process:
A process is a collection of activities, actions, and tasks that are performed when some work product is to be created.
Generic Process Framework:
A generic process framework for software engineering encompasses five activities:
1. Communication: Communicate and collaborate with the customer to understand objectives and gather requirements.
2. Planning: Create a software project plan that defines technical tasks, risks, resources, work products, and a schedule.
3. Modeling: Create models to help understand the requirements and the software design.
4. Construction: Combines code generation and testing to uncover errors.
5. Deployment: Deliver the software to the customer for evaluation and feedback.
These framework activities are complemented by Umbrella Activities (e.g., project tracking, risk management, quality
assurance) applied throughout the project.
4. Define Software Engineering and explain practices involved in software Engineering.
Definition of Software Engineering:
IEEE Definition: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and
maintenance of software. (2) The study of approaches as in the above statement.
Fritz Bauer's Definition: "Software engineering is the establishment and use of sound engineering principles in order to obtain
economically software that is reliable and work efficiently on real machines."
Practices Involved in Software Engineering (The Essence of Practice):
The essence of software engineering practice involves four core principles:
1. Understand the problem (communication and analysis).
2. Plan a solution (software design).
3. Carry out the plan (code generation).
4. Examine the result for accuracy (testing and quality assurance).
5. Discuss the seven principles of software engineering practice proposed by David Hooker.
David Hooker proposed seven principles focusing on software engineering practice:
1. The Reason It All Exists: A software system exists to provide value to its users.
2. KISS (Keep It Simple, Stupid!): All design should be as simple as possible, but no simpler.
3. Maintain the Vision: A clear vision is essential to the success of a project.
4. What You Produce, Others Will Consume: Always create work knowing someone else will have to understand it.
5. Be Open to the Future: Never design yourself into a corner. Ensure the software can adapt.
6. Plan Ahead for Reuse: Reuse saves time and effort and increases the value of components and systems.
7. Think!: Placing clear, complete thought before action almost always produces better results.
6. Explain spiral model with a neat diagram.
Explanation:
The spiral model is an evolutionary software process model that couples the iterative nature of prototyping with the controlled
and systematic aspects of the waterfall model. It is a risk-driven process model.
Software is developed in a series of evolutionary releases. Early iterations might be a prototype, with later iterations producing
more complete versions.
The model is divided into framework activities. The team performs activities in a clockwise spiral, starting from the center. Each
loop represents a phase.
Risk is considered at each revolution. Each pass through the planning region results in adjustments to the project plan.
It uses anchor point milestones to ensure stakeholder commitment to feasible solutions.
It is a realistic approach for large-scale systems because it allows developers and customers to better understand and react to risks
at each evolutionary level.
7. With a neat diagram, explain the waterfall model of software Engineering process, With advantages and disadvantages.
Explanation:
The waterfall model, sometimes called the classic life cycle, suggests a systematic, sequential approach to software development.
It progresses through communication (requirements), planning, modeling (analysis and design), construction (code and test), and
deployment in a linear fashion.
Diagram (Based on Figure 2.3):
text
Communication
(Requirements)
|
v
Planning
|
v
Modeling
(Analysis & Design)
|
v
Construction
(Code & Test)
|
v
Deployment
(Delivery & Feedback)
Problems/Disadvantages:
1. Real projects rarely follow the sequential flow. Changes can cause confusion.
2. It is often difficult for the customer to state all requirements explicitly at the beginning.
3. The customer must have patience, as a working program is not available until late in the project.
Suitability:
This model is suitable for projects with a limited number of new development efforts and where requirements are well-defined
and reasonably stable.
8. Demonstrate V- Model with a neat, labelled diagram.
Explanation:
The V-Model is a variation of the waterfall model that depicts the relationship between development phases and their
corresponding testing phases.
As the team moves down the left side of the V, basic requirements are refined into more detailed technical representations (e.g.,
architectural design, component design).
Once code is generated, the team moves up the right side of the V, performing a series of tests (e.g., unit test, integration test,
system test) that validate each model created on the left side.
It provides a way of visualizing how verification and validation actions are applied to earlier engineering work.
Diagram (Based on Figure 2.4):
9. With a neat diagram explain Incremental Process Model.
Explanation:
The incremental model delivers a series of releases, called increments, that provide progressively more functionality to the
customer. Each increment passes through the communication, planning, modeling, construction, and deployment activities in a
linear sequence, but these sequences are staggered over calendar time.
The first increment is often a core product addressing basic requirements.
Subsequent increments add features and functionality based on customer feedback and evaluation.
It is useful when full staffing is not available initially or to manage technical risks early.
Diagram (Based on Figure 2.5):
10. Compare and contrast waterfall model and spiral model.
Basis for
Waterfall Model Spiral Model
Comparison
Basic Approach Linear and sequential. Iterative, evolutionary, and risk-driven.
Inflexible to changes after a phase is Highly flexible, accommodates changes easily in
Flexibility
complete. iterations.
Risk Handling Does not explicitly handle risk. Risk analysis is a core phase of every iteration.
Customer Primarily at the start (requirements) and
High involvement throughout the process in each cycle.
Involvement end (deployment).
Suitable for projects with well-defined, Suitable for large, complex, and high-risk
Suitability
stable requirements. projects with uncertain requirements.
A working product is delivered only at the Working prototypes/versions are delivered early and
Delivery
end of the lifecycle. improved in each cycle.
Cost Cost of changes is very high if required Early discovery of risks and issu
Basis for
Waterfall Model Spiral Model
Comparison
late in the project.