Software Engineering
Software Engineering
[Document subtitle]
[Date]
Allan Herrera
London school of international business
Table of Contents
Software Engineering................................................................................2
Software development Lifecycle............................................................2
Approaches and Functions of the Software Development Lifecycle.......2
Software Development.............................................................................3
Concept and processes..........................................................................3
Software Development Techniques and Tools........................................4
Software Deployment and Review.........................................................5
Software Planning and Implementation.................................................6
Software Monitoring Methods................................................................6
Software Engineering and Testing.............................................................7
Role of modelling languages..................................................................7
Benefits and Limitations of UML’s..........................................................8
Unified Modelling Language Tools..........................................................8
Class Diagrams Role in UML’s................................................................9
Making an Application in Microsoft Visio´s UML.....................................9
Software Testing and Validation...........................................................10
Software testing tools and benefits.....................................................11
Code Validation Techniques.................................................................12
Demonstration of Software Testing......................................................12
Bibliography............................................................................................14
Software Engineering
Software development Lifecycle
The software life cycle encompasses the stages a software product
undergoes from its inception to retirement. It begins with the initial
concept or requirements gathering, where the needs and objectives of
the software are identified and analyzed. This stage is critical as it lays
the foundation for what the software must achieve. Following this, the
design phase translates these requirements into a blueprint, detailing
how the software will be structured and how different components will
interact.
Once the design is set, the development phase begins, where the actual
coding takes place. This is where the abstract ideas are transformed into
executable code. Development is often iterative, involving cycles of
coding, testing, and refining to ensure the software meets the specified
requirements.
After coding, the software undergoes testing. This phase is crucial for
identifying and fixing bugs or inconsistencies. Testing can be conducted
at multiple levels, from unit tests that check individual components to
system tests that validate the software as a whole.
Version control systems like Git are crucial for managing changes to
the codebase. They track revisions, facilitate collaboration among
developers, and help resolve conflicts in code integration.
Testing frameworks such as JUnit for Java or pytest for Python are
used to write and run automated tests, ensuring that individual
components function correctly and that new changes do not introduce
bugs.
During the implementation phase, the project plan is put into action.
Development typically follows an iterative or incremental approach, such
as Agile or Scrum, where work is divided into manageable sprints or
cycles. Each iteration involves coding, unit testing, and integration of
new features. Regular reviews and stand-up meetings help track
progress and adapt to changes.
Case Study:
Software Engineering and Testing
Role of modelling languages
Modeling languages in software engineering are essential for creating
abstract representations of software systems, facilitating understanding,
design, and communication throughout the development process. These
languages offer standardized ways to visualize complex systems, making
it easier to plan, design, and manage software projects.
Next, use a class diagram to detail the system's static structure. Define
classes such as "Book," "Member," and "Loan." Specify attributes like
"title" and "author" for the "Book" class, and methods like "borrow()" and
"return()" for the "Loan" class. Draw relationships between these classes
to depict associations, such as "Book" being associated with "Loan."
The process begins with test planning, where the scope, objectives,
and resources for testing are defined. This includes creating a test
strategy that outlines the overall approach, including the types of testing
to be employed, such as functional, non-functional, integration, and
system testing.
Test execution is the phase where test cases are run against the
software. During this phase, the actual outcomes are compared against
expected results to identify discrepancies. Various testing techniques are
employed, such as manual testing, where testers execute test cases
manually, and automated testing, where scripts and tools are used to
perform tests.
Code validation, on the other hand, ensures that the code adheres to
defined standards and practices. Techniques such as static code
analysis are used to examine the code without executing it, identifying
potential issues like code smells, security vulnerabilities, and deviations
from coding standards. Code reviews involve peers examining code
changes to provide feedback and catch errors that automated tools
might miss. Additionally, dynamic code analysis involves running the
code to detect issues related to runtime behavior, such as memory leaks
and performance problems.