Software Engineering
Software Engineering
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
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.
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.
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