software construction
play

Software Construction Fernando Brito e Abreu (fba@di.fct.unl.pt) - PDF document

Software Construction Fernando Brito e Abreu (fba@di.fct.unl.pt) Universidade Nova de Lisboa (http://www.unl.pt) QUASAR Research Group (http://ctp.di.fct.unl.pt/QUASAR) SWEBOK: the 10 Knowledge Areas Software Requirements Software


  1. Software Construction Fernando Brito e Abreu (fba@di.fct.unl.pt) Universidade Nova de Lisboa (http://www.unl.pt) QUASAR Research Group (http://ctp.di.fct.unl.pt/QUASAR) SWEBOK: the 10 Knowledge Areas � Software Requirements � Software Design � Software Construction � Software Testing � Software Maintenance � Software Configuration Management � Software Engineering Management � Software Engineering Process � Software Engineering Tools and Methods � Software Quality Software Engineering / Fernando Brito e Abreu 12-Apr-05 2 1

  2. Construction is … � “… the detailed creation of working, meaningful software through a combination of coding, verification, unit testing, integration testing, and debugging.” [SWEBOK] 12-Apr-05 Software Engineering / Fernando Brito e Abreu 3 Construction frontiers � Software Design KA � Much design work is performed within the construction activity itself � Software Testing KA � Unit-test and integration-test is performed throughout construction � Software Configuration Management KA � Software construction typically produces the highest volume of configuration items (source files, content, test cases, …) � Software Engineering Tools and Methods KA � Software construction is probably the most tool-intensive of all KAs � Software Quality KA � While SQ is important in all KAs, code is the ultimate deliverable of a software project � Computer Science � Among the Related Disciplines of Sw Engineering, this KA is the most akin to Computer Science due to its use of algorithms and language mechanisms (polymorphism, reflection, type casting, ...) Software Engineering / Fernando Brito e Abreu 12-Apr-05 4 2

  3. Summary � Software Construction Fundamentals � Managing Construction � Practical Considerations 12-Apr-05 Software Engineering / Fernando Brito e Abreu 5 Summary � Software Construction Fundamentals � Managing Construction Managing Construction Managing Construction � � � Practical Considerations Practical Considerations Practical Considerations � � Software Engineering / Fernando Brito e Abreu 12-Apr-05 6 3

  4. Minimizing complexity Motivation � We are limited in the ability to perceive complex structures and information � George Miller, "The Magical Number 7 ± 2 : Some Limits in our Capacity for Processing Information", Psychological Review , n.63, p.81-97, 1956. � In software construction, reduced complexity is achieved through emphasizing the creation of code that is simple and readable � KISS approach (or “small is beautiful”) � The need to reduce complexity is particularly critical to the process of verification and testing 12-Apr-05 Software Engineering / Fernando Brito e Abreu 7 Minimizing complexity How is it distributed? � In large systems, complexity has typically a skew distribution � This skewness is detrimental to maintainers’ turnover Modules 0% 20% 40% 60% 80% 100% Complexity Software Engineering / Fernando Brito e Abreu 12-Apr-05 8 4

  5. Minimizing complexity Do’s and dont’s � Encourage: � Avoid � Short operation bodies � Excessive nesting levels � Standardized identifiers � Unused local variables � Documentation � Unreachable code standards � Unconditional jumps � … � … 12-Apr-05 Software Engineering / Fernando Brito e Abreu 9 Anticipating change � Most software will change over time � Due to changing business or legal requirements � Due to changing platforms / middleware � The anticipation of change drives many aspects of software construction � Extendibility is the ease of adapting software products to changes of specification Software Engineering / Fernando Brito e Abreu 12-Apr-05 10 5

  6. Anticipating change Extendibility techniques � Specialization / Polymorphism � Parametric classes � Java-like interfaces � Module interface documentation � makes it possible to determine whether a certain change need affect a certain module � Dynamically Linked Libraries � Design patterns instantiation � Frameworks � Plug-ins � … 12-Apr-05 Software Engineering / Fernando Brito e Abreu 11 Constructing for verification � Verification (“Do the Job Right”) � Stands for product correctness and consistency in a given development phase, face to products and standards used as input to that phase � Validation (“Do the Right Job”) � Stands for product conformity with specified requirements � Constructing for verification � Stands for building software so that faults can be ferreted out readily by the software engineers writing the software, as well as during independent testing and operational activities Software Engineering / Fernando Brito e Abreu 12-Apr-05 12 6

  7. Constructing for verification Supporting techniques � Following coding standards to support code reviews � Organizing code to support automated testing � e.g. hotkeys handling � Restricting the use of complex or hard-to- understand structures � Using guidelines produced in causal analysis of defects found � Using syntax-aware editors 12-Apr-05 Software Engineering / Fernando Brito e Abreu 13 Standards in construction External standards � Origin: � IEEE, ISO, ECMA, DoD, … � Usually include: � General purpose programming languages (e.g., language standards for C, Java, C++ or C#) Platforms (for example, programmer interface standards for operating system calls, DBMSs,…) Software Engineering / Fernando Brito e Abreu 12-Apr-05 14 7

  8. Standards in construction Internal standards � Origin: � Corporate level or project level � Usually include: � Communication methods (for example, standards for document formats and contents) � See: http://www.12207.com/document.htm � Tools customization and their interoperability 12-Apr-05 Software Engineering / Fernando Brito e Abreu 15 Summary � Software Construction Fundamentals � Managing Construction � Practical Considerations Practical Considerations Practical Considerations � � Software Engineering / Fernando Brito e Abreu 12-Apr-05 16 8

  9. Construction models - planned � Numerous models have been created to develop software, some of which emphasize construction more than others. � Some models are more planned from the construction point of view � e.g. waterfall and staged-delivery life cycle models. � These models treat construction as an activity which occurs only after significant prerequisite work has been completed � including detailed requirements work, extensive design work, and detailed planning. � The more planned approaches tend to: � emphasize activities before construction (requirements and design) � create more distinct separations between the activities. 12-Apr-05 Software Engineering / Fernando Brito e Abreu 17 Construction models - agile � Other models are more iterative � e.g. evolutionary prototyping , Extreme Programming , and Scrum � These approaches tend to: � treat construction as an activity that occurs concurrently with other software development activities, including requirements, design, and planning, or overlaps them. � mix design, coding, and testing activities, and they often treat the combination of activities as construction � Consequently, what is considered to be “construction” depends to some degree on the life cycle model used. Software Engineering / Fernando Brito e Abreu 12-Apr-05 18 9

  10. Construction planning � Construction planning activity includes defining: � the choice of construction method � extent to which construction prerequisites are performed, the order in which they are performed, and the degree to which they are expected to be completed before construction work begins � the order in which components are created and integrated � the software quality management processes � the allocation of task assignments to specific software engineers, and the other tasks 12-Apr-05 Software Engineering / Fernando Brito e Abreu 19 Construction measurement � Numerous construction activities and artifacts can be measured for: � managing construction Equipa de projecto Gestão de projecto Formação da equipa Utilizadores Planos de projecto Análise requisitos Métodos � ensuring quality during Especificação de requisitos Desenho Técnicas Modelos(esquemas, diagramas) Codificação Ferramentas Código fonte Gestão de configurações Sistema operativo Bibliotecas de componentes construction Quantificação e estimação Hardware Modelos de estimação Inspecção Ambiente físico Baterias de teste Calendário Ensaio Código executável Depuração Manuais de instalação Instalação � improving the construction Formação de utilizadores process PRODUTOS RECURSOS ACTIVIDADES Acções de Métricas de Acções de melhoria processo melhoria AVALIAÇÃO QUANTITATIVA Métricas de produto Software Engineering / Fernando Brito e Abreu 12-Apr-05 20 10

Recommend


More recommend