Software Engeneering - Key Notes

 APPLIED COMPUTER SCIENCE

Index 

  • Software engineering
  • Software Development Life Cycle (SDLC) and Software Engineering Process
  • Software requirement specification
  • Testing
  •  Software Development Components and Tools
  •  Programming Language
  •  Important considerations for software deployment

 

[WORK IN PROGRESS]   

 

Software engineering

Software engineering is the systematic approach or application of scientific principles to the design and development software.

The main goal in software engineering is to develop solutions that satisfy requirements. Always keep this in mind.

In practice, there are some differences between a software engineer and a software developer. The main characteristics in this regard are:

| | Software Engineer                  | Software Developer          |
| -------------------- | ---------------------------------- | --------------------------- |
|   Focus              | Systems and architecture           | Features and functionality  |
|   Scope              | Broad, end-to-end systems          | Specific components         |
|   Approach           | Engineering principles & lifecycle | Coding & implementation     |
|   Design Role        | Defines system architecture        | Implements within design    |
|   Quality Emphasis   | Reliability, scalability, risk     | Functional correctness      |
|   Lifecycle Role     | Requirements → maintenance         | Mainly implementation phase |
|   Perspective        | Big-picture, structural            | Task-oriented, practical    |
|   Typical Training   | Engineering-oriented               | Programming-oriented        |

 Responsibilities of a software engineer include:

  • Designing, building, and maintaining software systems
  • Writing and testing code
  • Consulting with stakeholders, third party vendors and security specialists

 

Software Development Life Cycle (SDLC) and Software Engineering Process

To ensure that software systems meet specified requirements, quality standards, cost constraints, and timelines is convinent to use the Software Development Life Cycle (SDLC) framework. This defines the stages involved in planning, designing, developing, testing, deploying, and maintaining software systems. 

The main advantages of the SDLC:

  • Respond to changing requirements
  • Solve problems early in the process
  • Reduces overlapping resposabilities

  

 The SDLC can help to improve efficiency and reduce risks by: 

  • letting team members know what they should be working on and when  
  • facilitating communication between the customer, other stakeholders, and the development team 
  • letting stakeholders know where they fit into that process and  
  • letting cross-domain teams know when they have completed their tasks so development can move to the next phase.

Implementation methodologies

Waterfall, V-shape model, and agile are all different methodologies for implementing the software development life cycle

The common software engineering processes consist of:

 The requirement gathering process entails identifying stakeholders, establishing goals and objectives, eliciting requirements from the stakeholders, documenting the requirements, analyzing, prioritizing, and confirming the requirements. 

Documentation
 
Types of documentation include requirements, design, technical, quality assurance, and user. 

Roles
 
There are many different roles involved in a software engineering project. Some of them include project manager or scrum master, stakeholder, system or software architect, UX designer, software developer, tester or QA engineer, site reliability or Ops engineer, product manager or owner, and technical writer or information developer. 

Software requirement specifications (SRS)

An Software requirement specifications (SRS) is a document that captures the functionalities that the software should perform and also establishes benchmarks or service levels for its performance. 

A URS is a subset of the SRS that details user specification requirements. 

The SysRS contains the same information as an SRS, but can also additionally include system capabilities, interfaces, and user characteristics, policy requirements, regulation requirements, personnel requirements, performance requirements, security requirements, and system acceptance criteria.


Testing

Testing is very importan, and there are some diferenct testing types:
  • Funcional testing, that verifies that the systema behaves according to the requirements.
    • Usability
    • Accesibility 
  • Non-Functional testing, this evaluates system quality attributes:
    • Performance
    • Scalability
    • Security
    • Reliability
  •  Regresional, ensures that changes do not break the application funcionality.

In practice functional testing is concerned with inputs and corresponding outputs of the system under test, non-functional testing tests for attributes such as performance, security, scalability, and availability. Meanwhile, regression testing confirms that a recent change to the application, such as a bug fix, does not adversely affect already existing functionality. 

Software Release Stages

  • Alpha – Early internal testing phase
  • Beta – Limited external release for user feedback
  • General Availability (GA) – Official public release 

Software version 

Software versioning is the practice of assigning unique version identifiers to software releases in order to track changes, improvements, bug fixes, and compatibility.

Some common versioning approaches are:

  •  Semantic Versioning (SemVer): MAJOR.MINOR.PATCH, as 2.4.1
  • Calendar Versioning (CalVer): as 2026.01
  • Build metadata: 2.02.2_beta.233154 
Testing levels:
  • Unit (module): Tests individual modules or components.
  • Integration:  Tests interaction between modules.
  • System testing: Tests the complete system against the Software Requirements Specification (SRS).

Software Development Components and Tools

 Back-End

  • JavaScript***
  • Python 
  • Data Bases
  • Secure and autorizations 
  •  
    • Node.js
    • Read JS
    •  Flash
    • Express JS
    • Axion
    • NPM

Front-End

Structure for Developers

  • Recap
  • Team
  • Squad
  • Calendar time
  • Schedules
  • Pair programing (navigator/Driver) 

Development tools

  • Version control systems (Git/Github)
  •  Libraries
  • Frameworks (skeleton, standards)
    •  AngularJS
    • Django
    •  
  •  Components
    • CI/CD
    • Build tools (utilities/servers)
      • Dowloading dependencies
      • Compiling
      • Packaging
      • Running test
      • Deployment 
      •  
  • Packages
 
  
  
 

 Stack

 


 

 

Comunication in software development key points

  • This is very important
  •  You will need some people to talk about 

Programming Language

Interpreted programming languages create source code that runs through an interpreter and is built into your operating system (OS) on your computer or on your web browser. 

The programming languages will be:

  • Compiled (C, C++, Java), this create executable files that are grouped in programs on your computer or device. Take longer time but run faster
  •  Interpreted (Python, JavaScript, HTML) 
  
 
 

 

High level programing language

Query languages, structured programming languages, and object-oriented programming languages are categorized as high-level programming languages.

Data and data base structure

 

Low level  (Asembly)

Assembly languages are categorized as low-level programming languages. 

 

Coding planning methods and organization

The two main methods of organizing and planning code are by developing flowcharts and by writing pseudocode. Flowcharts are pictorial representations of algorithms and pseudocode is an explanation of the function of each line of a program. 

 

Programming Logit

To reference a program component, software developers use an identifier, which can either be a constant or a variable.  

A function is a piece of structured, stand-alone, and reusable code that will perform a single specific action. 

 

 

Object-oriented programming is a programming paradigm based on the concept of objects, which contain data and behavior through attributes and methods.  

 

 

 

Identifierds (constant or variable)

Containers (arrays, vectores)

Functions (create, invoke, )

Objects (properties and method) 

 

Important considerations for software deployment

| Category                    | Aspect                      | Description                                                 | Relevance       |
| --------------------------- | --------------------------- | ----------------------------------------------------------- | --------------- |
| Scalability & Reach         | Scale                       | Ability to handle expected number of users and traffic load |   High          |
|                             | Global vs. Local Deployment | Geographic distribution and latency considerations          |   High          |
| Architecture & Design       | Microservices               | Service-based architecture for flexibility and scalability  |   High          |
|                             | Modularized Code            | Separation of concerns and maintainability                  |   High          |
| Data Management             | Data Flow                   | Movement of data across services and systems                |   High          |
|                             | Data Production & Storage   | Database design, storage capacity, and reliability          |   High          |
| Reliability & Observability | Logging                     | Monitoring system behavior and debugging                    |   High          |
| Security & Compliance       | Privacy Concerns            | Data protection and regulatory compliance                   |   Critical      |
| Deployment Efficiency       | Faster Deployment           | Speed and automation of release cycles                      |   Medium–High   |
|                             | CI/CD Pipelines             | Automated build, test, and deployment workflows             |   High          |

 

 

Entradas populares

SQL

Lo mas consultado

SQL

Entradas populares

SQL