Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Pragmatics 4 Hours Agenda • Management and Planning • Staffing • Release Management • Reuse • Quality Assurance and Metrics, • Documentation • Tools • Special Topics • The Benefits and Risks of Object Oriented Development. Management and Planning • Risk Management • • • • Technical risks Project architect Non-technical risks Software development managers. Choosing flexible inheritance and efficient mechanism. Relation between customers and developers, timely targets, 3rd party collaborators. • Task Planning • Team meetings, Scheduling the deliverables of macro process. • Intermediate milestones. • Development Reviews • Balance between too many and very few reviews • Use cases to check the functionality • Architectural reviews (Classes and mechanisms) • Informal, peer reviews. Staffing • Resource Allocation • First object-oriented project more time and more staff. • Analysis, Developing, Testing, Maintaining • Development Team Roles • Central roles of OO team are Project architect, Component Lead and Application Engineer. For larger projects: • Project Manager • Analyst • Reuse engineer • Quality assurance • Integration manager • Documenter • Toolsmith • System administrator Release Management • Configuration management and version control • Individual component integrated internal release operational release • Versions lowest level – class. • Along with source code, specifications, architecture documents should be under configuration management. • Integration • Incremental and iterative approach. • Release is possible when major components are stable. • Testing • Unit testing – testing individual classes and mechanisms. • Component testing - Subsystem testing. • System testing – testing the system as a whole. Reuse • Elements of reuse • Any Artifact can be reused. • Classes, components, framework. • Any amount of reuse is good. Saves resources. • Institutionalizing Reuse • Opportunities of reuse should be sought out and rewarded. • Individual for reuse activity. • Commercial class and component libraries. • Beneficial in long term and not only for the current project. Quality Assurance and Metrics • Software Quality • Architecture plays vital role • Development reviews and inspections • Defect-discovery ratio. • Defect-density: no. of defects per thousand source lines of code. • Object-Oriented Metrics • Process and Product metrics. • Process • Number of key classes (NKC) • Classes per developer (CPD), etc. • Product metrics • Weighted methods per class (WMC) - Sum of the complexities of each method of an individual class • Depth of inheritance tree (DIT) • Number of children (NOC), etc. Documentation • Documentation Legacy • Gives insight of the progress of the project. • Visual models helps in tracing back to requirements. • Documentation Contents • Apart from end-user documentation, analysis documentation, architectural, implementation documentation. • Worst possible documentation – documenting each class, each method. • Higher level structures should be documented. Tools • If software is big then tools will increase. • Scalable tool. • Kinds of Tools • Visual Modeling tool with UML support (analysis) • Software configuration and version control tool (development) • Class library tool – predefined library, keeps building, reuse • Organizational Implications • Reuse engineer • Toolsmith • Managers facing shortage of resources Special Topics • Domain-specific Issues • • • • Effective user interfaces Database Component Real-time systems Legacy systems • Adopting Object-Oriented Technology • Provide formal training (UML, OO analysis and design, tools, language and libraries) • Low-risk project first and allow them to learn (OOAD consultants, Growing expertise, let them act as mentors) • Expose them to examples of well-defined OO systems. Benefits and Risks of Object-Oriented Development Benefits • Appeals to working of human cognition • Systems are resilient to change • Encourages reusability • Reduces development risks • Exploits expressive power of OO programming languages Risks • Personnel shortfalls • Unrealistic schedules, budget. • Shortfalls in products, external components • Mismatch in requirements • Shortfalls in architecture • Continuing stream of requirement change • Shortfalls in external tasks.