Skip to content

Eva254-ke/software-engineering

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

software-engineering

SE_Day1_Assignment

#Part 1: Introduction to Software Engineering

Explain what software engineering is and discuss its importance in the technology industry. Software engineering is the systematic approach to designing, developing, testing, and maintaining software applications. It involves applying engineering principles to the software development process to ensure quality, reliability and efficiency.Software engineering is crucial in today's technology-driven world. It underpins the development of various software applications, from simple mobile apps to complex enterprise systems by following structured methodologies and best practices, software engineers can deliver high-quality software that meets user needs and business objectives.

Identify and describe at least three key milestones in the evolution of software engineering.
The First Generation (1940s-1950s): This era marked the birth of computing, with early programmers writing code directly in machine language. The Second Generation (1950s-1960s): Assembly languages emerged, allowing programmers to write code in a more human-readable format. The Third Generation (1960s-1970s): High-level programming languages like FORTRAN and COBOL were developed, significantly improving programming productivity.

List and briefly explain the phases of the Software Development Life Cycle. Requirement Gathering and Analysis: Identifying the needs and requirements of the software. Design: Creating the architectural blueprint of the software. Implementation: Writing the actual code. Testing: Verifying the software's functionality and identifying defects. Deployment: Deploying the software to the production environment. Maintenance: Ongoing updates and bug fixes.

Compare and contrast the Waterfall and Agile methodologies. Provide examples of scenarios where each would be appropriate. Waterfall: A linear, sequential approach where each phase is completed before moving to the next. It's suitable for projects with well-defined requirements and minimal changes. Agile: An iterative approach that emphasizes flexibility and customer collaboration. It's ideal for projects with evolving requirements and rapid development cycles.

Describe the roles and responsibilities of a Software Developer, a Quality Assurance Engineer, and a Project Manager in a software engineering team. Software Developer: Writes, tests, and debugs code. Quality Assurance Engineer: Ensures software quality through testing and analysis. Project Manager: Oversees the entire software development process, including planning, scheduling, and resource allocation. Discuss the importance of Integrated Development Environments (IDEs) and Version Control Systems (VCS) in the software development process. Give examples of each. IDEs: Integrated Development Environments provide tools for code editing, debugging, and building. Examples include Visual Studio Code and IntelliJ IDEA. VCS: Version Control Systems track changes to code over time. Examples include Git and SVN. What are some common challenges faced by software engineers? Provide strategies to overcome these challenges. Tight Deadlines: Prioritize tasks, break down work into smaller chunks and use time management techniques. Changing Requirements: Maintain flexibility, use agile methodologies, and have effective communication channels. Technical Debt: Regularly refactor code, prioritize technical tasks and avoid shortcuts.

Explain the different types of testing (unit, integration, system, and acceptance) and their importance in software quality assurance. Unit Testing: Testing individual components of the software. Integration Testing: Testing the interaction between different components. System Testing: Testing the entire software system. Acceptance Testing: Testing the software to ensure it meets user requirements #Part 2: Introduction to AI and Prompt Engineering

Define prompt engineering and discuss its importance in interacting with AI models. Prompt engineering is the art of crafting effective prompts to guide AI models in generating desired outputs. It involves understanding the capabilities and limitations of the AI model and providing clear, concise, and specific instructions

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: "Write something about a cat." Improved Prompt: "Write a short story about a curious cat who gets lost in a magical forest."

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published