Skip to content
This repository was archived by the owner on Apr 10, 2026. It is now read-only.

About

software-engineering-august-2024-cohort-se_day1_assignment-SE_Day1 created by GitHub Classroom

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Open in Visual Studio Code

SE_Day1

Software Engineering Day1 Assignment

#Part 1: Introduction to Software Engineering

Explain what software engineering is and discuss its importance in the technology industry.

   Software engineering is a systematic application of putting engineering methods into practice to design, develop, and maintain programs alongside their testing and deployment activities. 

Its Importance in the technology industry are: It makes the software development process more efficient and meets schedule requirements and financial constraints. It Focuses on delivering reliable and bug-free software. The technology benefits from scalability features, allowing programs to grow with rising operational requirements. Software engineering is responsible for modern technological advancements because it leads to the development of innovative solutions that solve complex problems.

Identify and describe at least three key milestones in the evolution of software engineering.

  1. 1968: NATO Software Engineering Conference: During the NATO Software Engineering Conference 1968, experts adopted "software engineering" to manage the growing "software crisis" of creating large-scale software systems.

  2. 1970s: Structured Programming: The adoption of modularity along with top-down design principles as structured programming concepts established enhanced code maintainability while improving its quality.

  3. 1990s: Agile Manifesto: Software development now uses Agile methodologies as a flexible approach instead of rigid plan-driven approaches.

List and briefly explain the phases of the Software Development Life Cycle.

  1. Requirements Gathering: The necessary functionality or business of the software needs to be studied and adequately documented.
  2. Design: The development team generates vital specifications, which include architectural blueprints and design documents.
  3. Implementation (Actual Coding): Implementation of the code begins with writing the software following the design requirements.
  4. Testing: The testing process should confirm that the software functions according to its specifications, and it is bug-free.
  5. Deployment: Users receive the application through its release process. That’s take the development activities into production environment for users accessibility.
  6. Maintenance Software maintenance functions to remedy faults boost speed and introduce additional functionalities.

Compare and contrast the Waterfall and Agile methodologies. Provide examples of scenarios where each would be appropriate.

The software development process in Waterfall models offers little flexibility for implementing changes, whereas Agile uses adaptability to handle changes easily. Waterfall Method approach is linear and sequential while Agile approach is iterative and incremental. The waterfall team deliver the entire application at thye end while for the agile team, they delivers working increments in short iterations. The waterfall model is appropriate in scenarios such as building of bridge where fixed requirements are needed, whereas agile approach is appropriate in developing mobile apps where user needs have to be met.

Describe the roles and responsibilities of a Software Developer, a Quality Assurance Engineer, and a Project Manager in a software engineering team.

  1. Software Developer: Writes and maintains code. The developer works alongside team members to bring designs into functional features.
  2. Quality Assurance (QA) Engineer: Quality assurance testing with bug identification serves to ensure software meets required standards. The QA engineer creates automated testing procedures through written test cases.
  3. Project Manager: The project manager oversees the project timeline while managing budget, resources, and budget planning. Acts as a bridge between stakeholders and the development team.

Discuss the importance of Integrated Development Environments (IDEs) and Version Control Systems (VCS) in the software development process. Give examples of each.

Integrated Development Environments (IDEs): IDEs are a single platform combining coding tools, debugging capabilities, and testing features. Examples: Visual Studio Code, IntelliJ IDEA, Eclipse, Pycharm Version Control Systems (VCS): Development teams can collaborate and restore previous code versions through the tracking system provided through the use of Version Control Systems. Examples: GitHub, GitLab, Gitbucket.

What are some common challenges faced by software engineers? Provide strategies to overcome these challenges.

  1. Changing Requirements:
    • Use Agile methodologies to adapt to changes.
  2. Technical Debt: Refactor code regularly and prioritize clean code practices.
  3. Poor Communication: Hold regular meetings and use collaboration tools (e.g. Scrum, Jira).

Explain the different types of testing (unit, integration, system, and acceptance) and their importance in software quality assurance.

  1. Unit Testing: Tests individual components or functions. Example: Testing a single function in a booking app.
  2. Integration Testing: Tests interactions between components. Example: Testing how the signup module interacts with the database.
  3. System Testing: Tests the entire system as a whole. Example: Testing the entire bookingFlights website.
  4. Acceptance Testing: Ensures the software meets user requirements. Example: User testing a new feature in the bookingFlights website.

#Part 2: Introduction to AI and Prompt Engineering

Define prompt engineering and discuss its importance in interacting with AI models.

  Prompt engineering is the process of designing and refining inputs (prompts) to guide AI models, such as ChatGPT, to produce desired outputs. It involves crafting clear, specific, and contextually relevant prompts to improve the accuracy and relevance of AI responses.
      Its Importance is: It enables better interaction with AI for tasks like content generation, coding, and problem-solving.

Provide an example of a vague prompt and then improve it by making it clear, specific, and concise. Explain why the improved prompt is more effective. Vague Prompt: “Tell me about history”. Too broad; the AI doesn’t know which historical event or era to focus on. Improved Prompt “Provide a summary of the evolution of computers since their Invention” Why It’s Better: It is Specific: Focuses on Computers evolution since Invention Clear: Asks for evolution of computers Concise: Asks for summary

About

software-engineering-august-2024-cohort-se_day1_assignment-SE_Day1 created by GitHub Classroom

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors