Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
19 views33 pages

Software Engineering

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1/ 33

Software Engineering

The IEEE fully defines software engineering as:

1. The application of a systematic, disciplined, cost effective


approach to the development, operation, and maintenance
of software; that is, the application of engineering to
software.
Software engineering

The true work of software engineering begins before the product has even been
designed – and the software engineering basics dictate that it continues long after
the “work” has been completed.

It all begins with a thorough and complete understanding of what your software
needs to have – this includes what the software needs to do, the system in which
it needs to operate, and all of the security that it entails.
SDLC Activities
Before Implementation
- Planning (Feasibility check, problem specification, budgeting, scheduling, Risk Management)
- Requirement Gathering
- Design and Prototyping

Implementation
- Development
- Debugging

After Implementation
- Testing
- Deployment
- Operations and Maintenance
Planning
In the Planning phase, project leaders evaluate the terms of the project. This includes calculating labor and material costs, creating a
timetable with target goals, and creating the project’s teams and leadership structure.

Planning can also include feedback from stakeholders. Stakeholders are anyone who stands to benefit from the application.
Try to get feedback from potential customers, developers, subject matter experts, and sales reps.

Planning should clearly define the scope and purpose of the application. It also sets boundaries to help keep the project
from expanding or shifting from its original purpose.

Scope with
the
boundaries
Define Requirements

Defining requirements is considered part of planning to determine what the


application is supposed to do and its requirements. For example, a social media
application would require the ability to connect with a friend. An inventory
program might require a search feature.

Requirements also include defining the resources needed to build the project.
For example, a team might develop software to control a custom manufacturing
machine. The machine is a requirement in the process.
Design and Prototyping

The Design phase models the way a software application will work. Some aspects of the design include:

Architecture – Specifies programming language, industry practices, overall design, and use of any templates. User
Interface – Defines the ways customers interact with the software, and how the software responds to input. Platforms –
Defines the platforms on which the software will run, such as Apple, Android, Windows version, Linux, or even gaming
consoles
Programming – Not just the programming language, but including methods of solving problems and performing tasks in the
application.
Communications – Defines the methods that the application can communicate with other assets, such as server. Security –
Defines the measures taken to secure the application, and may include SSL traffic encryption, password protection, and secure
storage of user credentials.
Prototyping
Prototyping can be a part of the Design phase. A prototype is like one of the early versions of software in
the Iterative software development model. It demonstrates a basic idea of how the application looks and
works. This “hands-on” design can be shown to stakeholders. Use feedback to improve the application. It’s
less expensive to change the Prototype phase than to rewrite code to make a change in the Development
phase.
Software Development

This is the actual writing of the program. A small project might be written by a single developer, while a large
project might be broken up and worked by several teams. Use an Access Control or Source Code Management
application in this phase. These systems help developers track changes to the code. They also help ensure
compatibility between different team projects and to make sure target goals are being met.
Testing

It’s critical to test an application before making it available to users. Much of the testing can be
automated, like security testing. Other testing can only be done in a specific environment –
consider creating a simulated production environment for complex deployments. Testing
should ensure that each function works correctly.
Deployment
In the deployment phase, the application is made available to users. Many companies prefer to automate the deployment phase. This can
be as simple as a payment portal and download link on the company website. It could also be downloading an application on a
smartphone.
Operations and Maintenance

At this point, the development cycle is almost finished. The application is done and being used in the field. The Operation
and Maintenance phase is still important, though. In this phase, users discover bugs that weren’t found during testing.
These errors need to be resolved, which can spawn new development cycles.

In addition to bug fixes, plan additional features in future releases. For each new release, a new Development Cycle can
be launched depending on the model being used.
SDLC Models

Waterfall
The Waterfall SDLC model is the classic method of development. As each phase completes, the project spills over into the next step.
This is a tried-and-tested model, and it works. One advantage of the Waterfall model is each phase can be evaluated for continuity and
feasibility before moving on. It’s limited in speed, however, since one phase must finish before another can begin, we can not go back
to the previous stages.
WHEN?
1. This model is used only when the requirements are very well known, clear and
fixed.
2. Product definition is stable.
3. Technology is understood.
4. There are no ambiguous requirements.
5. Ample resources with required expertise are available freely.
6. The project is short.
Problem ?
Advantages
● Simple, Easy to understand.

● Predictability.

● Efficient.
Disadvantages
● Not Flexible to change.

● First release takes a long.


Iterative

In the Iterative development model, developers create an initial basic version of the software quickly.
Then they review and improve on the application in small steps (or iterations). This approach is most
often used in very large applications. It can get an application up and functional quickly to meet a
business need. However, this process can exceed its scope quickly and risks using unplanned
resources.
WHEN?
● When requirements are defined clearly and easy to understand.
● When the software application is large.
● When there is a requirement of changes in future.
Incremental Model

Incremental Model is a process of software development where requirements are broken down into multiple
standalone modules of software development cycle. Incremental development is done in steps from analysis
design, implementation, testing/verification, maintenance.
WHEN?
● Requirements of the system are clearly understood
● When demand for an early release of a product arises/ urgency.
● When high-risk features and goals are involved
● If organization may benefit from early delivery of part of
product.
● If building one increment will help define future increments.
Advantages
● Delivery value earlier.

● Get Feedback and make necessary changes


between increments.
Disadvantages
● May result in rework.

● May cost more.


Scenario 1

There is a solution company that basically which were expert in


installing this particular HR management systems in big
retailers. So let's say company X need to install a well known HR
management system at a big retailer's headquarter. And they have
done this install many times, right? And similar retailers, big retailers
before. So the question is, what model will fit best in this situation?
Scenario 1

Answer: Incremental or Iteration


Reason: because this model breaks down the project into smaller parts or
increments, allowing for flexibility and adaptability to accommodate
changes and updates. The company can iteratively implement the system,
focusing on specific modules or functionalities in each iteration, ensuring
alignment with the retailer's evolving needs and reducing the risk of project
failure.
Scenario 02
A ‘Smart Electricity optimization’ application need is identified among the people
of Pakistan.
A project is opened by the government for developers to bid on. It’s a mobile
application that should be connected to the Electricity Meter of the House. A user
should be able to register through meter number and CNIC. The application
should allow the user to set a threshold/max unit consumption value for the
month. The application should show the real-time unit consumption to the user.
The application should track the unit consumption and predict the unit
consumption for the month. If the prediction is more than the threshold then the
application should alert the user.
The user should be able to view and download daily, monthly, and weekly
electricity consumption reports.
The application should be secure and usable.
Scenario 03

Scenario: A company has been tasked with developing a critical software


system for a client. The client has provided detailed requirements upfront
and does not anticipate significant changes during the development
process. Due to the nature of the project and the clear understanding of
requirements, so help the company to decide which Model fits best? They
begin with requirements gathering, followed by design, implementation,
testing, deployment, and maintenance phases, with each phase being
completed before moving on to the next. This approach ensures that each
stage is completed thoroughly before progressing, making it suitable for
projects with well-defined and stable requirements.
Scenario 04
Scenario: A software development company has been contracted to build a new e-
commerce platform for a client. The client wants to quickly launch a basic version of the
platform to start generating revenue while also having the flexibility to add new features
and enhancements over time. Given the client's requirements and the need for rapid
delivery, the software development company needs to adopt which Model? Initially, the
development team identifies the core functionalities required for the basic version of the
e-commerce platform, such as user authentication, product listing, shopping cart, and
checkout. They break down these requirements into modules, each representing a
subset of functionality. The team starts development with the first release, focusing on
implementing the essential features identified earlier. Once the first release is
completed, it undergoes thorough testing to ensure functionality and stability. The team
then releases this module to the client for feedback and initial user testing.
Scenario 04 Continue
Based on the client's feedback and market demand, the development team prioritizes
the next set of features to be implemented. They proceed with developing the second
release, which may include additional features such as payment processing, order
management, and user reviews.

Again, the completed module is tested repeatedly before release, and the cycle
continues with subsequent modules being developed, tested, and released in iterations.
Each modules builds upon the previous one, gradually enhancing the functionality and
usability of the e-commerce platform.

Throughout the development process, the client has the opportunity to provide
feedback, suggest changes, and request new features. which allows them flexibility and
adaptability, enabling the client to evolve the platform repeatedly in response to
changing requirements and market dynamics.
Scenario Answers

Scenario 2: WaterFall
Scenario 3: WaterFall
Scenario 4: Incremental

You might also like