Software Engineering-359
Software Engineering-359
A . What is a software process? What are the differences between software process and process
model? Example
Software processes in software engineering refer to the methods and techniques used
to develop and maintain software.
Software Processes is a coherent set of activities for specifying, designing, implementing and
testing software systems. A software process model is an abstract representation of a process that
presents a description of a process from some particular perspective.
## Software process is set of work that is applied to design or built a software product. The
fundamental activities that is common to all software process are :
1. software specification
2. software design and implementation
3. software evaluation
A software process model is the a abstract representation of a software process. It is a structure of
a software process present the description of a process . There are several process models are
available
1. Waterfall model
2. Generic process model
3. Incremental model
4. Agile process model
5. Prototyping model
6. Spiral model
7. Iterative development model, etc
b. describe waterfall model.what are the advantages and disadvantages
The Waterfall Model was the first Process Model to be introduced. It is also referred to as
a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall
model, each phase must be completed before the next phase can begin and there is no
overlapping in the phases.
The Waterfall model is the earliest SDLC approach that was used for software development.
The waterfall Model illustrates the software development process in a linear sequential flow.
This means that any phase in the development process begins only if the previous phase is
complete. In this waterfall model, the phases do not overlap.
The Agile Manifesto is a set of guiding principles that define the values and
principles of agile software development. It was created by a group of software
development experts in 2001 and emphasizes flexibility, collaboration, and
continuous improvement in software development processes. The Agile Manifesto
consists of four core values and twelve principles.
1. Individuals and Interactions over Processes and Tools: This value emphasizes
the importance of effective communication, collaboration, and teamwork
among individuals involved in the software development process. It
recognizes that people and their interactions are the foundation of successful
software development, and processes and tools should support their
collaboration.
2. Working Software over Comprehensive Documentation: This value emphasizes
the delivery of functional software that meets the needs of users. It
acknowledges the importance of documentation but prioritizes working
software as the primary measure of progress and success. The focus is on
delivering value to the customer through tangible, working software.
3. Customer Collaboration over Contract Negotiation: This value emphasizes the
active involvement and collaboration of customers or stakeholders throughout
the development process. It promotes close collaboration, feedback, and
iterative development to ensure the software meets customer needs. The goal
is to work closely with customers to understand and respond to their
requirements effectively.
4. Responding to Change over Following a Plan: This value recognizes the
dynamic nature of software development. It acknowledges that requirements
and priorities may change over time, and the development process should be
flexible and responsive to accommodate those changes. Agile teams embrace
change and adjust plans accordingly to maximize the value delivered.
The twelve principles underlying the Agile Manifesto expand on the values and
provide specific guidance for agile software development. These principles include:
2021 solution
1.a. define software engineering.What are the benefits of incremental development model
over waterfall model?
S.
No. Waterfall Model Incremental Model
The waterfall model can’t handle The incremental model also can’t handle
5.
large projects. large projects.
The cost of the Waterfall model is The cost of the incremental model is also
7.
Low. Low.
There is only one cycle in the Multiple development cycles take place
12.
waterfall model. in the incremental model.
b. describe the difference between plan driven and agile approaches with a diagram. What are
the advantages and drawbacks of agile approaches?
Plan-Driven Approach: The plan-driven approach, often associated with traditional waterfall
methodologies, follows a sequential and predictive process. It involves detailed planning,
documentation, and a fixed scope of work. Here is a simplified diagram illustrating the plan-
driven approach:
_____________
| Planning |
|_____________|
|
_________/ \_________
| Execution |
|___________________|
|
______/ \_______
| Testing |
|________________|
|
______/ \_______
| Deployment |
|________________|
Agile Approach: The agile approach, on the other hand, follows an iterative and
incremental process that allows for flexibility, adaptability, and continuous
improvement. Agile methodologies, such as Scrum or Kanban, involve shorter
development cycles called iterations or sprints. Here is a simplified diagram
illustrating the agile approach:
____________________
| Iteration/Sprint 1 |
|____________________|
|
_______/ \__________
| Iteration/Sprint 2 |
|_____________________|
|
_______/ \__________
| ... |
|_____________________|
|
_______/ \__________
| Iteration/Sprint N |
|_____________________|
The Ishikawa diagram was developed by Kaoru Ishikawa during the 1960s
as a way of measuring quality control processes in the shipbuilding
industry.
KEY TAKEAWAYS
2. a. Scrum,JRP,Unit testing
Scrum is the type of Agile framework. It is a framework within which people can
address complex adaptive problem while productivity and creativity of delivering
product is at highest possible values. Scrum uses Iterative process. Silent features
of Scrum are:
• Scrum is light-weighted framework
• Scrum emphasizes self-organization
• Scrum is simple to understand
• Scrum framework help the team to work together
1. Pre-planning: Identify the purpose and objectives of the JRP, select the
appropriate participants, and establish a schedule and agenda for the process.
2. Discovery: Gather information about the existing system, user needs, and
other requirements for the new software system.
3. Analysis: Analyze the information collected to identify requirements and
prioritize them based on their importance and feasibility.
4. Specification: Define the requirements in detail, including functional and non-
functional requirements, as well as any constraints and assumptions.
5. Validation: Review the requirements with stakeholders to ensure they are
complete, accurate, and acceptable.
6. Management: Track and manage changes to the requirements throughout the
software development lifecycle.
The Factory Design Pattern is a creational design pattern that provides an interface
for creating objects without specifying their concrete classes. It encapsulates the
object creation logic and allows the client code to use the created objects through a
common interface. The Factory Design Pattern promotes loose coupling by
separating object creation from the client code.
Let's say we have an application that deals with different types of documents, such as
PDF documents, Word documents, and Excel documents. We want to abstract the
document creation process using the Factory Design Pattern.
4. Client Code: Finally, the client code can use the DocumentFactory to create
documents without knowing the concrete document classes.
In this example, the DocumentFactory acts as the factory, and it creates instances of
PDFDocument, WordDocument , or ExcelDocument based on the type specified by the client
code. The client code doesn't need to know the concrete classes; it can work with the created
Document objects through the common Document interface.
A good software typically exhibits certain attributes that contribute to its overall
quality, usability, maintainability, and performance. Here are some key attributes of
good software:
1. Functionality: Good software fulfills its intended purpose and meets the
specified requirements. It performs the tasks it was designed for accurately
and efficiently, providing the expected functionality to its users.
2. Reliability: Reliable software operates consistently and predictably, producing
correct results even in different environments and under varying conditions. It
minimizes errors, exceptions, crashes, and unexpected behaviors.
3. Usability: Usability refers to how easily and efficiently users can interact with
the software. Good software has an intuitive and user-friendly interface, clear
instructions, and well-designed features. It focuses on the user experience and
minimizes the learning curve.
4. Performance: Performance relates to the speed, responsiveness, and
efficiency of the software. Good software is optimized to execute tasks quickly,
handle large data volumes, and utilize system resources effectively. It
minimizes latency, processing time, and memory usage.
5. Scalability: Scalable software is designed to handle increased workloads and
accommodate growing user bases or data volumes. It can scale horizontally
(by adding more servers) or vertically (by utilizing more resources on a single
server) to maintain performance as demand increases.
6. Security: Security is crucial for protecting the software and its users' data from
unauthorized access, breaches, or malicious activities. Good software
implements appropriate security measures, encryption, access controls, and
follows secure coding practices.
7. Maintainability: Maintainable software is easy to modify, enhance, and fix. It
follows clean code principles, modular design, and separation of concerns. It
uses meaningful variable names, comments, and documentation to facilitate
understanding and future maintenance by developers.
8. Testability: Testable software is designed to facilitate effective testing. It has a
modular and loosely coupled architecture, provides interfaces for testing or
mocking, and includes automated test suites. Good software aims for high test
coverage to ensure correctness and catch regressions.
9. Portability: Portable software can run on different platforms, operating
systems, or environments without requiring major modifications. It is designed
to be independent of specific hardware or software dependencies, facilitating
deployment and use across various systems.
10. Compliance: Compliance refers to adherence to legal, industry, or regulatory
standards applicable to the software. Good software follows applicable
guidelines, regulations, and standards, such as data protection laws,
accessibility standards, or coding conventions.
Fact-finding methods are techniques used in the early stages of system development
or problem-solving to gather information and understand the requirements,
constraints, and objectives of a project. These methods involve interacting with
stakeholders, observing processes, and analyzing existing documentation to collect
relevant data. Here are some commonly used fact-finding methods:
| Author |
+------------+
|1
+------------+
| Write Book |
+------------+
|1
+------------+
| Publish |
+------------+
| |
v1 v1
+------------+ +-------------+
| Bookstore | | Publisher |
+------------+ +-------------+
|1 |1
v v
+------------+ +-------------+
| Sell | | Publish |
+------------+ +-------------+
|1 |
v |
+------------+ |
| Read |<----+
Explanation:
1. Author: Represents the author of the book who writes the book.
• Use Case: "Write Book" - The author writes the book.
2. Publish: Represents the publishing process that involves the publisher and the
book.
• Use Case: "Publish" - The author submits the book to the publisher,
who then publishes it.
3. Bookstore: Represents the bookstore that sells books to readers.
• Use Case: "Sell" - The bookstore sells books to readers.
4. Publisher: Represents the publisher who publishes the book written by the
author.
• Use Case: "Publish" - The publisher publishes the book.
5. Sell: Represents the process of selling books to readers by the bookstore.
• Use Case: "Sell" - The bookstore sells the book to the reader.
6. Read: Represents the reader's action of reading the book after buying it from
the bookstore.
• Use Case: "Read" - The reader reads the book.
Relationships:
• The Author "Write Book" use case is associated with the Publish "Publish"
use case since the author submits the book to the publisher for publication.
• The Publish "Publish" use case is associated with the Bookstore "Sell" use
case since the publisher's published book is sold by the bookstore.
• The Bookstore "Sell" use case is associated with the Reader "Read" use case
since the reader can read the book after buying it from the bookstore.
4.a.
to buy a book electronically from chapters .com, a customer needs to select the book from a list
provided by chapters ecommerse system, provide credit card information to the system , then the
system gets authorization from the bank for the payment , and if positive confirms the sale. the
order is then sent to the orders department and when the book becomes available, it is shipped
to the customer. also, the order department charges the customers credit card by informing the
bank of the amount.draw a sequence diagram that models this process.Make sure to model all
relevant actors and the interactions between them .do show explicitly the time interval when
different actors actively participate in the process you are modeling.
Customer Chapters.com Bank Orders Department
| | | |
| Selects a book | | |
|----------------->| | |
| | | |
| Provides credit | | |
| card information| | |
|-----------------> | | |
| | | |
| | Sends | |
| | authorization | |
| |--------------->| |
| | | |
| | | Processes |
| | | authorization |
| | |------------------->|
| | | |
| | | Confirms sale |
| | |<-------------------|
| | | |
| | | |
| | | Notifies |
| | | order department |
| | |------------------->|
| | | |
| | | Charges credit |
| | | card for the book |
| | |<-------------------|
| | | |
| | | |
| | | |
| | Notifies | |
| | customer | |
| |<--------------| |
| | | |
| Receives the | | |
| book | | |
|<-----------------| | |
| | | |
4.b.
in terms of use case modeling ,define the extends relationship with example
The use case diagram displays three kinds of entities: the system, the actors, and the use cases.
The system is represented by a box encompassing the use cases. The actors are users or systems that
interact with the main system and are represented by figures. The use cases are functions performed by
the actors interacting with the system. Ellipses represent use cases.
To represent complex relationships between different use cases, we can use the extend and include
relationships.
• Extend relationship: The use case is optional and comes after the base use case. It is represented
by a dashed arrow in the direction of the base use case with the notation <<extend>>.
• Include relationship: The use case is mandatory and part of the base use case. It is represented
by a dashed arrow in the direction of the included use case with the notation <<include>>.
In the above use case diagram, the use case “Read book” includes the use case “Open book”. If a reader
reads the book, she must open it too, as it is mandatory for the base use case (read book). The use case
“read book” extends to the use case “turn page”, which means that turning the page while reading the
book is optional. The base use case in this scenario (read book) is complete without the extended use
case.
4.c.
suppose you are writing a stack class .design some test cases to verify your code
ChatGPT
When designing test cases for a stack class, it is important to consider various scenarios and edge
cases to ensure that the code handles different situations correctly. Here are some test cases you
can use to verify the functionality of your stack class:
These test cases cover various aspects of stack functionality, such as pushing, popping, peeking,
checking the stack's state, and handling different boundary conditions. It's important to consider
additional test cases based on the specific implementation details and requirements of your stack
class.
5.a.
draw an activity diagram that represents the making of a cup of tea. the initial three activities are
fill kettle with water ,find cup and find tea bag and they may be performed in parallel.when the
find cup and find tea bag are cimpleted the activity place tea bag in cup can start .the kettle must
have boiled an the tea bag must have been placed in the cup before the activity andd water to
cup can begin .if milk is required then activity add milk should be performed.
+------------------------+
| Start the Process |
+------------------------+
| | |
v v v
+------------------------+
| Fill Kettle with Water |
+------------------------+
|
v
+------------------------+
| Find Cup and Tea Bag |
+------------------------+
| AND
v
+------------------------+
| Place Tea Bag in Cup |
+------------------------+
| AND
v
+------------------------+
| Boil Kettle |
+------------------------+
| AND
v
+------------------------+
| Add Water to Cup |
+------------------------+
| AND
v
+------------------------+
| Optional: Add Milk |
+------------------------+
|
v
+------------------------+
| End the Process |
+------------------------+
Explanation:
Layered Architecture:
In the Layered Architecture pattern, the system is divided into multiple layers, each responsible
for specific functionality. This helps to achieve separation of concerns and maintain a modular
and scalable system. Here are the layers commonly found in a Library Management System:
1. Presentation Layer:
• Responsible for handling user interactions and displaying information.
• Provides a user interface for library staff and patrons to access the system.
• Justification: Separating the presentation layer allows for easy customization of
the user interface and improves user experience.
2. Application Layer:
• Implements business logic and coordinates the flow of data between the
presentation and domain layers.
• Handles tasks such as user authentication, request processing, and validation.
• Justification: Separating the application layer enables easier maintenance, testing,
and reusability of business logic.
3. Domain Layer:
• Contains the core business entities, rules, and operations specific to the library
domain.
• Manages data persistence and retrieval.
• Justification: Separating the domain layer ensures that the business logic is
decoupled from the underlying infrastructure and can be reused across different
applications or services.
4. Infrastructure Layer:
• Provides interfaces and implementations for data access, external services, and
other infrastructure-related concerns.
• Includes database access, file management, network communication, and external
API integrations.
• Justification: Separating the infrastructure layer allows for easy swapping of
technologies, improves maintainability, and promotes testability.
Client-Server Architecture:
In the Client-Server Architecture pattern, the system is divided into two main components: the
client, which makes requests for resources or services, and the server, which provides the
requested resources or services. Here's how it can be applied to a Library Management System:
1. Client:
• Represents the user interface or application that interacts with the library system.
• Sends requests to the server for operations such as searching for books,
borrowing, returning, etc.
• Receives and displays responses from the server.
• Justification: Separating the client allows for different types of clients to access
the library system, such as web-based interfaces, mobile applications, or desktop
software.
2. Server:
• Provides the core functionality of the Library Management System.
• Receives requests from clients, processes them, and returns the appropriate
responses.
• Implements the business logic and data management operations.
• Justification: Separating the server allows for centralized control, scalability, and
better management of system resources. It also enables concurrent access from
multiple clients.
The communication between the client and server follows a request-response model, where the
client initiates a request and the server responds with the requested data or performs the
necessary operations.
By combining the Layered Architecture and Client-Server Architecture patterns, the Library
Management System achieves modular design, separation of concerns, scalability, and flexibility
in terms of the user interface and the platform on which it runs. It also enables efficient
communication between clients and the server, ensuring reliable access to library resources and
services.
5.c.
Describe agile manifesto
Agile Manifesto
In February 2001, at the Snowbird resort in Utah, a team of 17 software developers
met to discuss lightweight development methods. The result of their meeting was the
following Agile Manifesto for software development:-
We are uncovering the better ways of developing software by doing it and helping
others to do it. Through this meeting, we have come to value -
So that, while there is value in the items on the right, we value the items on the left
more.
The Twelve Principle of Agile Manifesto
1. Customer Satisfaction: Manifesto provides high priority to satisfy the costumer's
requirements. This is done through early and continuous delivery of valuable software.
2. Welcome Change: Making changes during software development is common and
inevitable. Every changingrequirement should be welcome, evenin the late
development phase. Agile process works to increase the customers' competitive
advantage.
3. Deliver the Working Software: Deliver the working software frequently, ranging from
a few weeks to a few months with considering the shortest timeperiod.
4. Collaboration: Business people (Scrum Master and Project Owner) and developers
must work together during the entire life of a project development phase.
5. Motivation: Projects should be build around motivated team members. Provide such
environment that supportsindividual team members and trust them. It makes them feel
responsible for gettingthe job donethoroughly.
6. Face-to-face Conversation: Face-to-face conversation betweenScrum Master
anddevelopment team and between the Scrum Master and customers for the most
efficient and effective method of conveying information to and within a development
team.
7. Measure the Progress as per the Working Software: The working software is the key
and primary measure of the progress.
8. Maintain Constant Pace: The aim of agile development is sustainable development.
All the businesses and users should be able to maintain a constant pace with the
project.
9. Monitoring: Pay regular attention to technical excellence and good design to
maximize agility.
10. Simplicity: Keep things simple and use simple terms to measure the work that is not
completed.
11. Self-organized Teams: The Agile team should be self-organized. They should not be
depending heavily on other teams because the best architectures, requirements, and
designs emerge from self-organized teams.
12. Review the Work Regularly: The work should be reviewed at regular intervals, so that
the team canreflect on how to become more productive and adjust its behavior
accordingly.