you define what a software methodology is? Think in terms of the artifacts you
create during development.
A software methodology is
a framework that is used to structure, plan, and document the process of
developing artifacts that are created and eventually finished for a particular
application. To put it simply, a software methodology can be seen as a
life-cycle for a project and software development is the process that makes
this life cycle a reality. One type of software methodology is not suitable for
use by all projects. It’s for this reason why a variety of frameworks have been
created over the years, each having its own respective strengths and
weaknesses. Nowadays, agile methods have been commonplace in software
development and have taken the placeholder of other slower and linear software
2. What are the benefits of learning software
methodologies for developers individually?
The benefits of learning
software methodologies for developers individually is that by gaining experience
in industry methods, the knowledge gained can be transferred to other projects.
By understanding commonplace agile iterative method which includes Scrum or
that of Unified Process, a developer can make more adaptable code for future
projects. In addition, by following agile methods developers are able to slowly
learn the skills on how to make reusable adaptable code, and be able to debug
and understand possible errors due to the documentation. By following through
with methodologies, developers are able to get a better grasp on the project by
following the guidelines of the framework. This also allows developers to spot
any future conceptual mistakes before starting the project as they align it
with the framework. Finally, the tools
that come from following frameworks allows developers to work more cohesively
as a team, leading to less latency and better communication when working on a project.
By following the map that methodologies often lay, developers can grow and
learn ways to organize and create more reusable and efficient code.
3. Why do we need software engineers in the
software industry? Can we develop products with programmers only? (Parnas
Software Engineers are
needed in the software industry to ensure that software products are designed
and manufactured to be reliable. Here, we need a specialized Software Engineer
who will design, build, and test efficient and effective software products.
Over the past couple of decades, software has become a major component of
nearly any product and industry. In addition, software is often used by other
engineers to design products, which leads to the idea that the correctness of
the product is determined by the correctness of the software. It’s for this
reason why accreditation is necessary for future Software Engineers. Just by
being a programmer alone is not enough to design and build reliable products
for future consumers. While many believe that being a good programmer is enough
to build products as a Software Engineer, this is not the case as many must
also be equipped with the foundational concepts needed for reliable design. To
put it simply, knowing how to write beautiful lines of code is not enough when
it comes to designing products. Only by incorporating the engineering concepts
needed for designing products and the computer science to write code can we be
able to create successful products in the software industry.
4. What are the fundamental differences of
Waterfall and iterative methodologies?
The Waterfall method is a
software development process that emphasizes a logical progression of steps
when going through a software development lifecycle. It’s referred to be a
“waterfall” due to it flowing down in one direction. While the method itself
has lost popularity for agile methods, the nature of the sequential process
cannot be discarded, and it remains a common practice in Software Development.
Here, the process goes through a straightforward sequential process when
following the steps of Requirements, Design, Implementation, Verification, and
Maintenance. This has the advantage of being quite useful when dealing with
larger projects and having to deal with constantly shifting design teams. The
method also allows for much more structured organization when working on the
project. However, the Waterfall method has inefficiencies in its nonadaptive
constraints. Having one simple mistake in later stages could lead to a giant
step back in the design process, losing resources and time in the process. On
the other hand, iterative methodologies focus on remedying the faults that the
Waterfall method has. The basis of the method is to have a framework that goes
through repeated cycles in increments of time, allowing developers to take
advantage of what they learned in earlier versions of the system. After the planning phase, a handful of stages
are repeated, with each completion of the cycle leading to incremental
improvements. This allows developers to marginally optimize their code through
every iteration. The benefits here is that this is a much more agile method in
comparison to the Waterfall method, and as a result of repeating cycles, the method
is much more adaptable. Thus, the
Waterfall method is a more streamlined and linear process for Software
development, while an iterative method is a more agile and more adaptable way
to design software.