130 likes | 151 Views
Explore the systematic development process, effort distribution, and team roles in software engineering. Learn about planning, coding, testing, error correction, preventive maintenance, and more.
E N D
Software Engineering “Practical Approach”
Software effort distribution 1/3 Planning 1/6 Coding 1/4 Component testing 1/4 System testing Planning Coding Testing Error Correction Preventive Software Maintenance: 20% errorcorrection 20% adaptation 60% enhancements Adaptation Enhancements
Definition Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.
Contents. • Software Development Life Cycles (Methodologies)(Idea, planning, requirements, design, implementation, testing, maintenance) • Water fall • V-Model • Agile Methodology • Business Requirement Document (BRD) Vs System Requirement document (SRD) • Data Access Object • Design Patterns • Prerequisite: Inheritance • Prerequisite: Encapsulation
Contents Cont. • Unit testing (Using Junit and Mocks) • Integration Tests • Service Oriented Architecture • Software as a service • Tools: • Version Control Software (git) • Code Review • Bug (features) tracking system • Soft Skills (Interview Questions) • Example: Do you remember a conflict with one of your teammates? What was the issue and how did you resolve it?
Software Development Team • Program Manager • UI Designer • SDE • SDET • QA • Team Lead (Manager)
Program Manager (Microsoft) • Responsibilities: • Define and deliver components for our ecosystem • Create, evolve, and communicate feature area specifications • Demonstrate a strategic understanding of the timing and rationale for design choices for a feature area • Help define and document the product vision • Qualifications • Have a proven track record of clear written and oral communication • Work well in groups and with customers & partners and demonstrate high emotional intelligence • Have a strong developer/coding background (TPM)
SDE (Amazon) • BASIC QUALIFICATIONS • 2+ years of software development experience and a degree (BS, MS, or higher) in computer science or a related discipline• Fluency and experience in either Java or C#• Excellent problem solving ability and detailed knowledge of object-oriented design and development • PREFERRED QUALIFICATIONS • Experience building and operating highly available (24x7) systems• Designing and implementing highly scalable RESTful web services
UX Designer (Microsoft) • Responsibilities: • Simplify and distill complex business processes into intuitive and elegant UI • Work closely with cross-functional teams to help define business and feature requirements, user scenarios and use cases. • Create process flows, wireframes, and mockups • Qualifications • Bachelor's degree in design, human-computer interaction (HCI) • Proficiency in a variety of design tools such as Photoshop, Illustrator, Fireworks and InDesign. • Ability to create design prototypes in HTML, JavaScript, CSS. • Excellent communication, presentation, interpersonal and analytical skills.
SDET (Groupon) • Responsibilities: • Design and implement tools and infrastructures that will be utilized across multiple test and development teams. • Help developers write better tests • Ensure test coverage of new and existing features. • Analyze for potential problems before code has been committed. • Qualifications • Experience with compiled languages such as Java, C#. • Experience with automated testing tools and technologies, including but not limited to Selenium, Capybara, Watir, and Sahi. • Proficiency with scripting languages such as Ruby or Python.
QA (Amazon) • Responsibilities: • Be responsible for manual and automated testing of features across various platforms including web and mobile • Own the development and execution of test plans and test cases • Create and edit automated test cases • Triage crash logs • Qualifications • Ability to create scripts from scratch in at least one language • Understanding of Object Oriented programming basics and ability to edit code • Hands-on experience with manual and automated testing, with expertise in SQA methodologies, techniques, and approaches • Experience leading a variety of types of testing, including regression, performance, stress, unit, integration, and security testing
Team Lead (Twitter) • Responsibilities: • Effectively coach, mentor and guide the technical and professional development of the members of the team. • Scale the team up by sourcing and hiring both externally and internally, and keep a super high bar while doing so! • Ensure the team fully understands the goals and objectives of Twitter as a company and how their work fits into the bigger picture. • Partner with product vertical teams to capture requirements • Qualifications • Strong CS fundamentals • A solid grasp on good software engineering practices. • Great communication skills.
Reference Reference: • Software Engineering, 9th Edition by Ian SommerVille, available online @ http://faculty.mu.edu.sa/public/uploads/1429431793.203Software%20Engineering%20by%20Somerville.pdf • Other online resources