Well, as the title states we'll be addressing software development topics (mainly in English). Topics will be quick and short and most probably aligned with the training "problems", sorry, programs I am involved in. PS. Some links are "internal" (not publicly available): If you are not able to reach it, google will find you a publicly available information source for sure. Happy trails to you.
terça-feira, 5 de dezembro de 2017
TOOLS: Java Code Coverage Tools
terça-feira, 24 de outubro de 2017
BOOK: "Extreme Programming Explained: Embrace Change, 2nd Edition" (The XP Series) - Kent Beck
https://martinfowler.com/bliki/ExtremeProgramming.html
sexta-feira, 23 de junho de 2017
BOOK: The Mythical Man Month
https://www.amazon.com/gp/aw/d/0201835959/ref=pd_aw_sim_14_3?ie=UTF8
Quoting:
"Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.
The added chapters contain (1) a crisp condensation of all the propositions asserted in the original book, including Brooks' central argument in The Mythical Man-Month: that large programming projects suffer management problems different from small ones due to the division of labor; that the conceptual integrity of the product is therefore critical; and that it is difficult but possible to achieve this unity; (2) Brooks' view of these propositions a generation later; (3) a reprint of his classic 1986 paper "No Silver Bullet"; and (4) today's thoughts on the 1986 assertion, "There will be no silver bullet within ten years.""
Methodologies: Test Driven Development
https://martinfowler.com/bliki/TestDrivenDevelopment.html
Quoting:
"Test-Driven Development (TDD) is a technique for building software that guides software development by writing tests. It was developed by Kent Beck in the late 1990's as part of Extreme Programming. In essence you follow three simple steps repeatedly:
Write a test for the next bit of functionality you want to add.Write the functional code until the test passes.Refactor both new and old code to make it well structured.
You continue cycling through these three steps, one test at a time, building up the functionality of the system. "
The book (by Kent Beck):
https://www.amazon.com/gp/product/0321146530?ie=UTF8
quinta-feira, 22 de junho de 2017
Conferência: Agile Portugal 2017 (PT)
In Portugal this is (was) it:
Quoting:
"Agile Portugal is the premier international conference in Portugal about agile software development and its practices, technologies, attitudes and experiences. Created with both experts and beginners in mind, Agile Portugal is the place where the Portuguese agile community comes together to exchange and share their experiences about agile development approaches."
The presentations can be found here (PDF).
quarta-feira, 21 de junho de 2017
Maven for building Java applications - Tutorial
The Short Story
What is Maven? Maven is a Build Manager. If the next question of yours is: What the hell is a build manager and why do I need it? Then you should consider using, that famous search engine... Google?The Long Story
Maven for building Java applications - TutorialSW Design: What is Mule ESB?
What is Mule ESB? | MuleSoft
SW Testing: Appium (test automation; mobile development)
The short story
The long story
"“A central idea to DevOps is to automate deployment and testing process, which can make this working relationship much easier and more lucrative. Test automation is quickly becoming an essential element of agile software development,” (...). But what are its concrete applications when examined in a practical scenario? To find out more about this topic, see the Test Automation whitepaper which provides an entry into the world of test automation and investigates its challenges through practical use cases and specific fields of application."
SW Construction: Checkstyle in Eclipse
The short story
Checkstyle is a static analysis tool with an Eclipse Plugin (it also has a Maven plugin), that allows you to... check style. An excellent article describing how to install, configure for a project and run for reporting (things about style, duh) can be found here:The Long Story
Some modules are readily available, saving you lots of time configuring the tool:
"Checkstyle defines a set of available modules, each of which provides rules checking with a configurable level of strictness (mandatory, optional...). Each rule can raise notifications, warnings, and errors. For example, checkstyle can examine:
- Javadoc comments for classes, attributes and methods;
- Naming conventions of attributes and methods;
- Limit of the number of function parameters, line lengths;
- Presence of mandatory headers;
- The use of packets imports, of classes, of scope modifiers and of instructions blocks;
- The spaces between some characters;
- The good practices of class construction;
- Duplicated code sections;
- Multiple complexity measurements, among which expressions." (Source: Wikipedia)
Similar tools
Estimation: PERT / Three Point Estimation Technique
As for Waterfall, a combination of decomposition (WBS), PERT / 3 point estimation (weights sum up 6) and iterative reevaluation could be used.
What is exactly the 3 point estimation and PERT? Google says:
- www.techrepublic.com/blog/it-consultant/use-pert-technique-for-more-accurate-estimates/
- http://www.pmdocuments.com/pert-three-point-estimation-technique/
- http://www.pmbypm.com/3-point-estimate-is-different-from-pert/
- https://en.wikipedia.org/wiki/Three-point_estimation
"PERT is an estimating technique that uses a weighted average of three numbers (see below) to come up with a final estimate.
- The most pessimistic (P) case when everything goes wrong [also called "Worst Case Scenario"]
- The most optimistic (O) case where everything goes right [also called "Best Case Scenario"]
- The most likely (M) case given normal problems and opportunities [also called "Expected Case Scenario"]
The resulting PERT estimate is calculated as (O + 4M + P)/6. This is called a "weighted average" since the most likely estimate is weighted four times as much as the other two values. You'll notice that the final PERT estimate is moved slightly toward either the optimistic or pessimistic value - depending on which one is furthest from the most likely. Generally this ends up moving the final estimate toward the worst case, since the worst case value tends to be further out from the most likely that the optimistic number."
Some tools (like MS Project) will allow you to do some What If scenarios, by defining different weights (above the weights are 1, 4, 1, and all weights should sum up to 6). What if it is most probable that mostly everything goes wrong (could be tested with weights like 1, 1, 4). What if mostly everything goes right (4, 1, 1)?
terça-feira, 20 de junho de 2017
SW Construction: The list of lists to learn to code
segunda-feira, 19 de junho de 2017
SW Construction: Generators tutorial (Python)
http://www.dabeaz.com/generators/
(PDF presentation "inside")
Quoting:
"This tutorial discusses various techniques for using generator functions and generator expressions in the context of systems [read: command line script] programming. This topic loosely includes files, file systems, text parsing, network programming, and programming with threads."
Example source code in the link above (Python).
quarta-feira, 14 de junho de 2017
Development Tools: The 10 tools every "modern developer" should use
The 10 tools every modern developer should use | InfoWorld
The list (details are on the link, please do follow):
- Git and GitHub (version control system);
- SSH (to create an SSH key or do other SSH stuff);
- Terminal Services or remote login (to access remote Windows machines)
- Amazon Web Services (AWS isn’t just cloud; know at least the EC2 stuff);
- JavaScript (the scripting language of the now; widely used for scripting APIs);
- Bash and PowerShell (in Linux, many Unixes, MacOS, and Windows 10 / Microsoft’s PowerShell; also make sure to learn to use Grep / PowerShell’s Select-String);
- MongoDB (document database; Apache Solr - document-shaped);
- Curl and Invoke-RestMethod (for REST APIs; On Mac and Linux, Curl is the command-line tool that lets you test and tweak and even script against a REST API; in PowerShell, it is Invoke-RestMethod; equivalent GUI tools like Postman);
- Markdown (format of the README.md file in GitHub; just seven symbols: # is a header, ## is a subheader, * is a bullet, __ and ** are bold, _ and * are italics, ` is monospace, and --- is a break or rule; learn to convert to slides, PDFs, and HTML with or without CSS);
- Basic HTML
Source: Link above.
terça-feira, 13 de junho de 2017
SW Testing: Code coverage criteria (including MC/DC)
The Short Story
Just a sum-up of coverage criteria (software testing):Code coverage - Wikipedia
The Long Story
Besides coding, you might get asked to provide several types of coverage of your code (the evidences to provide to your contractor could be test report deliverables, besides the [automated] test scripts and the written test specs/procedures). The more safety-critical is your code the more criteria you will be mandated to execute (the QA / PA standards refer to these issues):- Function coverage – Has each function (or subroutine) in the program been called?
- Statement coverage – Has each statement in the program been executed?
- Branch coverage – Has each branch (also called DD-path) of each control structure (such as in if and case statements) been executed? For example, given an if statement, have both the true and false branches been executed? Another way of saying this is, has every edge in the program been executed?
- Condition coverage (or predicate coverage) – Has each Boolean sub-expression evaluated both to true and false?
- MC/DC (Modified condition/decision coverage): A combination of function coverage and branch coverage is sometimes also called decision coverage. This criterion requires that every point of entry and exit in the program has been invoked at least once, and every decision in the program has taken on all possible outcomes at least once. In this context the decision is a boolean expression composed of conditions and zero or more boolean operators. This definition is not the same as branch coverage, however, some do use the term decision coverage as a synonym for branch coverage.
- (and more, see Wikipedia)
- Usage in the software industry: Code coverage is one consideration in the safety certification of avionics equipment. The guidelines by which avionics gear is certified by the Federal Aviation Administration (FAA) is documented in DO-178B and the recently released DO-178C.
- Code coverage is also a requirement in the automotive safety standard ISO 26262 Road Vehicles - Functional Safety (part 6).
- Sources: The oldie but goldie "The Art of Software Testing" with its orange cover (initial editions); Wikipedia.
From these verification activities, you might get to conclude that there are unreachable parts of code (typically to be removed) or that your code is far too complex to cover and needs simplification, i.e. refactoring. This is why cyclomatic complexity - and other KPIs/software metrics - is limited by some standards also at certain component criticality levels.
BOOK: The Art of Software Testing, Third Edition (Glenford J. Myers, Corey Sandler, Tom Badgett)
Quoting:
"The classic, landmark work on software testing
The hardware and software of computing have changed markedly in the three decades since the first edition of The Art of Software Testing, but this book's powerful underlying analysis has stood the test of time. Whereas most books on software testing target particular development techniques, languages, or testing methods, The Art of Software Testing, Third Edition provides a brief but powerful and comprehensive presentation of time-proven software testing approaches. If your software development project is mission critical, this book is an investment that will pay for itself with the first bug you find.
The new Third Edition explains how to apply the book's classic principles to today's hot topics including:
- Testing apps for iPhones, iPads, BlackBerrys, Androids, and other mobile devices
- Collaborative (user) programming and testing
- Testing for Internet applications, e-commerce, and agile programming environments
domingo, 11 de junho de 2017
Security: Forrester 2017 Security Analytics Report (and the IBM product in that area QRadar)
Forrester 2017 Security Analytics Wave (with link to download this first Forrester report):
https://securityintelligence.com/qradar-waves-from-the-leader-position-in-the-forrester-2017-security-analytics-wave/
Quoting:
"Forrester just published its first ever Security Analytics Wave. IBM Security is proud to hold a top right position, with the highest scores in solution strength and vision of all the evaluated products.
Forrester developed and applied a 36-criteria evaluation of security analytics (SA) providers and, as a result, identified the 11 top providers. Of those 11, IBM was rated as a leader in the evaluation."
(...)
"Security Analytics Deconstructed
SA can mean a lot of things to a lot of people, but IBM believes it has to have a few core components, which are in lockstep with some of the components identified in the Forrester Security Analytics Wave. These components include user and entity behavior analytics, real-time and historical threat detection, big data capabilities, threat intelligence, and security automation and response."
quinta-feira, 8 de junho de 2017
Conference: Jam Sessions 2017 (Lisbon, PT)
This one is about [Atlassian] collaboration and development software stacks ("Colaboração e Desenvolvimento de Software"). Atlassian is a leader in the "Enterprise Agile Planning Tools" according to the relevant Magic Gartner Quadrant 2017.
More info:
http://innovation.xpand-it.com/pt-pt/evento-xpand-atlassian-jam-sessions-2017/
In PT: Atlassian é líder na categoria de "Enterprise Agile Planning Tools", segundo o Quadrante Mágico da Gartner 2017; "Colaboração e Desenvolvimento de Software"; FFR.
Quality Control: Statistical packages (Comparison)
Comparison of statistical packages - Wikipedia
You could be asking what does statistics (and stats software packages) have to do with software development? Well, a lot, mainly if you're interested in improving (and predicting) the things you do.
Knowing the "numbers" from the past (Process Performance Baselines, PPB) and predicting the future with models built using these baselines (Process Performance Models - PPM) are very powerful tools to management (estimation, detecting deviations from normal process behaviour, etc.).
"Quality Control" areas also have a great deal of statistics (needed to compute Descriptive Statistics as well as creating and maintaining those PPB and PPMs).
So, in fact statistics basics given in High School really do apply to some Software Engineers and Software Quality Assurance (or Software Product Assurance) Engineers.
terça-feira, 6 de junho de 2017
Startups: Lisbon Investment Summit (PT)
Há 200 investidores e 450 startups internacionais a caminho de Lisboa – Observador