Welcome... Creating Software Engineers - A Systemic View Dr. F.C. Kohli CSEE &T 2002, Feb 27,2002 Cincinnati, USA Agenda • • • • The “Engineering” of Software Core competencies for a Software Engineer Initial Education & Continuous Learning Systemic view of creating Software Engineers • Knowledge Portal • Role of Professional bodies • Education for a taxonomy of IT careers • Conclusions Engineering • Profession in which knowledge of Physical & Natural Sciences gained by – Study,Experience & Practice is applied with judgement to develop ways to utilize economically – the materials & forces of nature for the benefit of mankind. ….. Engineering Council for Professional Development Why Engineering in Software Development? • Software development involves – – – – – – – Disciplined problem solving Analysis of problem Product specification Identification of Component Interfaces / Sub-assemblies Process and Project Management Skills Prototypes Reuse • As many programmers learn skills on the job, an engineering mindset brings a process discipline Software and Software Engineering • Software Engineering is a systematic approach to the development, operation, maintenance and retirement of software [IEEE]. • Software is the modelling and implementation of the – philosophy, – methodology and – knowledge of accomplishing a task into computer codes. 5 P’s of Software Engineering • • • • • Product (Software) Problem (Domain) Process (Development Process) Project (Project Management) People (Team) Dynamics of Software Development • We need to have an integrated perspective on software development (including both management functions like planning, controlling and staffing, as well as software production activities like designing, coding, testing, etc.) [Abdel-Hamid & Madnick, 89] • Software project management system is far more complex conglomerate of interdependent variables Ref. T.K. Abdel-Hamid and Stuart E. Madnick, “Lessons Learned from Modeling of Dynamics of Software Development” Communications of the ACM, Vol. 32, No. 12, 1989, pp.1426-1455 3 Core Competencies of a Software Engineer • Systems Engineering • Software Engineering • Concurrent Engineering Core Competencies • Systems Engineering – Recognize and handle complexity in consulting assignments – Perceive systems as a network of inter related subsystems – Probe beyond and behind the obvious during problem diagnosis / discovery phases – Understand the needs and constraints of all stakeholders in the system – Get better understanding of the domain leading to lasting solutions rather than quick fixes – Treat quantitative and qualitative models with equal respect (perceptions are as important as hard data in societal applications) – Aligning Business and Information systems architectures Core Competencies (contd…) • Software Engineering – Application of scientific knowledge in the design and construction of computer programs and the associated documentation • Concurrent Engineering – involves the interaction of diverse group of individuals who may be scattered over a wide geographic range – takes advantage of shared information – allows simultaneous focus on different phases of the software development life cycle. Software Engineering Education • Creation of intellectual assets – Choice of raw material – Process of converting the raw material into usable assets • Guarding against obsolescence • Matching business needs and individuals’ aspirations • Learning through experience sharing Ability to Handle Complexity Growth in Technology S Skills Updation S Complexity in Consulting O Continuing Education S Induction Continuing Education Ability to handle variety S S Overall Dvelopment S S Productivity Experience Gained S S Recruitment S S Induction Training O Need in Projects Handling of new Problem Domain Growth in Business S S O Outflow from S Training TCS Induction Training Model • Input – Predominantly Engineers from heterogeneous disciplines • Concepts - Skill - Attitude Triad – Engineering Process • Core Competencies • Mini-case implementation – Core fundamentals of Computer Science – Technologies – Life skills • “Learning to Learn” paradigm • Feedback & measuring effectiveness of training SE Education - A Curriculum • SE Module – – – – – – Systems & Concurrent Engineering Requirements Modeling Software Design (Structured and OOAD) Static and Dynamic Testing Software Quality Project (mini-case) implementation • Computer Science foundations – Computer Architecture / Operating Systems – Discrete Mathematics / Data Structures and Algorithms – DB & Network Technology • Life Skills – Communication / Team Work / Presentation skills Creating Software Engineers • Current Scenario IT Education – Immature Discipline – Non consensus on Body of Knowledge – Delay in building infrastructure, general technical education, quality faculty, relevant curriculum and getting accreditation Industry – Manpower requirement based mainly on short-term revenue targets – Delays in technology absorption – Deployment of HR with skill mismatch Telecom Infrastructure Accreditation Policy Funds Creating Software Engineers - A Systemic View General Technical Education Fees Recognition of KP Quality Human Knowledge Resources Portals Skill Training IT Education Institutions Infrastructure Quality of Faculty Professional Bodies R&D Outflow for IT Experience Gained Need in Industry Technology Watch Art & Science of Living Relevant Curriculum Moving up the Value Chain Continuing Education Growth in Process Discipline Business Quality Domain Knowledge Complexity in Consultancy Brand Image General Education & IT Education - linkage • Mindset developed in General Education has to be ported to IT education – – – – – – – – – Abstraction capability Instrumentation, Measurement & Empirical formulation Modeling & Behavior extrapolation Inspection & Quality Control Elegance of Design User friendly Interfaces Safety considerations Aesthetics & “Patterns” Brevity & Clarity of communication Knowledge Portal An Education Transversal Grid College 1 College n Resource Institute * * Course - 2 Experts, Mentors Course - 1 Course Coordinator Knowledge Portal • Content Authoring – Content Creation – Content Delivery – Content Monitoring / Updation • Issues – – – – – – An active facilitation by experts (Hand holding) Evaluation and Feedback Mentoring Industry’s experiences Professional Body’s input Accreditation / Recognition Creating a Learning Environment • Abstract Industry experience and pass it to Academia • Right faculty at right time – through e-Learning mode • Relevant curriculum Knowledge Management Role of Professional Body • Technology watch • Influencing Policy • Arbiter between Academia and Industry Role match across various Work Levels Application Assistants Diploma holders / Secondary / Associate Degree holders Entry Level Programmers Bachelors in Arts / Science / Commerce / Humanities / Maths System Integrators (Hardware / Software Maintenance) System Integration / Systems Training Software Engineers (Product Development / Requirement Specification) Bachelors in Engineering / Graduate in Management Managers / Project Leaders Bachelors in Engineering / Graduate in Management Research and Education Masters in Engineering / Ph.Ds Conclusion • Knowledge Portal to facilitate e-Learning & acceptance of the e-mode of learning by all • Professional Bodies to play a more proactive role • Industry to abstract experiences into knowledge capsules • Art and Science of Living • “Body of Knowledge in IT” relevant to different educational streams Thank you