0% found this document useful (0 votes)
19 views4 pages

SOFTWARE

Uploaded by

Online Hustling
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views4 pages

SOFTWARE

Uploaded by

Online Hustling
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

SOFTWARE ENGINEERING MID SEM DR.

HILLARY

1. What do the characteristics of software mean?


i. Interoperability
ii. Portability
iii. Reusability
iv. Testability
2. What advantages does agile methods have over the waterfall methods.
3. Describe Requirement change
4. Describe the following
i. State machine
diagram ii.
Component diagram
iii. Communication
diagram
5. Differentiate between component testing and integration
6. Enumerate on two agile methods
7. State the phases of requirements development
8. Outline the importance of software engineering

Solutions
1. Characteristics of Software:
i. Interoperability: This refers to the ability of software to work and communicate effectively
with other software systems. Interoperability ensures that different software components or
systems can exchange data and functionality seamlessly.

ii. Portability: Portability refers to the ease with which software can be transferred from one
platform or environment to another. A portable software can be run on different operating
systems or hardware configurations without significant modifications.

iii. Reusability: Reusability is the property of software that allows components or modules to
be reused in different parts of the system or in other projects. This saves time and effort in
development and maintenance by avoiding the need to build the same functionality from
scratch.

iv. Testability: Testability refers to the ease with which software can be tested to ensure its
correctness and functionality. A testable software design allows for efficient testing,
debugging, and verification of the software's behavior.
2. Advantages of Agile over Waterfall:
Agile methods, such as Scrum or Kanban, offer several advantages over the traditional
Waterfall approach:
❖ Flexibility: Agile methods allow for changes to be incorporated throughout the
project's lifecycle, making it easier to adapt to evolving requirements.
❖ Faster Iterations: Agile divides the project into smaller iterations (sprints), resulting in
faster delivery of working software and frequent opportunities for feedback.
❖ Customer Involvement: Agile encourages constant customer involvement and
feedback, ensuring that the delivered software aligns with customer needs.
❖ Continuous Improvement: Agile emphasizes regular reflection and improvement,
allowing teams to adjust processes and practices for better results.
❖ Reduced Risk: Agile's incremental approach helps identify and address risks early in
the project, leading to better risk management.

3. Requirement Change:
Requirement change refers to modifications made to the initial set of requirements for a
software project. These changes can occur due to evolving customer needs, business
requirements, or technological advancements. Managing requirement changes involves
assessing the impact of changes on the project timeline, budget, and scope, and making
informed decisions on whether to accommodate the changes or not.

4. Diagrams:
I. State Machine Diagram: A state machine diagram depicts the various states that an
object or system can be in and the transitions between those states. It is particularly
useful for modeling the behavior of systems with distinct states, such as finite-state
machines in software.

II. Component Diagram: A component diagram shows the high-level structure of a


software system by illustrating the components (modules, classes, libraries) and their
relationships. It emphasizes the organization of the software into reusable and
cohesive parts.

III. Communication Diagram: A communication diagram (also known as a collaboration


diagram) illustrates how objects in a system interact with each other to achieve
specific tasks or functionalities. It focuses on the dynamic aspects of system behavior.

5. Component Testing vs. Integration:


❖ Component Testing: This involves testing individual components or modules of a
software system in isolation. The goal is to verify that each component functions
correctly according to its specifications. Mock objects or stubs might be used to
simulate interactions with other components.

❖ Integration Testing: Integration testing evaluates the interactions between multiple


components or modules within a larger system. It ensures that these components work
seamlessly together and that data and control flow correctly between them.

6. Agile Methods:
Two popular agile methods are:

❖ Scrum: A framework that divides the project into time-bound iterations called sprints.
It involves roles like Product Owner, Scrum Master, and Development Team. Scrum
emphasizes frequent communication, transparency, and adaptability.

❖ Kanban: A visual method that focuses on continuous delivery by visualizing work


items on a Kanban board. It helps teams manage work in progress, optimize flow, and
respond to changes quickly.

7. Phases of Requirements Development:

The phases of requirements development typically include:


❖ Requirement initiation
❖ Requirement Elicitation
❖ Requirement Elaboration
❖ Requirement Analyzation and Negotiation
❖ Requirement Specification and Documentation
❖ Requirement Validation

8. Importance of Software Engineering:


Software engineering is important for several reasons:

❖ Quality: Proper engineering practices lead to higher-quality software that meets user
needs and is reliable, maintainable, and scalable.
❖ Efficiency: Software engineering techniques improve development efficiency,
reducing development time and costs.
❖ Risk Management: Structured methodologies help identify and mitigate risks early in
the development process.
❖ Maintenance: Well-engineered software is easier to maintain, update, and adapt to
changing requirements.
❖ Collaboration: Engineering practices provide a structured framework for
collaboration among team members and stakeholders.
❖ Innovation: Sound engineering practices enable the creation of innovative and
cutting-edge software solutions.

You might also like