Software Engineering Practical Approach Software effort distribution Planning
Software Engineering “Practical Approach”
Software effort distribution Planning Coding 1/3 Planning 1/6 Coding 1/4 Component testing 1/4 System testing Testing tiv Pr ev en r o Err e e rr Co on i t c Adaptation Software Maintenance: 20% error correction 20% adaptation 60% enhancements Enhancements 2
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 • 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 objectoriented design and development • PREFERRED QUALIFICATIONS • Experience building and operating highly available (24 x 7) 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 In. Design. • Ability to create design prototypes in HTML, Java. Script, 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: • Software Engineering, 9 th Edition by Ian Sommer. Ville, available online @ http: //faculty. mu. edu. sa/public/uploads/1429431793. 203 Software%20 Engineering%20 by%20 Somerville. pdf • Other online resources
- Slides: 13