Software Engineering (SE) (10%)
SE1. Software design [core]
SE2. Using APIs [core]
SE3. Software processes [core]
SE4. Software requirements and specifications [core]
SE5. Software validation [core]
SE6. Software evolution [core]
SE7. Software project management [core]
Recommended Books:
1. Software Engineering by R.S. Pressman (This book has wide coverage of SE topics.)
2. Software Engineering by Somerville (The book emphasizes on practical SE )
Software engineering employs engineering methods, processes, techniques, and measurement. It benefits from the use of tools for managing software development; analyzing and modeling software artifacts; assessing and controlling quality; and for ensuring a disciplined, controlled approach to software evolution and reuse. Software development, which can involve an individual developer or a team of developers, requires choosing the tools, methods, and approaches that are most applicable for a given development environment.
The elements of software engineering are applicable to the development of software in any computing application domain where professionalism, quality, schedule, and cost are important in producing a software system.
Minimum core coverage time: 8 hours
Topics:
- Fundamental design concepts and principles
- Design patterns
- Software architecture
- Structured design
- Object-oriented analysis and design
- Component-level design
- Design for reuse
- Discuss the properties of good software design.
- Compare and contrast object-oriented analysis and design with structured analysis and design.
- Evaluate the quality of multiple software designs based on key design principles and concepts.
- Select and apply appropriate design patterns in the construction of a software application.
- Create and specify the software design for a medium-size software product using a software requirement specification, an accepted program design methodology (e.g., structured or object-oriented), and appropriate design notation.
- Conduct a software design review using appropriate guidelines.
- Evaluate a software design at the component level.
- Evaluate a software design from the perspective of reuse.
Topics:
- API programming
- Class browsers and related tools
- Programming by example
- Debugging in the API environment
- Introduction to component-based computing
- Explain the value of application programming interfaces (APIs) in software development.
- Use class browsers and related tools during the development of applications using APIs.
- Design, implement, test, and debug programs that use large-scale API packages.
Topics:
- Software life-cycle and process models
- Process assessment models
- Software process metrics
- Explain the software life cycle and its phases including the deliverables that are produced.
- Select, with justification the software development models most appropriate for the development and maintenance of a diverse range of software products.
- Explain the role of process maturity models.
- Compare the traditional waterfall model to the incremental model, the object-oriented model, and other appropriate models.
- For each of various software project scenarios, describe the project's place in the software life cycle, identify the particular tasks that should be performed next, and identify metrics appropriate to those tasks.
SE4. Software requirements and specifications [3%] [core]
Minimum core coverage time: 4 hours Topics:
- Requirements elicitation
- Requirements analysis modeling techniques
- Functional and nonfunctional requirements
- Prototyping
- Basic concepts of formal specification techniques
- Apply key elements and common methods for elicitation and analysis to produce a set of software requirements for a medium-sized software system.
- Discuss the challenges of maintaining legacy software.
- Use a common, non-formal method to model and specify (in the form of a requirements specification document) the requirements for a medium-size software system.
- Conduct a review of a software requirements document using best practices to determine the quality of the document.
- Translate into natural language a software requirements specification written in a commonly used formal specification language.
Topics:
- Validation planning
- Testing fundamentals, including test plan creation and test case generation
- Black-box and white-box testing techniques
- Unit, integration, validation, and system testing
- Object-oriented testing
- Inspections
- Distinguish between program validation and verification.
- Describe the role that tools can play in the validation of software.
- Distinguish between the different types and levels of testing (unit, integration, systems, and acceptance) for medium-size software products.
- Create, evaluate, and implement a test plan for a medium-size code segment.
- Undertake, as part of a team activity, an inspection of a medium-size code segment.
- Discuss the issues involving the testing of object-oriented software.
Topics:
- Software maintenance
- Characteristics of maintainable software
- Reengineering
- Legacy systems
- Software reuse
- Identify the principal issues associated with software evolution and explain their impact on the software life cycle.
- Discuss the challenges of maintaining legacy systems and the need for reverse engineering.
- Outline the process of regression testing and its role in release management.
- Estimate the impact of a change request to an existing product of medium size.
- Develop a plan for re-engineering a medium-sized product in response to a change request.
- Discuss the advantages and disadvantages of software reuse.
- Exploit opportunities for software reuse in a given context.
Topics:
- Team management
- Team processes
- Team organization and decision-making
- Roles and responsibilities in a software team
- Role identification and assignment
- Project tracking
- Team problem resolution
- Project scheduling
- Software measurement and estimation techniques
- Risk analysis
- Software quality assurance
- Software configuration management
- Project management tools
- Demonstrate through involvement in a team project the central elements of team building and team management.
- Prepare a project plan for a software project that includes estimates of size and effort, a schedule, resource allocation, configuration control, change management, and project risk identification and management.
- Compare and contrast the different methods and techniques used to assure the quality of a software product.
No comments:
Post a Comment