240 likes | 296 Views
Software Engineering Methods and Technologies by Alfonso Fuggetta and Laura Sfardini. Presented by: Nestor Rivera EEL6883 UCF Spring 07. Introduction. Software is critical, complex, distributed. Software Engineering (concepts, principles)
E N D
Software Engineering Methods and Technologiesby Alfonso Fuggetta and Laura Sfardini Presented by: Nestor Rivera EEL6883 UCF Spring 07
Introduction • Software is critical, complex, distributed. • Software Engineering (concepts, principles) • Also goal oriented (practical methods, and technologies) • Developers often disoriented. • Author presents coherent and comprehensive view.
Organization • Classification Scheme: • Existing Methods • Software Development Technologies • Process Support Technologies • Infrastructure Technologies • Important Topics (open source movement and economics of software development) • Conclusions
Classifying Methods and Technologies • Major changes (Internet and the WWW, component based software technologies) • Not an ideal classification, but better than SWEBOK. • 4 Main categories: • Methods -> orderly process in engineering . • Development Technologies -> create, evolve, test artifact. • Process Support Technologies -> support process wide activities. • Infrastructure Technologies -> enabling layer.
Software Methods • Concepts, notions, guidelines and techniques. • Either embedded in specific technologies or knowledge used. • Include 4 different Entities: principles, development techniques, meta-methods and style and patterns
Software Methods - Principles • Define foundation (modularity, robustness, interoperability, design for change, and software quality) • Modularity -> information hiding, cohesion, hierarchical decomposition, and decoupling. • Design for change (distributed applications)-> flexibility, scalability, extensibility. • Software Quality (usability, reliability, efficiency, maintainability, portability, customer satisfaction)
Software Methods: Development Techniques • Informal: no formal syntax or semantics, only guidelines/principles (i.e. agile methods, extreme programming, UP) • Semi-formal: syntax and no semantics (i.e. design methods: data flow, OOD, and structure design) • Formal: formal notations and procedures (i.e. model checking and temporal logic)
Software Methods: Meta-methods • Better structure, organize, and assess process and outcomes. • GQM: establish and operate a measurement program • CMM: assessment and capability evaluation model .
Software Methods: Styles and Patterns • Number of recurring and classical schemes: • Problem frames: Jackson – typical problems. • Analysis Patterns: refined form – i.e. customer-order setting. • Architectural Styles: typical structure – i.e. client-server, peer-peer. • Design Patterns: finer grained concepts – i.e. factory and observer patterns. • Represented by DL (UML) • Streamline analysis and design. • Facilitate structured knowledge and reuse.
Development Technologies • Ultimate goal: deliver code. • Dev tools and environments are most popular. • Development: activities directly related to producing code. • 4 main categories: • Languages • Tools • Tool Sets • Environments
Development Technologies – Programming Languages • Most popular class. • Innovative programming languages (Java, C++, C#) • Compile and interpreter strategies. • Object Oriented Paradigm. • Java (byte code)
Development Technologies: Description Languages • Requirements and design: description languages (textual and graphical notation i.e. UML) nature of problem or architecture. • Two main groups: • Semiformal: precise syntax, no semantics – i.e. DFD, SADT, FD (useful to describe real world) • Formal: precise syntax and semantics. i.e. TRIO, Petri-Nets, and Z. Recently ADL • UML is most popular (collection of independent, semi-formal and formal languages). UML 2 is coming.
Development Technologies: Mark-up Languages • Internet and WWW. • Describe different kind of entities. • Early: LaTex. • Most famous: HTML. • Latest and most promising: XML.
Development Technologies: Domain Specific Languages • Specialization of description languages. • i.e. XMI: easy interchange of meta-data between modeling tools (OMG-UML) and meta-data repositories (OMG-MOF) in distributed heterogeneous environments. • i.e. RDF (W3C) integrates variety of applications from library catalogs and world-wide directories.
Development Technologies: Query Languages • SQL: used in modern DBMS. • RQL: query language for RDF data. • All these languages types (programming, markup, domain-specific, and query) -> basic entities (code and data). • Widely exploited in tools, tool sets, and environments.
Development Technologies: Tools • Programs -> support a specific phase. • Classes: • Description/Analysis: description of problem and software solutions –DL i.e. Rational Rose (UML) • Programming: create code i.e. compilers, generators, debuggers. • V&V: static/dynamic code analyzers, test management tools, performance analyzers. • Reverse Engineering & Reengineering: extract high level abstract info -> maintenance & evolution • CM: manage/organize coding activity & work products –multi-person development project (i.e. CVS, Clearcase)
Development Technologies: Tool Sets and Environments • Integrated tools -> tool sets & environments. • Tools sets (workbenches): specific phase. • Environments: total comprehensive solution. • Distinction valid, but fading away (tools are being incorporated into environments through infrastructure) • i.e. JBuilder is a tool set and Eclipse is an environment.
Process Support Technologies • Not specific to any phase. • Provide features to support overall management and control of the process. • Main classes: • Generators: creation of tools and tools sets/environments (i.e. early: yacc and lex; modern: plug-in Eclipse) • Process and workflow technologies: describe process (steps, rules, expected deliverables) • Project management: plan and track project (i.e. Microsoft Project, COCOMO) • Software Deployment and application management: deploy solution in target environment & manage its operation.
Infrastructure Technologies • Not peculiar to SE. • Often identified by middleware. • Three main classes: • Protocols and Services: exchange info and control interaction (i.e. UDDI, IIOP, SOAP) • System Components: run-time services for a variety of operations (OS, JVM, DBMS, communication middleware, web-servers, app-servers) • Platforms for Component Software: coherent and structured sets of systems components built around a common conceptual model (i.e. J2EE, .Net)
Related Topics • Help grasp and capture modern trends in SE: open source movement and economics of software development. • Open source success: i.e. Apache & Linux. • Open source system components, tool sets: i.e. Eclipse, Tomcat and J-Boss. • Some technologies amenable to revenues from services and strongly distributed setting. • Need to carefully evaluate potential impact in future software engineering technology. • Worldwide market will affect nature and structure of SE technology. • These 2 challenges will affect classification scheme.
Conclusions • Classification Scheme for SE methods & technologies. • Key criteria to analyze and compare. • Extensions to a previous paper (mainly due to WWW) • Never-ending process. • New business models and open source. • SE is dynamic, complex and challenging so a classification is essential.
My Thoughts… • A very good high-level overview of the entire software engineering discipline. • Snap-shot of the current software Engineering techniques and technologies. • The Glossary was very useful. • SE is overwhelming, so it is useful to have a classification scheme and look at the big picture. • Is software really the core of new products? How about hardware?
Additional References • http://www.wikipedia.com • Sommerville, Software Engineering Vol. 7.